To edit or add content to this Wiki, you can simply create a new account at http://wocommunity.org/account.

#if ($entity.packageName)
package $entity.superclassPackageName;
#end

import com.webobjects.foundation.*;
#set ($useControl = "false")
#if (!$entity.sortedClassToManyRelationships.empty)
#set ($useControl = "true")
#elseif (!$entity.sortedFetchSpecs.empty)
#set ($useControl = "true")
#elseif (!$entity.isAbstract)
#set ($useControl = "true")
#elseif (!$entity.parentSet)
#set ($useControl = "true")
#end
#if ($useControl == "true")
import com.webobjects.eocontrol.*;
#end
#set ($useBigDecimal = "false")
#foreach ($attribute in $entity.sortedClassAttributes)
#if (!$attribute.inherited)
#if ($attribute.javaClassName == "BigDecimal") #set ($useBigDecimal = "true")#end
#end
#end
#if ($useBigDecimal == "true")
import java.math.BigDecimal;
#end
#if (!$entity.sortedClassToManyRelationships.empty)
import java.util.*;
#end

/**
 * Java Class ${entity.prefixClassNameWithOptionalPackage}.java generated for entity ${entity.name}
 #if ($entity.parentSet)
 * <p>
 * The entity parent is ${entity.parent.classNameWithDefault}
 * </p>
 #end
 * <p><b>
 * DO NOT EDIT.  Make changes to ${entity.classNameWithOptionalPackage}.java instead.
 * </b></p>
 * <p>
 * copyright ${copyrightYear} ${copyrightBy}
 * </p>
 */
public abstract class ${entity.prefixClassNameWithoutPackage} extends#if ($entity.parentSet) ${entity.parent.classNameWithDefault}#else EOGenericRecord#end {
    private static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger( ${entity.prefixClassNameWithoutPackage}.class);
#foreach ($attribute in $entity.sortedClassAttributes)
#if (!$attribute.inherited)

	/**
	 * Key value for attribute $attribute.name
	 */
	public static final String ${attribute.capitalizedName}Key = "$attribute.name";
#else

	// Inherited attribute $attribute.name
#end
#end
#foreach ($relationship in $entity.sortedClassToOneRelationships)
#if (!$relationship.inherited)

	/**
	 * Key value for to one relationship $relationship.name
	 */
	public static final String ${relationship.capitalizedName}Key = "$relationship.name";
#else

	// Inherited relationship $relationship.name
#end
#end
#foreach ($relationship in $entity.sortedClassToManyRelationships)
#if (!$relationship.inherited)

	/**
	 * Key value for to many relationship $relationship.name
	 */
	public static final String ${relationship.capitalizedName}Key = "$relationship.name";
#else

	// Inherited relationship $relationship.name
#end
#end
#if (!$entity.isAbstract)

	/**
	 * Returns a newly initialized instance of ${entity.name}. The new object is inserted in the editing context.
	 *
	 * @param context
	 *            editing context to insert in.
	 * @return newly initialized instance
	 */
	public static ${entity.prefixClassNameWithoutPackage} new${entity.classNameWithoutPackage}Instance(EOEditingContext context) {
		EOClassDescription description  = EOClassDescription.classDescriptionForEntityName("${entity.name}");
		EOEnterpriseObject object = description.createInstanceWithEditingContext(context, null);
		context.insertObject(object);
		return (${entity.prefixClassNameWithoutPackage})object;
	}

	/**
	 * Returns a list of all the object in the shared editing context.
	 *
	 * @return list of ${entity.name}
	 */
	protected static NSArray<? extends $entity.prefixClassNameWithoutPackage> _all${entity.classNameWithoutPackage}Objects() {
		NSMutableArray<$entity.prefixClassNameWithoutPackage> result = null;
		NSArray<EOEnterpriseObject> aList = EOSharedEditingContext.defaultSharedEditingContext().objectsByEntityName().objectForKey("${entity.name}");
		if (aList != null) {
			result = new NSMutableArray<$entity.prefixClassNameWithoutPackage>(aList.count());
			for (EOEnterpriseObject anObject : aList) {
				result.addObject(anObject);
			}
		}
		return (result != null ? result : NSArray.<$entity.prefixClassNameWithoutPackage> emptyArray());
	}
#end

	/**
	 * Returns the name of the entity attached to this class.
	 *
	 * @return name of the entity
	 */
    public static String entity() {
        return "${entity.name}";
    }

	/**
	 * Sole Constructor
	 */
	public ${entity.prefixClassNameWithoutPackage}() {
        super();
    }
