From aedc34d55462a75e329bbf342251ff6504cd117e Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sun, 19 May 2024 17:56:33 -0400 Subject: Initial import from SVN --- .../net/wotonomy/control/EOEnterpriseObject.java | 219 +++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 projects/net.wotonomy.persistence/src/main/java/net/wotonomy/control/EOEnterpriseObject.java (limited to 'projects/net.wotonomy.persistence/src/main/java/net/wotonomy/control/EOEnterpriseObject.java') diff --git a/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/control/EOEnterpriseObject.java b/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/control/EOEnterpriseObject.java new file mode 100644 index 0000000..112531c --- /dev/null +++ b/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/control/EOEnterpriseObject.java @@ -0,0 +1,219 @@ +/* +Wotonomy: OpenStep design patterns for pure Java applications. +Copyright (C) 2001 Michael Powers + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see http://www.gnu.org +*/ + +package net.wotonomy.control; + +import net.wotonomy.foundation.NSArray; +import net.wotonomy.foundation.NSDictionary; + +/** +* EOEnterpriseObject defines the required methods a data object +* must implement to take full advantage of the control package. +* +* @author michael@mpowers.net +* @author $Author: cgruber $ +* @version $Revision: 894 $ +*/ +public interface EOEnterpriseObject + extends EOKeyValueCodingAdditions, + EORelationshipManipulation, + EODeferredFaulting, + EOValidation +{ + /** + * Returns a List of all property keys defined on this object. + * This includes both attributes and relationships. + */ + NSArray allPropertyKeys(); + + /** + * Returns a list of all attributes defined on this object. + * Attributes are all properties that are not relationships. + */ + NSArray attributeKeys(); + + //void awakeFromClientUpdate(EOEditingContext aContext) + + /** + * Called when the object has first been fetched into the + * specified editing context. + */ + void awakeFromFetch(EOEditingContext anEditingContext); + + /** + * Called when the object has been inserted into the + * specified editing context. + */ + void awakeFromInsertion(EOEditingContext anEditingContext); + + /** + * Returns a Map representing the delta of the current state + * from the state represented in the specified snapshot. + * The result will contain only the keys that have changed + * and their values. Relationship keys will map to an NSArray + * that contains an NSArray of added objects and an NSArray + * of removed objects, in that order. + */ + NSDictionary changesFromSnapshot(NSDictionary snapshot); + + /** + * Returns a class description for this object. + */ + EOClassDescription classDescription(); + + /** + * Returns a class description for the object at the + * other end of the specified relationship key. + */ + EOClassDescription classDescriptionForDestinationKey(String aKey); + + /** + * Clears all property values for this object. + * This method is called to clean-up an object that + * will no longer be used, and implementations should + * ensure that all references are set to null to + * prevent problems with garbage-collection. + */ + void clearProperties(); + + /** + * Returns the delete rule constant defined on EOClassDescription + * for the relationship defined by the specified key. + */ + int deleteRuleForRelationshipKey(String aRelationshipKey); + + /** + * Returns the editing context in which this object is registered. + */ + EOEditingContext editingContext(); + + /** + * Returns the name of the entity that this object represents. + */ + String entityName(); + + /** + * Returns a String containing all property keys and values for + * this object. Relationships should be represented by calling + * eoShallowDescription() on the object. + */ + String eoDescription(); + + /** + * Returns a String containing all attribute keys and values for + * this object. Relationships are not included. + */ + String eoShallowDescription(); + + /** + * Returns the key used to reference this object on the + * object at the other end of the specified relationship. + */ + String inverseForRelationshipKey(String aRelationshipKey); + + //Object invokeRemoteMethod( + // String aMethodName, Class[] aTypeArray Object[] anArgumentArray) + + /** + * Returns whether the specified relationship key represents + * a to-many relationship. + */ + boolean isToManyKey(String aKey); + + /** + * Returns whether the objects at the other end of the specified + * relationship should be deleted when this object is deleted. + */ + boolean ownsDestinationObjectsForRelationshipKey(String aKey); + + //void prepareValuesForClient() + + /** + * Called to perform the delete propagation for this object + * on the specified editing context. All relationships + * should be processed according to their corresponding + * delete rule. + */ + void propagateDeleteWithEditingContext(EOEditingContext aContext); + + /** + * Applies the changes from the specified snapshot to + * this object. + * @see #changesFromSnapshot(NSDictionary) + */ + void reapplyChangesFromDictionary(NSDictionary aDeltaSnapshot); + + /** + * Returns a snapshot of the current state of this object. + * All property keys are mapped to their values; nulls are + * represented by NSNull. + */ + NSDictionary snapshot(); + + /** + * Returns a List of the to-many relationship keys + * for this object. + */ + NSArray toManyRelationshipKeys(); + + /** + * Returns a List of the to-one relationship keys + * for this object. + */ + NSArray toOneRelationshipKeys(); + + /** + * Applies the specified snapshot to this object, + * converting NSNulls to null and calling + * takeStoredValueForKey for each key in the Map. + */ + void updateFromSnapshot(NSDictionary aSnapshot); + + /** + * Returns a short, stateful string representation + * of this object. + */ + String userPresentableDescription(); + + /** + * This method should be implemented to call + * EOObserverCenter.objectWillChange( this ), + * and it should be called by each setter method + * on this object before changes are made to the + * object's internal state. + */ + void willChange(); +} + +/* + * $Log$ + * Revision 1.2 2006/02/16 16:47:14 cgruber + * Move some classes in to "internal" packages and re-work imports, etc. + * + * Also use UnsupportedOperationExceptions where appropriate, instead of WotonomyExceptions. + * + * Revision 1.1 2006/02/16 13:19:57 cgruber + * Check in all sources in eclipse-friendly maven-enabled packages. + * + * Revision 1.1 2001/11/13 04:13:59 mpowers + * Added interfaces needed to begin work on EOCustomObject. + * + * + */ + + -- cgit v1.2.3