Last modified by David Avendasora on 2008/01/28 14:52

Show last authors
1 {{code}}
2
3 #if ($entity.packageName)
4 package $entity.superclassPackageName;
5 #end
6
7 import com.webobjects.foundation.*;
8 #set ($useControl = "false")
9 #if (!$entity.sortedClassToManyRelationships.empty)
10 #set ($useControl = "true")
11 #elseif (!$entity.sortedFetchSpecs.empty)
12 #set ($useControl = "true")
13 #elseif (!$entity.isAbstract)
14 #set ($useControl = "true")
15 #elseif (!$entity.parentSet)
16 #set ($useControl = "true")
17 #end
18 #if ($useControl == "true")
19 import com.webobjects.eocontrol.*;
20 #end
21 #set ($useBigDecimal = "false")
22 #foreach ($attribute in $entity.sortedClassAttributes)
23 #if (!$attribute.inherited)
24 #if ($attribute.javaClassName == "BigDecimal") #set ($useBigDecimal = "true")#end
25 #end
26 #end
27 #if ($useBigDecimal == "true")
28 import java.math.BigDecimal;
29 #end
30 #if (!$entity.sortedClassToManyRelationships.empty)
31 import java.util.*;
32 #end
33
34 /**
35 * Java Class ${entity.prefixClassNameWithOptionalPackage}.java generated for entity ${entity.name}
36 #if ($entity.parentSet)
37 * <p>
38 * The entity parent is ${entity.parent.classNameWithDefault}
39 * </p>
40 #end
41 * <p><b>
42 * DO NOT EDIT. Make changes to ${entity.classNameWithOptionalPackage}.java instead.
43 * </b></p>
44 * <p>
45 * copyright ${copyrightYear} ${copyrightBy}
46 * </p>
47 */
48 public abstract class ${entity.prefixClassNameWithoutPackage} extends#if ($entity.parentSet) ${entity.parent.classNameWithDefault}#else EOGenericRecord#end {
49 private static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger( ${entity.prefixClassNameWithoutPackage}.class);
50 #foreach ($attribute in $entity.sortedClassAttributes)
51 #if (!$attribute.inherited)
52
53 /**
54 * Key value for attribute $attribute.name
55 */
56 public static final String ${attribute.capitalizedName}Key = "$attribute.name";
57 #else
58
59 // Inherited attribute $attribute.name
60 #end
61 #end
62 #foreach ($relationship in $entity.sortedClassToOneRelationships)
63 #if (!$relationship.inherited)
64
65 /**
66 * Key value for to one relationship $relationship.name
67 */
68 public static final String ${relationship.capitalizedName}Key = "$relationship.name";
69 #else
70
71 // Inherited relationship $relationship.name
72 #end
73 #end
74 #foreach ($relationship in $entity.sortedClassToManyRelationships)
75 #if (!$relationship.inherited)
76
77 /**
78 * Key value for to many relationship $relationship.name
79 */
80 public static final String ${relationship.capitalizedName}Key = "$relationship.name";
81 #else
82
83 // Inherited relationship $relationship.name
84 #end
85 #end
86 #if (!$entity.isAbstract)
87
88 /**
89 * Returns a newly initialized instance of ${entity.name}. The new object is inserted in the editing context.
90 *
91 * @param context
92 * editing context to insert in.
93 * @return newly initialized instance
94 */
95 public static ${entity.prefixClassNameWithoutPackage} new${entity.classNameWithoutPackage}Instance(EOEditingContext context) {
96 EOClassDescription description = EOClassDescription.classDescriptionForEntityName("${entity.name}");
97 EOEnterpriseObject object = description.createInstanceWithEditingContext(context, null);
98 context.insertObject(object);
99 return (${entity.prefixClassNameWithoutPackage})object;
100 }
101
102 /**
103 * Returns a list of all the object in the shared editing context.
104 *
105 * @return list of ${entity.name}
106 */
107 protected static NSArray<? extends $entity.prefixClassNameWithoutPackage> _all${entity.classNameWithoutPackage}Objects() {
108 NSMutableArray<$entity.prefixClassNameWithoutPackage> result = null;
109 NSArray<EOEnterpriseObject> aList = EOSharedEditingContext.defaultSharedEditingContext().objectsByEntityName().objectForKey("${entity.name}");
110 if (aList != null) {
111 result = new NSMutableArray<$entity.prefixClassNameWithoutPackage>(aList.count());
112 for (EOEnterpriseObject anObject : aList) {
113 result.addObject(anObject);
114 }
115 }
116 return (result != null ? result : NSArray.<$entity.prefixClassNameWithoutPackage> emptyArray());
117 }
118 #end
119
120 /**
121 * Returns the name of the entity attached to this class.
122 *
123 * @return name of the entity
124 */
125 public static String entity() {
126 return "${entity.name}";
127 }
128
129 /**
130 * Sole Constructor
131 */
132 public ${entity.prefixClassNameWithoutPackage}() {
133 super();
134 }
135 #foreach ($fetchSpecification in $entity.sortedFetchSpecs)
136
137 /**
138 * Returns the object matching the fetch specification "$fetchSpecification.name".
139 *
140 * @param context
141 * editing context to fetch in.
142 #foreach ($binding in $fetchSpecification.distinctBindings)
143 * @param ${binding.name}Binding
144 * fetch specification binding.
145 #end
146 * @return list of ${entity.name}
147 */
148 public static NSArray<?> objectsFor${fetchSpecification.capitalizedName}(EOEditingContext context#foreach ($binding in $fetchSpecification.distinctBindings), ${binding.javaClassName} ${binding.name}Binding#end) {
149 EOFetchSpecification spec = EOFetchSpecification.fetchSpecificationNamed("${fetchSpecification.name}", "${entity.name}");
150 #if (!$fetchSpecification.distinctBindings.empty)
151 NSMutableDictionary<String, Object> bindings = new NSMutableDictionary<String, Object>();
152 #foreach ($binding in $fetchSpecification.distinctBindings)
153 if (${binding.name}Binding != null)
154 bindings.setObjectForKey(${binding.name}Binding, "${binding.name}");
155 #end
156 spec = spec.fetchSpecificationWithQualifierBindings(bindings);
157 #end
158 return context.objectsWithFetchSpecification(spec);
159 }
160 #end
161 #foreach ($attribute in $entity.sortedClassAttributes)
162 #if (!$attribute.inherited)
163
164 /**
165 * Returns the attribute "$attribute.name".
166 *
167 * @return $attribute.name
168 */
169 public $attribute.javaClassName ${attribute.name}() {
170 return ($attribute.javaClassName)this.storedValueForKey("${attribute.name}");
171 }
172
173 /**
174 * Sets the attribute "$attribute.name".
175 *
176 * @param value
177 * $attribute.name.
178 */
179 public void set${attribute.capitalizedName}($attribute.javaClassName value) {
180 if (logger.isDebugEnabled()) {
181 logger.debug( "value: " + value);
182 }
183 this.takeStoredValueForKey(value, "${attribute.name}");
184 }
185
186 /**
187 * Initialize the attribute "$attribute.name".
188 *
189 * @param value
190 * $attribute.name.
191 */
192 public void initialize${attribute.capitalizedName}($attribute.javaClassName value) {
193 this.set${attribute.capitalizedName}(value);
194 }
195 #end
196 #end
197 #foreach ($relationship in $entity.sortedClassToOneRelationships)
198 #if (!$relationship.inherited)
199
200 /**
201 * Returns the relationship "$relationship.name".
202 *
203 * @return $relationship.name
204 */
205 public ${relationship.actualDestination.classNameWithDefault} ${relationship.name}() {
206 return (${relationship.actualDestination.classNameWithDefault})this.storedValueForKey("${relationship.name}");
207 }
208
209 /**
210 * Sets the relationship "$relationship.name".
211 *
212 * @param value
213 * $relationship.name.
214 */
215 public void set${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} value) {
216 if (logger.isDebugEnabled()) {
217 logger.debug( "value: " + value);
218 }
219 this.takeStoredValueForKey(value, "${relationship.name}");
220 }
221
222 /**
223 * Returns the relationship "$relationship.name".
224 *
225 * @return $relationship.name
226 */
227 public ${relationship.actualDestination.classNameWithDefault} ${relationship.name}Relationship() {
228 return (${relationship.actualDestination.classNameWithDefault})this.storedValueForKey("${relationship.name}");
229 }
230
231 /**
232 * Sets the relationship "$relationship.name". This method takes care of setting the reverse relationship if it exists.
233 *
234 * @param value
235 * $relationship.name.
236 */
237 public void set${relationship.capitalizedName}Relationship(${relationship.actualDestination.classNameWithDefault} value) {
238 if (value == null) {
239 ${relationship.actualDestination.classNameWithDefault} object = this.${relationship.name}();
240 if (object != null)
241 this.removeObjectFromBothSidesOfRelationshipWithKey(object, "${relationship.name}");
242 } else {
243 this.addObjectToBothSidesOfRelationshipWithKey(value, "${relationship.name}");
244 }
245 }
246
247 /**
248 * Initialize the relationship "$relationship.name".
249 *
250 * @param value
251 * $relationship.name.
252 */
253 public void initialize${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} value) {
254 this.set${relationship.capitalizedName}Relationship(value);
255 }
256 #end
257 #end
258 #foreach ($relationship in $entity.sortedClassToManyRelationships)
259 #if (!$relationship.inherited)
260
261 /**
262 * Returns the relationship "$relationship.name".
263 *
264 * @return list of ${relationship.actualDestination.classNameWithDefault}
265 */
266 @SuppressWarnings("unchecked")
267 public NSArray<${relationship.actualDestination.classNameWithDefault}> ${relationship.name}() {
268 NSArray aList = (NSArray)this.storedValueForKey("${relationship.name}");
269 if (aList != null ) {
270 return aList;
271 } else {
272 return NSArray.emptyArray();
273 }
274 }
275
276 /**
277 * Sets the relationship "$relationship.name".
278 *
279 * @param value
280 * list of ${relationship.actualDestination.classNameWithDefault}.
281 */
282 public void set${relationship.capitalizedName}(NSArray<${relationship.actualDestination.classNameWithDefault}> value) {
283 this.takeStoredValueForKey(value, "${relationship.name}");
284 }
285
286 /**
287 * Adds an object to the relationship "$relationship.name". This method log a warning if the object is not in the same editing context than the receiver.
288 *
289 * @param object
290 * ${relationship.actualDestination.classNameWithDefault}.
291 */
292 @SuppressWarnings("cast")
293 public void addTo${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} object) {
294 if (logger.isDebugEnabled()) {
295 logger.debug( "object: " + object);
296 if ( (this.editingContext() != null) && (object != null) && ((! (this instanceof com.sPearWay.access.NamedObjectInterface)) || (! ((com.sPearWay.access.NamedObjectInterface)this).isReadOnly())) && ((! (object instanceof com.sPearWay.access.NamedObjectInterface)) || (! ((com.sPearWay.access.NamedObjectInterface)object).isReadOnly())) && ( ! this.editingContext().equals(object.editingContext()) ) ) {
297 try {
298 throw new Exception("WrongEditingContext");
299 } catch(Exception exception) {
300 logger.warn("Relationship \"$relationship.name\" Exception " , exception);
301 }
302 }
303 }
304 this.includeObjectIntoPropertyWithKey(object, "${relationship.name}");
305 }
306
307 /**
308 * Removes an object from the relationship "$relationship.name".
309 *
310 * @param object
311 * ${relationship.actualDestination.classNameWithDefault}.
312 */
313 public void removeFrom${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} object) {
314 if (logger.isDebugEnabled()) {
315 logger.debug( "object: " + object);
316 }
317 this.excludeObjectFromPropertyWithKey(object, "${relationship.name}");
318 }
319
320 /**
321 * Adds an object to the relationship "$relationship.name". This method takes care of setting the reverse relationship if it exists.
322 *
323 * @param object
324 * ${relationship.actualDestination.classNameWithDefault}.
325 */
326 public void addTo${relationship.capitalizedName}Relationship(${relationship.actualDestination.classNameWithDefault} object) {
327 this.addObjectToBothSidesOfRelationshipWithKey(object, "${relationship.name}");
328 }
329
330 /**
331 * Removes an object from the relationship "$relationship.name". This method takes care of setting the reverse relationship if it exists.
332 *
333 * @param object
334 * ${relationship.actualDestination.classNameWithDefault}.
335 */
336 public void removeFrom${relationship.capitalizedName}Relationship(${relationship.actualDestination.classNameWithDefault} object) {
337 this.removeObjectFromBothSidesOfRelationshipWithKey(object, "${relationship.name}");
338 }
339
340 /**
341 * Creates and returns a new object for the relationship "$relationship.name".
342 *
343 * @return ${relationship.actualDestination.classNameWithDefault}.
344 */
345 public ${relationship.actualDestination.classNameWithDefault} create${relationship.capitalizedName}Relationship() {
346 EOClassDescription classDescription = EOClassDescription.classDescriptionForEntityName("${relationship.actualDestination.name}");
347 EOEnterpriseObject object = classDescription.createInstanceWithEditingContext(this.editingContext(), null);
348 this.editingContext().insertObject(object);
349 this.addObjectToBothSidesOfRelationshipWithKey(object, "${relationship.name}");
350 return (${relationship.actualDestination.classNameWithDefault})object;
351 }
352
353 /**
354 * Removes and deletes if appropriate an object from the relationship "$relationship.name".
355 * <p>
356 * The delete rule for "$relationship.name" is: ${relationship.deleteRule.name}#if (${relationship.ownsDestination}), and own destination#end<br/>
357 * Possible choices are "Nullify", "Cascade", "Deny", "NoAction"
358 * </p>
359 * <p>
360 #if (${relationship.deleteRule.name} != "Deny")
361 * The object is removed from the relationship "$relationship.name" and its inverse relationship if it exists.
362 #if (${relationship.deleteRule.name} == "Cascade")
363 * The receiver cascade the delete rule, the object will be deleted from the editing context.
364 #elseif (${relationship.ownsDestination})
365 * The receiver owns the object, the object will be deleted from the editing context.
366 #end
367 #else
368 * The remove will be denied. This method does nothing.
369 #end
370 * </p>
371 *
372 * @param object
373 * ${relationship.actualDestination.classNameWithDefault}.
374 */
375 public void delete${relationship.capitalizedName}Relationship(${relationship.actualDestination.classNameWithDefault} object) {
376 // Delete rule for ${relationship.name} is: ${relationship.deleteRule.name}
377 // Possible choices are "Nullify", "Cascade", "Deny", "NoAction"
378 #if (${relationship.deleteRule.name} != "Deny")
379 this.removeObjectFromBothSidesOfRelationshipWithKey(object, "${relationship.name}");
380 #if (${relationship.deleteRule.name} == "Cascade")
381 // Cascade delete rule
382 this.editingContext().deleteObject(object);
383 #elseif (${relationship.ownsDestination})
384 // Own destination delete rule
385 this.editingContext().deleteObject(object);
386 #end
387 #else
388 // Deny delete rule
389 #end
390 }
391
392 /**
393 * Deletes all object from the relationship "$relationship.name". All delete rules are applied.
394 */
395 public void deleteAll${relationship.capitalizedName}Relationships() {
396 for ( Iterator<${relationship.actualDestination.classNameWithDefault}> objects = this.${relationship.name}().vector().iterator(); objects.hasNext(); )
397 this.delete${relationship.capitalizedName}Relationship(objects.next());
398 }
399
400 /**
401 * Initialize the relationship "$relationship.name" with the list of values
402 *
403 * @param value
404 * list of ${relationship.actualDestination.classNameWithDefault}.
405 */
406 public void initialize${relationship.capitalizedName}(NSArray<${relationship.actualDestination.classNameWithDefault}> value) {
407 this.set${relationship.capitalizedName}(value);
408 }
409
410 /**
411 * Initialize the relationship "$relationship.name" with one object
412 *
413 * @param value
414 * ${relationship.actualDestination.classNameWithDefault}.
415 */
416 public void initialize${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} value) {
417 this.addTo${relationship.capitalizedName}Relationship(value);
418 }
419 #end
420 #end
421 }
422
423 {{/code}}