1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.api.ldap.model.schema;
21
22
23 import java.util.ArrayList;
24 import java.util.List;
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 public class ObjectClass extends AbstractSchemaObject
71 {
72
73 public static final long serialVersionUID = 1L;
74
75
76 protected ObjectClassTypeEnum objectClassType = ObjectClassTypeEnum.STRUCTURAL;
77
78
79 protected List<String> superiorOids;
80
81
82 protected List<ObjectClass> superiors;
83
84
85 protected List<String> mayAttributeTypeOids;
86
87
88 protected List<AttributeType> mayAttributeTypes;
89
90
91 protected List<String> mustAttributeTypeOids;
92
93
94 protected List<AttributeType> mustAttributeTypes;
95
96
97
98
99
100
101 public ObjectClass( String oid )
102 {
103 super( SchemaObjectType.OBJECT_CLASS, oid );
104
105 mayAttributeTypeOids = new ArrayList<String>();
106 mustAttributeTypeOids = new ArrayList<String>();
107 superiorOids = new ArrayList<String>();
108
109 mayAttributeTypes = new ArrayList<AttributeType>();
110 mustAttributeTypes = new ArrayList<AttributeType>();
111 superiors = new ArrayList<ObjectClass>();
112 objectClassType = ObjectClassTypeEnum.STRUCTURAL;
113 }
114
115
116
117
118
119 public List<String> getMayAttributeTypeOids()
120 {
121 return mayAttributeTypeOids;
122 }
123
124
125
126
127
128 public List<AttributeType> getMayAttributeTypes()
129 {
130 return mayAttributeTypes;
131 }
132
133
134
135
136
137 public List<String> getMustAttributeTypeOids()
138 {
139 return mustAttributeTypeOids;
140 }
141
142
143
144
145
146 public List<AttributeType> getMustAttributeTypes()
147 {
148 return mustAttributeTypes;
149 }
150
151
152
153
154
155
156
157 public List<ObjectClass> getSuperiors()
158 {
159 return superiors;
160 }
161
162
163
164
165
166
167
168 public List<String> getSuperiorOids()
169 {
170 return superiorOids;
171 }
172
173
174
175
176
177
178
179 public ObjectClassTypeEnum getType()
180 {
181 return objectClassType;
182 }
183
184
185
186
187
188
189
190 public boolean isStructural()
191 {
192 return objectClassType == ObjectClassTypeEnum.STRUCTURAL;
193 }
194
195
196
197
198
199
200
201 public boolean isAbstract()
202 {
203 return objectClassType == ObjectClassTypeEnum.ABSTRACT;
204 }
205
206
207
208
209
210
211
212 public boolean isAuxiliary()
213 {
214 return objectClassType == ObjectClassTypeEnum.AUXILIARY;
215 }
216
217
218
219
220
221 public String toString()
222 {
223 return SchemaObjectRenderer.OPEN_LDAP_SCHEMA_RENDERER.render( this );
224 }
225
226
227
228
229
230 public ObjectClass copy()
231 {
232 ObjectClass copy = new ObjectClass( oid );
233
234
235 copy.copy( this );
236
237
238 copy.objectClassType = objectClassType;
239
240
241 copy.superiorOids = new ArrayList<String>();
242
243 for ( String oid : superiorOids )
244 {
245 copy.superiorOids.add( oid );
246 }
247
248
249 copy.superiors = new ArrayList<ObjectClass>();
250
251
252 copy.mayAttributeTypeOids = new ArrayList<String>();
253
254 for ( String oid : mayAttributeTypeOids )
255 {
256 copy.mayAttributeTypeOids.add( oid );
257 }
258
259
260 copy.mayAttributeTypes = new ArrayList<AttributeType>();
261
262
263 copy.mustAttributeTypeOids = new ArrayList<String>();
264
265 for ( String oid : mustAttributeTypeOids )
266 {
267 copy.mustAttributeTypeOids.add( oid );
268 }
269
270
271 copy.mustAttributeTypes = new ArrayList<AttributeType>();
272
273 return copy;
274 }
275
276
277
278
279
280 @Override
281 public boolean equals( Object o )
282 {
283 if ( !super.equals( o ) )
284 {
285 return false;
286 }
287
288 if ( !( o instanceof ObjectClass ) )
289 {
290 return false;
291 }
292
293 ObjectClass that = ( ObjectClass ) o;
294
295
296 if ( objectClassType != that.objectClassType )
297 {
298 return false;
299 }
300
301
302 if ( superiorOids.size() != that.superiorOids.size() )
303 {
304 return false;
305 }
306
307
308 for ( String oid : superiorOids )
309 {
310 if ( !that.superiorOids.contains( oid ) )
311 {
312 return false;
313 }
314 }
315
316
317 for ( String oid : that.superiorOids )
318 {
319 if ( !superiorOids.contains( oid ) )
320 {
321 return false;
322 }
323 }
324
325
326 if ( superiors.size() != that.superiors.size() )
327 {
328 return false;
329 }
330
331
332 for ( ObjectClass oid : superiors )
333 {
334 if ( !that.superiors.contains( oid ) )
335 {
336 return false;
337 }
338 }
339
340
341 for ( ObjectClass oid : that.superiors )
342 {
343 if ( !superiors.contains( oid ) )
344 {
345 return false;
346 }
347 }
348
349
350 if ( mayAttributeTypeOids.size() != that.mayAttributeTypeOids.size() )
351 {
352 return false;
353 }
354
355
356 for ( String oid : mayAttributeTypeOids )
357 {
358 if ( !that.mayAttributeTypeOids.contains( oid ) )
359 {
360 return false;
361 }
362 }
363
364
365 for ( String oid : that.mayAttributeTypeOids )
366 {
367 if ( !mayAttributeTypeOids.contains( oid ) )
368 {
369 return false;
370 }
371 }
372
373
374 if ( mayAttributeTypes.size() != that.mayAttributeTypes.size() )
375 {
376 return false;
377 }
378
379
380 for ( AttributeType oid : mayAttributeTypes )
381 {
382 if ( !that.mayAttributeTypes.contains( oid ) )
383 {
384 return false;
385 }
386 }
387
388
389 for ( AttributeType oid : that.mayAttributeTypes )
390 {
391 if ( !mayAttributeTypes.contains( oid ) )
392 {
393 return false;
394 }
395 }
396
397
398 if ( mustAttributeTypeOids.size() != that.mustAttributeTypeOids.size() )
399 {
400 return false;
401 }
402
403
404 for ( String oid : mustAttributeTypeOids )
405 {
406 if ( !that.mustAttributeTypeOids.contains( oid ) )
407 {
408 return false;
409 }
410 }
411
412
413 for ( String oid : that.mustAttributeTypeOids )
414 {
415 if ( !mustAttributeTypeOids.contains( oid ) )
416 {
417 return false;
418 }
419 }
420
421
422 if ( mustAttributeTypes.size() != that.mustAttributeTypes.size() )
423 {
424 return false;
425 }
426
427
428 for ( AttributeType oid : mustAttributeTypes )
429 {
430 if ( !that.mustAttributeTypes.contains( oid ) )
431 {
432 return false;
433 }
434 }
435
436
437 for ( AttributeType oid : that.mustAttributeTypes )
438 {
439 if ( !mustAttributeTypes.contains( oid ) )
440 {
441 return false;
442 }
443 }
444
445 return true;
446 }
447 }