1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.wotonomy.control;
20
21 import net.wotonomy.foundation.NSArray;
22 import net.wotonomy.foundation.NSDictionary;
23
24 /***
25 * EOEnterpriseObject defines the required methods a data object
26 * must implement to take full advantage of the control package.
27 *
28 * @author michael@mpowers.net
29 * @author $Author: cgruber $
30 * @version $Revision: 894 $
31 */
32 public interface EOEnterpriseObject
33 extends EOKeyValueCodingAdditions,
34 EORelationshipManipulation,
35 EODeferredFaulting,
36 EOValidation
37 {
38 /***
39 * Returns a List of all property keys defined on this object.
40 * This includes both attributes and relationships.
41 */
42 NSArray allPropertyKeys();
43
44 /***
45 * Returns a list of all attributes defined on this object.
46 * Attributes are all properties that are not relationships.
47 */
48 NSArray attributeKeys();
49
50
51
52 /***
53 * Called when the object has first been fetched into the
54 * specified editing context.
55 */
56 void awakeFromFetch(EOEditingContext anEditingContext);
57
58 /***
59 * Called when the object has been inserted into the
60 * specified editing context.
61 */
62 void awakeFromInsertion(EOEditingContext anEditingContext);
63
64 /***
65 * Returns a Map representing the delta of the current state
66 * from the state represented in the specified snapshot.
67 * The result will contain only the keys that have changed
68 * and their values. Relationship keys will map to an NSArray
69 * that contains an NSArray of added objects and an NSArray
70 * of removed objects, in that order.
71 */
72 NSDictionary changesFromSnapshot(NSDictionary snapshot);
73
74 /***
75 * Returns a class description for this object.
76 */
77 EOClassDescription classDescription();
78
79 /***
80 * Returns a class description for the object at the
81 * other end of the specified relationship key.
82 */
83 EOClassDescription classDescriptionForDestinationKey(String aKey);
84
85 /***
86 * Clears all property values for this object.
87 * This method is called to clean-up an object that
88 * will no longer be used, and implementations should
89 * ensure that all references are set to null to
90 * prevent problems with garbage-collection.
91 */
92 void clearProperties();
93
94 /***
95 * Returns the delete rule constant defined on EOClassDescription
96 * for the relationship defined by the specified key.
97 */
98 int deleteRuleForRelationshipKey(String aRelationshipKey);
99
100 /***
101 * Returns the editing context in which this object is registered.
102 */
103 EOEditingContext editingContext();
104
105 /***
106 * Returns the name of the entity that this object represents.
107 */
108 String entityName();
109
110 /***
111 * Returns a String containing all property keys and values for
112 * this object. Relationships should be represented by calling
113 * eoShallowDescription() on the object.
114 */
115 String eoDescription();
116
117 /***
118 * Returns a String containing all attribute keys and values for
119 * this object. Relationships are not included.
120 */
121 String eoShallowDescription();
122
123 /***
124 * Returns the key used to reference this object on the
125 * object at the other end of the specified relationship.
126 */
127 String inverseForRelationshipKey(String aRelationshipKey);
128
129
130
131
132 /***
133 * Returns whether the specified relationship key represents
134 * a to-many relationship.
135 */
136 boolean isToManyKey(String aKey);
137
138 /***
139 * Returns whether the objects at the other end of the specified
140 * relationship should be deleted when this object is deleted.
141 */
142 boolean ownsDestinationObjectsForRelationshipKey(String aKey);
143
144
145
146 /***
147 * Called to perform the delete propagation for this object
148 * on the specified editing context. All relationships
149 * should be processed according to their corresponding
150 * delete rule.
151 */
152 void propagateDeleteWithEditingContext(EOEditingContext aContext);
153
154 /***
155 * Applies the changes from the specified snapshot to
156 * this object.
157 * @see #changesFromSnapshot(NSDictionary)
158 */
159 void reapplyChangesFromDictionary(NSDictionary aDeltaSnapshot);
160
161 /***
162 * Returns a snapshot of the current state of this object.
163 * All property keys are mapped to their values; nulls are
164 * represented by NSNull.
165 */
166 NSDictionary snapshot();
167
168 /***
169 * Returns a List of the to-many relationship keys
170 * for this object.
171 */
172 NSArray toManyRelationshipKeys();
173
174 /***
175 * Returns a List of the to-one relationship keys
176 * for this object.
177 */
178 NSArray toOneRelationshipKeys();
179
180 /***
181 * Applies the specified snapshot to this object,
182 * converting NSNulls to null and calling
183 * takeStoredValueForKey for each key in the Map.
184 */
185 void updateFromSnapshot(NSDictionary aSnapshot);
186
187 /***
188 * Returns a short, stateful string representation
189 * of this object.
190 */
191 String userPresentableDescription();
192
193 /***
194 * This method should be implemented to call
195 * EOObserverCenter.objectWillChange( this ),
196 * and it should be called by each setter method
197 * on this object before changes are made to the
198 * object's internal state.
199 */
200 void willChange();
201 }
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219