#foreach ($fetchSpecification in $entity.sortedFetchSpecs)

	/**
	 * Returns the object matching the fetch specification "$fetchSpecification.name".
	 *
	 * @param context
	 *            editing context to fetch in.
#foreach ($binding in $fetchSpecification.distinctBindings)
	 * @param ${binding.name}Binding
	 *            fetch specification binding.
#end
	 * @return list of ${entity.name}
	 */
    public static NSArray<?> objectsFor${fetchSpecification.capitalizedName}(EOEditingContext context#foreach ($binding in $fetchSpecification.distinctBindings), ${binding.javaClassName} ${binding.name}Binding#end) {
        EOFetchSpecification spec = EOFetchSpecification.fetchSpecificationNamed("${fetchSpecification.name}", "${entity.name}");
#if (!$fetchSpecification.distinctBindings.empty)
        NSMutableDictionary<String, Object> bindings = new NSMutableDictionary<String, Object>();
#foreach ($binding in $fetchSpecification.distinctBindings)
        if (${binding.name}Binding != null)
            bindings.setObjectForKey(${binding.name}Binding, "${binding.name}");
 #end
        spec = spec.fetchSpecificationWithQualifierBindings(bindings);
#end
        return context.objectsWithFetchSpecification(spec);
    }
#end
#foreach ($attribute in $entity.sortedClassAttributes)
#if (!$attribute.inherited)

 	/**
	 * Returns the attribute "$attribute.name".
	 *
	 * @return $attribute.name
	 */
    public $attribute.javaClassName ${attribute.name}() {
        return ($attribute.javaClassName)this.storedValueForKey("${attribute.name}");
    }

 	/**
	 * Sets the attribute "$attribute.name".
	 *
	 * @param value
	 *            $attribute.name.
	 */
    public void set${attribute.capitalizedName}($attribute.javaClassName value) {
    	if (logger.isDebugEnabled()) {
    		logger.debug( "value: " + value);
    	}
        this.takeStoredValueForKey(value, "${attribute.name}");
    }

  	/**
	 * Initialize the attribute "$attribute.name".
	 *
	 * @param value
	 *            $attribute.name.
	 */
    public void initialize${attribute.capitalizedName}($attribute.javaClassName value) {
        this.set${attribute.capitalizedName}(value);
    }
#end
#end
#foreach ($relationship in $entity.sortedClassToOneRelationships)
#if (!$relationship.inherited)

 	/**
	 * Returns the relationship "$relationship.name".
	 *
	 * @return $relationship.name
	 */
    public ${relationship.actualDestination.classNameWithDefault} ${relationship.name}() {
        return (${relationship.actualDestination.classNameWithDefault})this.storedValueForKey("${relationship.name}");
    }

 	/**
	 * Sets the relationship "$relationship.name".
	 *
	 * @param value
	 *            $relationship.name.
	 */
    public void set${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} value) {
    	if (logger.isDebugEnabled()) {
    		logger.debug( "value: " + value);
    	}
        this.takeStoredValueForKey(value, "${relationship.name}");
    }

 	/**
	 * Returns the relationship "$relationship.name".
	 *
	 * @return $relationship.name
	 */
    public ${relationship.actualDestination.classNameWithDefault} ${relationship.name}Relationship() {
        return (${relationship.actualDestination.classNameWithDefault})this.storedValueForKey("${relationship.name}");
    }

 	/**
	 * Sets the relationship "$relationship.name". This method takes care of setting the reverse relationship if it exists.
	 *
	 * @param value
	 *            $relationship.name.
	 */
    public void set${relationship.capitalizedName}Relationship(${relationship.actualDestination.classNameWithDefault} value) {
        if (value == null) {
            ${relationship.actualDestination.classNameWithDefault} object = this.${relationship.name}();
            if (object != null)
                this.removeObjectFromBothSidesOfRelationshipWithKey(object, "${relationship.name}");
        } else {
            this.addObjectToBothSidesOfRelationshipWithKey(value, "${relationship.name}");
        }
    }

  	/**
	 * Initialize the relationship "$relationship.name".
	 *
	 * @param value
	 *            $relationship.name.
	 */
    public void initialize${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} value) {
        this.set${relationship.capitalizedName}Relationship(value);
    }
