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 public class ObjectClass extends AbstractSchemaObject
70 {
71
72 public static final long serialVersionUID = 1L;
73
74
75 protected ObjectClassTypeEnum objectClassType = ObjectClassTypeEnum.STRUCTURAL;
76
77
78 protected List<String> superiorOids;
79
80
81 protected List<ObjectClass> superiors;
82
83
84 protected List<String> mayAttributeTypeOids;
85
86
87 protected List<AttributeType> mayAttributeTypes;
88
89
90 protected List<String> mustAttributeTypeOids;
91
92
93 protected List<AttributeType> mustAttributeTypes;
94
95
96
97
98
99
100 public ObjectClass( String oid )
101 {
102 super( SchemaObjectType.OBJECT_CLASS, oid );
103
104 mayAttributeTypeOids = new ArrayList<>();
105 mustAttributeTypeOids = new ArrayList<>();
106 superiorOids = new ArrayList<>();
107
108 mayAttributeTypes = new ArrayList<>();
109 mustAttributeTypes = new ArrayList<>();
110 superiors = new ArrayList<>();
111 objectClassType = ObjectClassTypeEnum.STRUCTURAL;
112 }
113
114
115
116
117
118 public List<String> getMayAttributeTypeOids()
119 {
120 return mayAttributeTypeOids;
121 }
122
123
124
125
126
127 public List<AttributeType> getMayAttributeTypes()
128 {
129 return mayAttributeTypes;
130 }
131
132
133
134
135
136 public List<String> getMustAttributeTypeOids()
137 {
138 return mustAttributeTypeOids;
139 }
140
141
142
143
144
145 public List<AttributeType> getMustAttributeTypes()
146 {
147 return mustAttributeTypes;
148 }
149
150
151
152
153
154
155
156 public List<ObjectClass> getSuperiors()
157 {
158 return superiors;
159 }
160
161
162
163
164
165
166
167 public List<String> getSuperiorOids()
168 {
169 return superiorOids;
170 }
171
172
173
174
175
176
177
178 public ObjectClassTypeEnum getType()
179 {
180 return objectClassType;
181 }
182
183
184
185
186
187
188
189 public boolean isStructural()
190 {
191 return objectClassType == ObjectClassTypeEnum.STRUCTURAL;
192 }
193
194
195
196
197
198
199
200 public boolean isAbstract()
201 {
202 return objectClassType == ObjectClassTypeEnum.ABSTRACT;
203 }
204
205
206
207
208
209
210
211 public boolean isAuxiliary()
212 {
213 return objectClassType == ObjectClassTypeEnum.AUXILIARY;
214 }
215
216
217
218
219
220 @Override
221 public String toString()
222 {
223 return SchemaObjectRenderer.OPEN_LDAP_SCHEMA_RENDERER.render( this );
224 }
225
226
227
228
229
230 @Override
231 public ObjectClass copy()
232 {
233 ObjectClass copy = new ObjectClass( oid );
234
235
236 copy.copy( this );
237
238
239 copy.objectClassType = objectClassType;
240
241
242 copy.superiorOids = new ArrayList<>();
243
244 for ( String oid : superiorOids )
245 {
246 copy.superiorOids.add( oid );
247 }
248
249
250 copy.superiors = new ArrayList<>();
251
252
253 copy.mayAttributeTypeOids = new ArrayList<>();
254
255 for ( String oid : mayAttributeTypeOids )
256 {
257 copy.mayAttributeTypeOids.add( oid );
258 }
259
260
261 copy.mayAttributeTypes = new ArrayList<>();
262
263
264 copy.mustAttributeTypeOids = new ArrayList<>();
265
266 for ( String oid : mustAttributeTypeOids )
267 {
268 copy.mustAttributeTypeOids.add( oid );
269 }
270
271
272 copy.mustAttributeTypes = new ArrayList<>();
273
274 return copy;
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 }