| 1815 |
mhunt |
1 |
/*
|
|
|
2 |
* Generated file - Do not edit!
|
|
|
3 |
*/
|
|
|
4 |
package <XDtPackage:packageOf><XDtEjbValueObj:valueObjectClass/></XDtPackage:packageOf>;
|
|
|
5 |
|
|
|
6 |
/**
|
|
|
7 |
* Value object for <XDtEjb:ejbName/>.
|
|
|
8 |
*
|
|
|
9 |
<XDtClass:classCommentTags indent="0"/> */
|
|
|
10 |
public class <XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf>
|
|
|
11 |
extends <XDtEjbValueObj:extendsFrom valueobject="<XDtEjbValueObj:valueObjectName/>"/>
|
|
|
12 |
implements java.io.Serializable <XDtEjbValueObj:valueObjectImplements/>
|
|
|
13 |
{
|
|
|
14 |
<XDtEjbPersistent:forAllPersistentFields superclasses="false" valueobject="<XDtEjbValueObj:valueObjectMatch/>">
|
|
|
15 |
private <XDtMethod:methodType/> <XDtMethod:propertyName/>;
|
|
|
16 |
private boolean <XDtMethod:propertyName/>HasBeenSet = false;
|
|
|
17 |
</XDtEjbPersistent:forAllPersistentFields>
|
|
|
18 |
<XDtEjbValueObj:forAllRelations superclasses="false" valueobject="<XDtEjbValueObj:valueObjectMatch/>">
|
|
|
19 |
<XDtMethod:ifDoesntHaveMethodTag tagName="ejb:value-object" paramName="type">
|
|
|
20 |
private <XDtEjbValueObj:currentAggregateType/> <XDtEjbValueObj:currentAggregateName/>;
|
|
|
21 |
private boolean <XDtEjbValueObj:currentAggregateName/>HasBeenSet = false;
|
|
|
22 |
</XDtMethod:ifDoesntHaveMethodTag>
|
|
|
23 |
<XDtMethod:ifHasMethodTag tagName="ejb:value-object" paramName="type">
|
|
|
24 |
private <XDtMethod:methodTagValue tagName="ejb:value-object" paramName="type"/> <XDtEjbValueObj:currentAggregateName/>s = new <XDtEjbValueObj:concreteCollectionType/>();
|
|
|
25 |
</XDtMethod:ifHasMethodTag>
|
|
|
26 |
</XDtEjbValueObj:forAllRelations>
|
|
|
27 |
|
|
|
28 |
private <XDtEjbPk:pkClass/> pk;
|
|
|
29 |
|
|
|
30 |
<XDtEjbBmp:ifUseSoftLocking>
|
|
|
31 |
private int _version = 0;
|
|
|
32 |
</XDtEjbBmp:ifUseSoftLocking>
|
|
|
33 |
|
|
|
34 |
public <XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf>()
|
|
|
35 |
{
|
|
|
36 |
<XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
37 |
pk = new <XDtEjbPk:pkClass/>();
|
|
|
38 |
</XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
39 |
}
|
|
|
40 |
|
|
|
41 |
public <XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf>( <XDtEjbPersistent:persistentfieldList valueobject="<XDtEjbValueObj:valueObjectMatch/>"/> )
|
|
|
42 |
{
|
|
|
43 |
<XDtEjbPersistent:forAllPersistentFields superclasses="true" valueobject="<XDtEjbValueObj:valueObjectMatch/>">
|
|
|
44 |
this.<XDtMethod:propertyName/> = <XDtMethod:propertyName/>;
|
|
|
45 |
<XDtMethod:propertyName/>HasBeenSet = true;
|
|
|
46 |
</XDtEjbPersistent:forAllPersistentFields>
|
|
|
47 |
<XDtEjbPk:ifHasPrimkeyField>
|
|
|
48 |
pk = this.<XDtEjbPk:primkeyGetter/>();
|
|
|
49 |
</XDtEjbPk:ifHasPrimkeyField>
|
|
|
50 |
<XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
51 |
pk = new <XDtEjbPk:pkClass/>(<XDtEjbPk:pkfieldListFrom name="this"/>);
|
|
|
52 |
</XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
53 |
}
|
|
|
54 |
|
|
|
55 |
// Cloneable is better than this !
|
|
|
56 |
public <XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf>( <XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf> otherValue )
|
|
|
57 |
{
|
|
|
58 |
<XDtEjbPersistent:forAllPersistentFields superclasses="true" valueobject="<XDtEjbValueObj:valueObjectMatch/>">
|
|
|
59 |
this.<XDtMethod:propertyName/> = otherValue.<XDtMethod:propertyName/>;
|
|
|
60 |
<XDtMethod:propertyName/>HasBeenSet = true;
|
|
|
61 |
</XDtEjbPersistent:forAllPersistentFields>
|
|
|
62 |
<XDtEjbValueObj:forAllRelations superclasses="false" valueobject="<XDtEjbValueObj:valueObjectMatch/>">
|
|
|
63 |
// TODO Clone is better no ?
|
|
|
64 |
<XDtMethod:ifDoesntHaveMethodTag tagName="ejb:value-object" paramName="type">
|
|
|
65 |
this.<XDtEjbValueObj:currentAggregateName/> = otherValue.<XDtEjbValueObj:currentAggregateName/>;
|
|
|
66 |
<XDtEjbValueObj:currentAggregateName/>HasBeenSet = true;
|
|
|
67 |
</XDtMethod:ifDoesntHaveMethodTag>
|
|
|
68 |
<XDtMethod:ifHasMethodTag tagName="ejb:value-object" paramName="type">
|
|
|
69 |
this.<XDtEjbValueObj:currentAggregateName/>s = otherValue.<XDtEjbValueObj:currentAggregateName/>s;
|
|
|
70 |
</XDtMethod:ifHasMethodTag>
|
|
|
71 |
</XDtEjbValueObj:forAllRelations>
|
|
|
72 |
|
|
|
73 |
<XDtEjbPk:ifHasPrimkeyField>
|
|
|
74 |
pk = this.<XDtEjbPk:primkeyGetter/>();
|
|
|
75 |
</XDtEjbPk:ifHasPrimkeyField>
|
|
|
76 |
<XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
77 |
pk = new <XDtEjbPk:pkClass/>(<XDtEjbPk:pkfieldListFrom name="this"/>);
|
|
|
78 |
</XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
79 |
}
|
|
|
80 |
|
|
|
81 |
public <XDtEjbPk:pkClass/> getPrimaryKey()
|
|
|
82 |
{
|
|
|
83 |
return pk;
|
|
|
84 |
}
|
|
|
85 |
|
|
|
86 |
public void setPrimaryKey( <XDtEjbPk:pkClass/> pk )
|
|
|
87 |
{
|
|
|
88 |
// it's also nice to update PK object - just in case
|
|
|
89 |
// somebody would ask for it later...
|
|
|
90 |
this.pk = pk;
|
|
|
91 |
<XDtEjbPersistent:forAllPersistentFields superclasses="true" valueobject="<XDtEjbValueObj:valueObjectMatch/>">
|
|
|
92 |
<XDtMethod:ifHasMethod name="<XDtMethod:setterMethod/>" parameters="<XDtMethod:methodType/>">
|
|
|
93 |
<XDtEjbPk:ifHasPrimkeyField>
|
|
|
94 |
<XDtEjbPk:ifIsPrimkeyField>
|
|
|
95 |
<XDtMethod:setterMethod/>( pk );
|
|
|
96 |
</XDtEjbPk:ifIsPrimkeyField>
|
|
|
97 |
</XDtEjbPk:ifHasPrimkeyField>
|
|
|
98 |
<XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
99 |
<XDtEjbPk:ifIsPkField>
|
|
|
100 |
<XDtMethod:setterMethod/>( pk.<XDtMethod:propertyName/> );
|
|
|
101 |
</XDtEjbPk:ifIsPkField>
|
|
|
102 |
</XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
103 |
</XDtMethod:ifHasMethod>
|
|
|
104 |
</XDtEjbPersistent:forAllPersistentFields>
|
|
|
105 |
}
|
|
|
106 |
|
|
|
107 |
<XDtEjbPersistent:forAllPersistentFields superclasses="true" valueobject="<XDtEjbValueObj:valueObjectMatch/>">
|
|
|
108 |
public <XDtMethod:methodType/> <XDtMethod:getterMethod/>()
|
|
|
109 |
{
|
|
|
110 |
return this.<XDtMethod:propertyName/>;
|
|
|
111 |
}
|
|
|
112 |
|
|
|
113 |
<XDtMethod:ifHasMethod name="<XDtMethod:setterMethod/>" parameters="<XDtMethod:methodType/>">
|
|
|
114 |
public void <XDtMethod:setterMethod/>( <XDtMethod:methodType/> <XDtMethod:propertyName/> )
|
|
|
115 |
{
|
|
|
116 |
this.<XDtMethod:propertyName/> = <XDtMethod:propertyName/>;
|
|
|
117 |
<XDtMethod:propertyName/>HasBeenSet = true;
|
|
|
118 |
|
|
|
119 |
<XDtEjbPk:ifHasPrimkeyField>
|
|
|
120 |
<XDtEjbPk:ifIsPrimkeyField>
|
|
|
121 |
pk = <XDtMethod:propertyName/>;
|
|
|
122 |
</XDtEjbPk:ifIsPrimkeyField>
|
|
|
123 |
</XDtEjbPk:ifHasPrimkeyField>
|
|
|
124 |
<XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
125 |
<XDtEjbPk:ifIsPkField>
|
|
|
126 |
pk.<XDtMethod:setterMethod/>(<XDtMethod:propertyName/>);
|
|
|
127 |
</XDtEjbPk:ifIsPkField>
|
|
|
128 |
</XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
129 |
}
|
|
|
130 |
|
|
|
131 |
public boolean <XDtMethod:propertyName/>HasBeenSet(){
|
|
|
132 |
return <XDtMethod:propertyName/>HasBeenSet;
|
|
|
133 |
}
|
|
|
134 |
</XDtMethod:ifHasMethod>
|
|
|
135 |
</XDtEjbPersistent:forAllPersistentFields>
|
|
|
136 |
|
|
|
137 |
<XDtEjbValueObj:forAllRelations superclasses="false" valueobject="<XDtEjbValueObj:valueObjectMatch/>">
|
|
|
138 |
<XDtMethod:ifDoesntHaveMethodTag tagName="ejb:value-object" paramName="type">
|
|
|
139 |
public <XDtEjbValueObj:currentAggregateType/> get<XDtEjbValueObj:currentAggregateName/>()
|
|
|
140 |
{
|
|
|
141 |
return this.<XDtEjbValueObj:currentAggregateName/>;
|
|
|
142 |
}
|
|
|
143 |
public void set<XDtEjbValueObj:currentAggregateName/>( <XDtEjbValueObj:currentAggregateType/> <XDtEjbValueObj:currentAggregateName/> )
|
|
|
144 |
{
|
|
|
145 |
this.<XDtEjbValueObj:currentAggregateName/> = <XDtEjbValueObj:currentAggregateName/>;
|
|
|
146 |
<XDtEjbValueObj:currentAggregateName/>HasBeenSet = true;
|
|
|
147 |
}
|
|
|
148 |
</XDtMethod:ifDoesntHaveMethodTag>
|
|
|
149 |
<XDtMethod:ifHasMethodTag tagName="ejb:value-object" paramName="type">
|
|
|
150 |
protected <XDtMethod:methodTagValue tagName="ejb:value-object" paramName="type"/> added<XDtEjbValueObj:currentAggregateName/>s = new <XDtEjbValueObj:concreteCollectionType/>();
|
|
|
151 |
protected <XDtMethod:methodTagValue tagName="ejb:value-object" paramName="type"/> removed<XDtEjbValueObj:currentAggregateName/>s = new <XDtEjbValueObj:concreteCollectionType/>();
|
|
|
152 |
protected <XDtMethod:methodTagValue tagName="ejb:value-object" paramName="type"/> updated<XDtEjbValueObj:currentAggregateName/>s = new <XDtEjbValueObj:concreteCollectionType/>();
|
|
|
153 |
|
|
|
154 |
public <XDtMethod:methodTagValue tagName="ejb:value-object" paramName="type"/> getAdded<XDtEjbValueObj:currentAggregateName/>s() { return added<XDtEjbValueObj:currentAggregateName/>s; }
|
|
|
155 |
public <XDtMethod:methodTagValue tagName="ejb:value-object" paramName="type"/> getRemoved<XDtEjbValueObj:currentAggregateName/>s() { return removed<XDtEjbValueObj:currentAggregateName/>s; }
|
|
|
156 |
public <XDtMethod:methodTagValue tagName="ejb:value-object" paramName="type"/> getUpdated<XDtEjbValueObj:currentAggregateName/>s() { return updated<XDtEjbValueObj:currentAggregateName/>s; }
|
|
|
157 |
|
|
|
158 |
public void setAdded<XDtEjbValueObj:currentAggregateName/>s(<XDtMethod:methodTagValue tagName="ejb:value-object" paramName="type"/> added<XDtEjbValueObj:currentAggregateName/>s)
|
|
|
159 |
{
|
|
|
160 |
this.added<XDtEjbValueObj:currentAggregateName/>s.clear();
|
|
|
161 |
this.added<XDtEjbValueObj:currentAggregateName/>s.addAll(added<XDtEjbValueObj:currentAggregateName/>s);
|
|
|
162 |
}
|
|
|
163 |
|
|
|
164 |
public void setRemoved<XDtEjbValueObj:currentAggregateName/>s(<XDtMethod:methodTagValue tagName="ejb:value-object" paramName="type"/> removed<XDtEjbValueObj:currentAggregateName/>s)
|
|
|
165 |
{
|
|
|
166 |
this.removed<XDtEjbValueObj:currentAggregateName/>s.clear();
|
|
|
167 |
this.removed<XDtEjbValueObj:currentAggregateName/>s.addAll(removed<XDtEjbValueObj:currentAggregateName/>s);
|
|
|
168 |
}
|
|
|
169 |
|
|
|
170 |
public void setUpdated<XDtEjbValueObj:currentAggregateName/>s(<XDtMethod:methodTagValue tagName="ejb:value-object" paramName="type"/> updated<XDtEjbValueObj:currentAggregateName/>s)
|
|
|
171 |
{
|
|
|
172 |
this.updated<XDtEjbValueObj:currentAggregateName/>s.clear();
|
|
|
173 |
this.updated<XDtEjbValueObj:currentAggregateName/>s.addAll(updated<XDtEjbValueObj:currentAggregateName/>s);
|
|
|
174 |
}
|
|
|
175 |
|
|
|
176 |
public <XDtEjbValueObj:currentAggregateType/>[] get<XDtEjbValueObj:currentAggregateName/>s()
|
|
|
177 |
{
|
|
|
178 |
return (<XDtEjbValueObj:currentAggregateType/>[])this.<XDtEjbValueObj:currentAggregateName/>s.toArray(new <XDtEjbValueObj:currentAggregateType/>[<XDtEjbValueObj:currentAggregateName/>s.size()]);
|
|
|
179 |
}
|
|
|
180 |
|
|
|
181 |
public void set<XDtEjbValueObj:currentAggregateName/>s(<XDtEjbValueObj:currentAggregateType/>[] <XDtEjbValueObj:currentAggregateName/>s)
|
|
|
182 |
{
|
|
|
183 |
this.<XDtEjbValueObj:currentAggregateName/>s.clear();
|
|
|
184 |
for (int i=0; i < <XDtEjbValueObj:currentAggregateName/>s.length; i++)
|
|
|
185 |
this.<XDtEjbValueObj:currentAggregateName/>s.add(<XDtEjbValueObj:currentAggregateName/>s[i]);
|
|
|
186 |
}
|
|
|
187 |
|
|
|
188 |
public void clear<XDtEjbValueObj:currentAggregateName/>s()
|
|
|
189 |
{
|
|
|
190 |
this.<XDtEjbValueObj:currentAggregateName/>s.clear();
|
|
|
191 |
}
|
|
|
192 |
|
|
|
193 |
public void add<XDtEjbValueObj:currentAggregateName/>(<XDtEjbValueObj:currentAggregateType/> added)
|
|
|
194 |
{
|
|
|
195 |
this.<XDtEjbValueObj:currentAggregateName/>s.add(added);
|
|
|
196 |
if ( ! this.added<XDtEjbValueObj:currentAggregateName/>s.contains(added))
|
|
|
197 |
this.added<XDtEjbValueObj:currentAggregateName/>s.add(added);
|
|
|
198 |
}
|
|
|
199 |
|
|
|
200 |
public void remove<XDtEjbValueObj:currentAggregateName/>(<XDtEjbValueObj:currentAggregateType/> removed)
|
|
|
201 |
{
|
|
|
202 |
this.<XDtEjbValueObj:currentAggregateName/>s.remove(removed);
|
|
|
203 |
this.removed<XDtEjbValueObj:currentAggregateName/>s.add(removed);
|
|
|
204 |
if (this.added<XDtEjbValueObj:currentAggregateName/>s.contains(removed))
|
|
|
205 |
this.added<XDtEjbValueObj:currentAggregateName/>s.remove(removed);
|
|
|
206 |
if (this.updated<XDtEjbValueObj:currentAggregateName/>s.contains(removed))
|
|
|
207 |
this.updated<XDtEjbValueObj:currentAggregateName/>s.remove(removed);
|
|
|
208 |
}
|
|
|
209 |
|
|
|
210 |
public void update<XDtEjbValueObj:currentAggregateName/>(<XDtEjbValueObj:currentAggregateType/> updated)
|
|
|
211 |
{
|
|
|
212 |
if ( !this.updated<XDtEjbValueObj:currentAggregateName/>s.contains(updated) && !this.added<XDtEjbValueObj:currentAggregateName/>s.contains(updated))
|
|
|
213 |
this.updated<XDtEjbValueObj:currentAggregateName/>s.add(updated);
|
|
|
214 |
}
|
|
|
215 |
|
|
|
216 |
public void clean<XDtEjbValueObj:currentAggregateName/>(){
|
|
|
217 |
this.added<XDtEjbValueObj:currentAggregateName/>s = new <XDtEjbValueObj:concreteCollectionType/>();
|
|
|
218 |
this.removed<XDtEjbValueObj:currentAggregateName/>s = new <XDtEjbValueObj:concreteCollectionType/>();
|
|
|
219 |
this.updated<XDtEjbValueObj:currentAggregateName/>s = new <XDtEjbValueObj:concreteCollectionType/>();
|
|
|
220 |
}
|
|
|
221 |
|
|
|
222 |
public void copy<XDtEjbValueObj:currentAggregateName/>sFrom(<XDtEjbValueObj:valueObjectClass/> from)
|
|
|
223 |
{
|
|
|
224 |
// TODO Clone the List ????
|
|
|
225 |
this.<XDtEjbValueObj:currentAggregateName/>s = from.<XDtEjbValueObj:currentAggregateName/>s;
|
|
|
226 |
}
|
|
|
227 |
</XDtMethod:ifHasMethodTag>
|
|
|
228 |
</XDtEjbValueObj:forAllRelations>
|
|
|
229 |
|
|
|
230 |
<XDtEjbBmp:ifUseSoftLocking>
|
|
|
231 |
public int getVersion()
|
|
|
232 |
{
|
|
|
233 |
return _version;
|
|
|
234 |
}
|
|
|
235 |
public void setVersion(int version)
|
|
|
236 |
{
|
|
|
237 |
this._version = version;
|
|
|
238 |
}
|
|
|
239 |
</XDtEjbBmp:ifUseSoftLocking>
|
|
|
240 |
|
|
|
241 |
public String toString()
|
|
|
242 |
{
|
|
|
243 |
StringBuffer str = new StringBuffer("{");
|
|
|
244 |
|
|
|
245 |
str.append(<XDtEjbPersistent:persistentfieldNameValueList valueobject="<XDtEjbValueObj:valueObjectMatch/>" superclasses="true"/>);
|
|
|
246 |
<XDtEjbBmp:ifUseSoftLocking>
|
|
|
247 |
str.append(",version=");
|
|
|
248 |
str.append(_version);
|
|
|
249 |
</XDtEjbBmp:ifUseSoftLocking>
|
|
|
250 |
str.append('}');
|
|
|
251 |
|
|
|
252 |
return(str.toString());
|
|
|
253 |
}
|
|
|
254 |
|
|
|
255 |
/**
|
|
|
256 |
* A Value object have an identity if its attributes making its Primary Key
|
|
|
257 |
* has all been set. One object without identity is never equal to any other
|
|
|
258 |
* object.
|
|
|
259 |
*
|
|
|
260 |
* @return true if this instance have an identity.
|
|
|
261 |
*/
|
|
|
262 |
protected boolean hasIdentity()
|
|
|
263 |
{
|
|
|
264 |
<XDtEjbPk:ifHasPrimkeyField>
|
|
|
265 |
return <XDtEjbPk:primkeyField/>HasBeenSet;
|
|
|
266 |
</XDtEjbPk:ifHasPrimkeyField>
|
|
|
267 |
<XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
268 |
boolean ret = true;
|
|
|
269 |
<XDtEjbPersistent:forAllPersistentFields superclasses="true" valueobject="<XDtEjbValueObj:valueObjectMatch/>" only-pk="true">
|
|
|
270 |
ret = ret && <XDtMethod:propertyName/>HasBeenSet;
|
|
|
271 |
</XDtEjbPersistent:forAllPersistentFields>
|
|
|
272 |
return ret;
|
|
|
273 |
</XDtEjbPk:ifDoesntHavePrimkeyField>
|
|
|
274 |
}
|
|
|
275 |
|
|
|
276 |
public boolean equals(Object other)
|
|
|
277 |
{
|
|
|
278 |
if (this == other)
|
|
|
279 |
return true;
|
|
|
280 |
if ( ! hasIdentity() ) return false;
|
|
|
281 |
if (other instanceof <XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf>)
|
|
|
282 |
{
|
|
|
283 |
<XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf> that = (<XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf>) other;
|
|
|
284 |
if ( ! that.hasIdentity() ) return false;
|
|
|
285 |
boolean lEquals = true;
|
|
|
286 |
<XDtEjbPersistent:forAllPersistentFields superclasses="true" valueobject="<XDtEjbValueObj:valueObjectMatch/>" only-pk="true">
|
|
|
287 |
<XDtType:ifIsPrimitive value="<XDtMethod:methodType/>">
|
|
|
288 |
lEquals = lEquals && this.<XDtMethod:propertyName/> == that.<XDtMethod:propertyName/>;
|
|
|
289 |
</XDtType:ifIsPrimitive>
|
|
|
290 |
<XDtType:ifIsNotPrimitive value="<XDtMethod:methodType/>">
|
|
|
291 |
if( this.<XDtMethod:propertyName/> == null )
|
|
|
292 |
{
|
|
|
293 |
lEquals = lEquals && ( that.<XDtMethod:propertyName/> == null );
|
|
|
294 |
}
|
|
|
295 |
else
|
|
|
296 |
{
|
|
|
297 |
lEquals = lEquals && this.<XDtMethod:propertyName/>.equals( that.<XDtMethod:propertyName/> );
|
|
|
298 |
}
|
|
|
299 |
</XDtType:ifIsNotPrimitive>
|
|
|
300 |
</XDtEjbPersistent:forAllPersistentFields>
|
|
|
301 |
|
|
|
302 |
lEquals = lEquals && isIdentical(that);
|
|
|
303 |
|
|
|
304 |
return lEquals;
|
|
|
305 |
}
|
|
|
306 |
else
|
|
|
307 |
{
|
|
|
308 |
return false;
|
|
|
309 |
}
|
|
|
310 |
}
|
|
|
311 |
|
|
|
312 |
public boolean isIdentical(Object other)
|
|
|
313 |
{
|
|
|
314 |
if (other instanceof <XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf>)
|
|
|
315 |
{
|
|
|
316 |
<XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf> that = (<XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf>) other;
|
|
|
317 |
boolean lEquals = true;
|
|
|
318 |
<XDtEjbPersistent:forAllPersistentFields superclasses="true" valueobject="<XDtEjbValueObj:valueObjectMatch/>" not-pk="true">
|
|
|
319 |
<XDtType:ifIsPrimitive value="<XDtMethod:methodType/>">
|
|
|
320 |
lEquals = lEquals && this.<XDtMethod:propertyName/> == that.<XDtMethod:propertyName/>;
|
|
|
321 |
</XDtType:ifIsPrimitive>
|
|
|
322 |
<XDtType:ifIsNotPrimitive value="<XDtMethod:methodType/>">
|
|
|
323 |
if( this.<XDtMethod:propertyName/> == null )
|
|
|
324 |
{
|
|
|
325 |
lEquals = lEquals && ( that.<XDtMethod:propertyName/> == null );
|
|
|
326 |
}
|
|
|
327 |
else
|
|
|
328 |
{
|
|
|
329 |
lEquals = lEquals && this.<XDtMethod:propertyName/>.equals( that.<XDtMethod:propertyName/> );
|
|
|
330 |
}
|
|
|
331 |
</XDtType:ifIsNotPrimitive>
|
|
|
332 |
</XDtEjbPersistent:forAllPersistentFields>
|
|
|
333 |
<XDtEjbValueObj:forAllRelations superclasses="false" valueobject="<XDtEjbValueObj:valueObjectMatch/>">
|
|
|
334 |
<XDtMethod:ifDoesntHaveMethodTag tagName="ejb:value-object" paramName="type">
|
|
|
335 |
if( this.<XDtEjbValueObj:currentAggregateName/> == null )
|
|
|
336 |
{
|
|
|
337 |
lEquals = lEquals && ( that.<XDtEjbValueObj:currentAggregateName/> == null );
|
|
|
338 |
}
|
|
|
339 |
else
|
|
|
340 |
{
|
|
|
341 |
lEquals = lEquals && this.<XDtEjbValueObj:currentAggregateName/>.equals( that.<XDtEjbValueObj:currentAggregateName/> );
|
|
|
342 |
}
|
|
|
343 |
</XDtMethod:ifDoesntHaveMethodTag>
|
|
|
344 |
<XDtMethod:ifHasMethodTag tagName="ejb:value-object" paramName="type">
|
|
|
345 |
if( this.get<XDtEjbValueObj:currentAggregateName/>s() == null )
|
|
|
346 |
{
|
|
|
347 |
lEquals = lEquals && ( that.get<XDtEjbValueObj:currentAggregateName/>s() == null );
|
|
|
348 |
}
|
|
|
349 |
else
|
|
|
350 |
{
|
|
|
351 |
lEquals = lEquals && java.util.Arrays.equals(this.get<XDtEjbValueObj:currentAggregateName/>s() , that.get<XDtEjbValueObj:currentAggregateName/>s()) ;
|
|
|
352 |
}
|
|
|
353 |
</XDtMethod:ifHasMethodTag>
|
|
|
354 |
</XDtEjbValueObj:forAllRelations>
|
|
|
355 |
|
|
|
356 |
return lEquals;
|
|
|
357 |
}
|
|
|
358 |
else
|
|
|
359 |
{
|
|
|
360 |
return false;
|
|
|
361 |
}
|
|
|
362 |
}
|
|
|
363 |
|
|
|
364 |
public int hashCode(){
|
|
|
365 |
int result = 17;
|
|
|
366 |
<XDtEjbPersistent:forAllPersistentFields superclasses="true" valueobject="<XDtEjbValueObj:valueObjectMatch/>">
|
|
|
367 |
<XDtMerge:merge file="xdoclet/modules/ejb/entity/resources/entity-object-hashcode.xdt">
|
|
|
368 |
</XDtMerge:merge>
|
|
|
369 |
</XDtEjbPersistent:forAllPersistentFields>
|
|
|
370 |
<XDtEjbValueObj:forAllRelations superclasses="false" valueobject="<XDtEjbValueObj:valueObjectMatch/>">
|
|
|
371 |
<XDtMethod:ifDoesntHaveMethodTag tagName="ejb:value-object" paramName="type">
|
|
|
372 |
result = 37*result + ((this.<XDtEjbValueObj:currentAggregateName/> != null) ? this.<XDtEjbValueObj:currentAggregateName/>.hashCode() : 0);
|
|
|
373 |
</XDtMethod:ifDoesntHaveMethodTag>
|
|
|
374 |
<XDtMethod:ifHasMethodTag tagName="ejb:value-object" paramName="type">
|
|
|
375 |
<XDtComment:comment>
|
|
|
376 |
hashCode() is implemented in java.util.List so we don't have to worry
|
|
|
377 |
</XDtComment:comment>
|
|
|
378 |
result = 37*result + ((this.get<XDtEjbValueObj:currentAggregateName/>s() != null) ? this.get<XDtEjbValueObj:currentAggregateName/>s().hashCode() : 0);
|
|
|
379 |
</XDtMethod:ifHasMethodTag>
|
|
|
380 |
</XDtEjbValueObj:forAllRelations>
|
|
|
381 |
return result;
|
|
|
382 |
}
|
|
|
383 |
|
|
|
384 |
<XDtMerge:merge file="valueobject-custom.xdt">
|
|
|
385 |
</XDtMerge:merge>
|
|
|
386 |
|
|
|
387 |
}
|