Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
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
}