]> err.no Git - sope/blob - sope-core/EOControl/EOClassDescription.h
fixed copyrights for 2005
[sope] / sope-core / EOControl / EOClassDescription.h
1 /*
2   Copyright (C) 2000-2005 SKYRIX Software AG
3
4   This file is part of SOPE.
5
6   SOPE is free software; you can redistribute it and/or modify it under
7   the terms of the GNU Lesser General Public License as published by the
8   Free Software Foundation; either version 2, or (at your option) any
9   later version.
10
11   SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
12   WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14   License for more details.
15
16   You should have received a copy of the GNU Lesser General Public
17   License along with SOPE; see the file COPYING.  If not, write to the
18   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19   02111-1307, USA.
20 */
21
22 #ifndef __EOControl_EOClassDescription_H__
23 #define __EOControl_EOClassDescription_H__
24
25 #import <Foundation/Foundation.h>
26 #include <EOControl/EOGlobalID.h>
27
28 @class NSException, NSString, NSFormatter;
29
30 @interface EOClassDescription : NSClassDescription
31
32 @end
33
34 @interface NSClassDescription(EOClassDescription)
35
36 /* model */
37
38 - (NSString *)entityName;
39 - (NSString *)inverseForRelationshipKey:(NSString *)_key;
40 - (NSClassDescription *)classDescriptionForDestinationKey:(NSString *)_key;
41
42 /* object initialization */
43
44 - (id)createInstanceWithEditingContext:(id)_ec
45   globalID:(EOGlobalID *)_oid
46   zone:(NSZone *)_zone;
47
48 - (void)awakeObject:(id)_object fromFetchInEditingContext:(id)_ec;
49 - (void)awakeObject:(id)_object fromInsertionInEditingContext:(id)_ec;
50
51 /* delete */
52
53 - (void)propagateDeleteForObject:(id)_object editingContext:(id)_ec;
54
55 /* entity names */
56
57 #if 0
58 // used by: EOGenericRecord.m
59 + (NSClassDescription *)classDescriptionForEntityName:(NSString *)_entityName;
60 #endif
61
62 /* formatting */
63
64 - (NSFormatter *)defaultFormatterForKey:(NSString *)_key;
65 - (NSFormatter *)defaultFormatterForKeyPath:(NSString *)_keyPath;
66
67 @end
68
69 @interface NSClassDescription(EOValidation)
70
71 - (NSException *)validateObjectForDelete:(id)_object;
72 - (NSException *)validateObjectForSave:(id)_object;
73 - (NSException *)validateValue:(id *)_value forKey:(NSString *)_key;
74
75 @end
76
77 @interface NSObject(EOClassDescriptionInit)
78
79 /* object initialization */
80
81 - (id)initWithEditingContext:(id)_ec
82   classDescription:(NSClassDescription *)_classDesc
83   globalID:(EOGlobalID *)_oid;
84
85 - (void)awakeFromFetchInEditingContext:(id)_ec;
86 - (void)awakeFromInsertionInEditingContext:(id)_ec;
87
88 /* model */
89
90 - (NSString *)entityName;
91 - (NSString *)inverseForRelationshipKey:(NSString *)_key;
92 - (NSArray *)attributeKeys;
93 - (NSArray *)toManyRelationshipKeys;
94 - (NSArray *)toOneRelationshipKeys;
95
96 - (BOOL)isToManyKey:(NSString *)_key;
97 - (NSArray *)allPropertyKeys;
98
99 /* delete */
100
101 - (void)propagateDeleteWithEditingContext:(id)_ec;
102
103 @end
104
105 /* validation */
106
107 @interface NSObject(EOValidation)
108
109 - (NSException *)validateForDelete;
110 - (NSException *)validateForInsert;
111 - (NSException *)validateForUpdate;
112 - (NSException *)validateForSave;
113
114 @end
115
116 @interface NSException(EOValidation)
117
118 + (NSException *)aggregateExceptionWithExceptions:(NSArray *)_exceptions;
119
120 @end
121
122 /* snapshots */
123
124 @interface NSObject(EOSnapshots)
125
126 - (NSDictionary *)snapshot;
127 - (void)updateFromSnapshot:(NSDictionary *)_snapshot;
128 - (NSDictionary *)changesFromSnapshot:(NSDictionary *)_snapshot;
129
130 @end
131
132 /* relationships */
133
134 @interface NSObject(EORelationshipManipulation)
135
136 - (void)addObject:(id)_o    toBothSidesOfRelationshipWithKey:(NSString *)_key;
137 - (void)removeObject:(id)_o fromBothSidesOfRelationshipWithKey:(NSString *)_key;
138
139 - (void)addObject:(id)_object    toPropertyWithKey:(NSString *)_key;
140 - (void)removeObject:(id)_object fromPropertyWithKey:(NSString *)_key;
141
142 @end
143
144 /* shallow array copying */
145
146 @interface NSArray(ShallowCopy)
147 - (id)shallowCopy;
148 @end
149
150 #endif /* __EOControl_EOClassDescription_H__ */