1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
/*
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.
*
*
*/
|