#end
#end
#foreach ($relationship in $entity.sortedClassToManyRelationships)
#if (!$relationship.inherited)

 	/**
	 * Returns the relationship "$relationship.name".
	 *
	 * @return list of ${relationship.actualDestination.classNameWithDefault}
	 */
   @SuppressWarnings("unchecked")
    public NSArray<${relationship.actualDestination.classNameWithDefault}> ${relationship.name}() {
    	NSArray aList = (NSArray)this.storedValueForKey("${relationship.name}");
    	if (aList != null ) {
    		return aList;
    	} else {
    		return NSArray.emptyArray();
    	}
    }

  	/**
	 * Sets the relationship "$relationship.name".
	 *
	 * @param value
	 *            list of ${relationship.actualDestination.classNameWithDefault}.
	 */
    public void set${relationship.capitalizedName}(NSArray<${relationship.actualDestination.classNameWithDefault}> value) {
        this.takeStoredValueForKey(value, "${relationship.name}");
    }

  	/**
	 * 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.
	 *
	 * @param object
	 *            ${relationship.actualDestination.classNameWithDefault}.
	 */
   @SuppressWarnings("cast")
    public void addTo${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} object) {
        if (logger.isDebugEnabled()) {
   			logger.debug( "object: " + object);
            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()) ) ) {
                try {
                    throw new Exception("WrongEditingContext");
                } catch(Exception exception) {
                    logger.warn("Relationship \"$relationship.name\" Exception " , exception);
                }
            }
        }
        this.includeObjectIntoPropertyWithKey(object, "${relationship.name}");
    }

  	/**
	 * Removes an object from the relationship "$relationship.name".
	 *
	 * @param object
	 *            ${relationship.actualDestination.classNameWithDefault}.
	 */
    public void removeFrom${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} object) {
     	if (logger.isDebugEnabled()) {
    		logger.debug( "object: " + object);
    	}
        this.excludeObjectFromPropertyWithKey(object, "${relationship.name}");
    }

  	/**
	 * Adds an object to  the relationship "$relationship.name". This method takes care of setting the reverse relationship if it exists.
	 *
	 * @param object
	 *            ${relationship.actualDestination.classNameWithDefault}.
	 */
    public void addTo${relationship.capitalizedName}Relationship(${relationship.actualDestination.classNameWithDefault} object) {
        this.addObjectToBothSidesOfRelationshipWithKey(object, "${relationship.name}");
    }

  	/**
	 * Removes an object from the relationship "$relationship.name". This method takes care of setting the reverse relationship if it exists.
	 *
	 * @param object
	 *            ${relationship.actualDestination.classNameWithDefault}.
	 */
    public void removeFrom${relationship.capitalizedName}Relationship(${relationship.actualDestination.classNameWithDefault} object) {
        this.removeObjectFromBothSidesOfRelationshipWithKey(object, "${relationship.name}");
    }

  	/**
	 * Creates and returns a new object for the relationship "$relationship.name".
	 *
	 * @return ${relationship.actualDestination.classNameWithDefault}.
	 */
    public ${relationship.actualDestination.classNameWithDefault} create${relationship.capitalizedName}Relationship() {
        EOClassDescription classDescription = EOClassDescription.classDescriptionForEntityName("${relationship.actualDestination.name}");
        EOEnterpriseObject object = classDescription.createInstanceWithEditingContext(this.editingContext(), null);
        this.editingContext().insertObject(object);
        this.addObjectToBothSidesOfRelationshipWithKey(object, "${relationship.name}");
        return (${relationship.actualDestination.classNameWithDefault})object;
    }

  	/**
	 * Removes and deletes if appropriate  an object from the relationship "$relationship.name".
	 * <p>
	 * The delete rule for "$relationship.name" is: ${relationship.deleteRule.name}#if (${relationship.ownsDestination}), and own destination#end<br/>
	 * Possible choices are "Nullify", "Cascade", "Deny", "NoAction"
	 * </p>
	 * <p>
#if (${relationship.deleteRule.name} != "Deny")
	 * The object is removed from the relationship "$relationship.name" and its inverse relationship if it exists.
#if (${relationship.deleteRule.name} == "Cascade")
 	 * The receiver cascade the delete rule, the object will be deleted from the editing context.
#elseif (${relationship.ownsDestination})
	 * The receiver owns the object, the object will be deleted from the editing context.
#end
#else
	 * The remove will be denied. This method does nothing.
#end
	 * </p>
	 *
	 * @param object
	 *            ${relationship.actualDestination.classNameWithDefault}.
	 */
    public void delete${relationship.capitalizedName}Relationship(${relationship.actualDestination.classNameWithDefault} object) {
        // Delete rule for ${relationship.name} is: ${relationship.deleteRule.name}
        // Possible choices are "Nullify", "Cascade", "Deny", "NoAction"
#if (${relationship.deleteRule.name} != "Deny")
        this.removeObjectFromBothSidesOfRelationshipWithKey(object, "${relationship.name}");
#if (${relationship.deleteRule.name} == "Cascade")
        // Cascade delete rule
        this.editingContext().deleteObject(object);
#elseif (${relationship.ownsDestination})
        // Own destination delete rule
        this.editingContext().deleteObject(object);
#end
#else
        // Deny delete rule
#end
    }

  	/**
	 * Deletes all object from the relationship "$relationship.name". All delete rules are applied.
	 */
    public void deleteAll${relationship.capitalizedName}Relationships() {
        for ( Iterator<${relationship.actualDestination.classNameWithDefault}> objects = this.${relationship.name}().vector().iterator(); objects.hasNext(); )
            this.delete${relationship.capitalizedName}Relationship(objects.next());
    }

  	/**
	 * Initialize the relationship "$relationship.name" with the list of values
	 *
	 * @param value
	 *            list of ${relationship.actualDestination.classNameWithDefault}.
	 */
    public void initialize${relationship.capitalizedName}(NSArray<${relationship.actualDestination.classNameWithDefault}> value) {
        this.set${relationship.capitalizedName}(value);
    }

  	/**
	 * Initialize the relationship "$relationship.name" with one object
	 *
	 * @param value
	 *            ${relationship.actualDestination.classNameWithDefault}.
	 */
    public void initialize${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} value) {
        this.addTo${relationship.capitalizedName}Relationship(value);
    }
#end
#end
}
  • No labels