To edit or add content to this Wiki, you can simply create a new account at http://wocommunity.org/account.
This template requires the JBND library or source code be included on the Client-Side of the application. NSArray is not parameterized so if you want to use it with 5.4, slight modifications might be beneficial.
// <$GEN_PREFIX$><$classNameWithoutPackage$>.java // // Created by eogenerator // // DO NOT EDIT. Make changes to <$classNameWithoutPackage$>.java instead. // // This EO was generated to perform standard JBND behaviors // 1. All setter methods will not set new values if they are identical to old values. // 2. All setter methods invoke EOFDataObject.fireDataObjectEvent(String key, Object oldValue). // 3. All attribute and relationship keys are stored as static final Strings. // 4. A default constructor is provided to automatically call the superclass constructor // that accepts an EOClassDescription argument, used to avoid bugs in the client side EOF. #if ($entity.superclassPackageName) package $entity.superclassPackageName; #end import com.webobjects.foundation.*; import com.webobjects.eocontrol.*; import java.math.BigDecimal; import java.util.*; import org.jbnd.support.JBNDUtil; import org.jbnd.eof.EOFDataObject; import org.jbnd.event.DataObjectEvent; import org.jbnd.event.DataObjectEvent.Type; /** * DO NOT EDIT! */ @SuppressWarnings("all") public abstract class ${entity.prefixClassNameWithoutPackage} extends #if ($entity.parentSet)${entity.parent.classNameWithDefault}#elseif ($EOGenericRecord)${EOGenericRecord}#else EOFDataObject#end { /** Entity name */ public static final String ENTITY_NAME = "$entity.name"; /** Attribute keys */ #foreach ($attribute in $entity.sortedClientClassAttributes) public static final String ${attribute.uppercaseUnderscoreName}_KEY = "$attribute.name"; #end /** Relationship keys */ #foreach ($relationship in $entity.sortedClientClassRelationships) public static final String ${relationship.uppercaseUnderscoreName}_KEY = "$relationship.name"; #end /** * Constructor. Creates an EO with the <tt>EOClassDescription</tt> of the * relevant entity, to ensure a proper client side behavior. */ public ${entity.prefixClassNameWithoutPackage}() { super(EOClassDescription.classDescriptionForEntityName("$entity.name")); } /** * Constructor used in inheritance situations, when this entity is the parent. * * @param cd The class description of the sub-entity. */ protected ${entity.prefixClassNameWithoutPackage}(EOClassDescription cd) { super(cd); } #foreach ($attribute in $entity.sortedClientClassAttributes) #if (!$attribute.inherited) public $attribute.javaClassName ${attribute.name}() { return ($attribute.javaClassName)storedValueForKey(${attribute.uppercaseUnderscoreName}_KEY); } public void set${attribute.capitalizedName}($attribute.javaClassName aValue) { // extract old value $attribute.javaClassName oldValue = ${attribute.name}(); // do not perform EOF work unless values are different if(JBNDUtil.equals(oldValue, aValue)) return; takeStoredValueForKey(aValue, ${attribute.uppercaseUnderscoreName}_KEY); fireDataObjectEvent(${attribute.uppercaseUnderscoreName}_KEY, oldValue, DataObjectEvent.Type.ATTRIBUTE_CHANGE); } #end #end #foreach ($relationship in $entity.sortedClientClassToOneRelationships) #if (!$relationship.inherited) public $relationship.actualDestination.classNameWithDefault ${relationship.name}() { return ($relationship.actualDestination.classNameWithDefault)storedValueForKey(${relationship.uppercaseUnderscoreName}_KEY); } public void set${relationship.capitalizedName}($relationship.actualDestination.classNameWithDefault aValue) { // get old value $relationship.actualDestination.classNameWithDefault oldValue = ${relationship.name}(); // do not perform EOF work unless values are different if(JBNDUtil.equals(oldValue, aValue)) return; takeStoredValueForKey(aValue, ${relationship.uppercaseUnderscoreName}_KEY); fireDataObjectEvent(${relationship.uppercaseUnderscoreName}_KEY, oldValue, DataObjectEvent.Type.TO_ONE_CHANGE); } #end #end #foreach ($relationship in $entity.sortedClientClassToManyRelationships) #if (!$relationship.inherited) public NSArray<${relationship.actualDestination.classNameWithDefault}> ${relationship.name}() { return (NSArray<${relationship.actualDestination.classNameWithDefault}>)storedValueForKey(${relationship.uppercaseUnderscoreName}_KEY); } public void set${relationship.capitalizedName}(NSArray<${relationship.actualDestination.classNameWithDefault}> aValue) { Object oldValue = ${relationship.name}().clone(); takeStoredValueForKey(aValue, ${relationship.uppercaseUnderscoreName}_KEY); fireDataObjectEvent(${relationship.uppercaseUnderscoreName}_KEY, oldValue, DataObjectEvent.Type.TO_MANY_CHANGE); } public void addTo${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} object) { if(${relationship.name}().contains(object)) return; includeObjectIntoPropertyWithKey(object, ${relationship.uppercaseUnderscoreName}_KEY); fireDataObjectEvent(${relationship.uppercaseUnderscoreName}_KEY, object, DataObjectEvent.Type.TO_MANY_ADD); } public void removeFrom${relationship.capitalizedName}(${relationship.actualDestination.classNameWithDefault} object) { if(!${relationship.name}().contains(object)) return; excludeObjectFromPropertyWithKey(object, ${relationship.uppercaseUnderscoreName}_KEY); fireDataObjectEvent(${relationship.uppercaseUnderscoreName}_KEY, object, DataObjectEvent.Type.TO_MANY_REMOVE); } #end #end }