1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.nuiton.eugene.models.object.xml;
24
25 import org.apache.commons.logging.Log;
26 import org.apache.commons.logging.LogFactory;
27 import org.nuiton.eugene.models.object.ObjectModelAssociationClass;
28 import org.nuiton.eugene.models.object.ObjectModelAttribute;
29 import org.nuiton.eugene.models.object.ObjectModelClass;
30 import org.nuiton.eugene.models.object.ObjectModelClassifier;
31
32 import java.util.ArrayList;
33 import java.util.Collection;
34 import java.util.List;
35
36
37
38
39
40
41
42 public class ObjectModelAssociationClassImpl extends ObjectModelClassImpl
43 implements ObjectModelAssociationClass {
44
45 private static Log log = LogFactory
46 .getLog(ObjectModelAssociationClassImpl.class);
47
48 protected List<ObjectModelAttribute> participantsAttributes;
49
50 protected List<ObjectModelClassifier> participantsClassifiers;
51
52 protected List<ObjectModeImplAssociationClassParticipant> participantsRefs = new ArrayList<>();
53
54 public ObjectModelAssociationClassImpl() {
55 }
56
57 public void addParticipant(
58 ObjectModeImplAssociationClassParticipant participant) {
59
60
61 participant.postInit();
62 participant.setAssociationClass(this);
63 participantsRefs.add(participant);
64
65 }
66
67
68
69
70
71
72
73 @Override
74 public List<ObjectModelAttribute> getParticipantsAttributes() {
75 if (participantsAttributes == null) {
76 parseParticipantsRefs();
77 }
78 return participantsAttributes;
79 }
80
81
82
83
84
85
86
87 @Override
88 public List<ObjectModelClassifier> getParticipantsClassifiers() {
89 if (participantsClassifiers == null) {
90 parseParticipantsRefs();
91 }
92 return participantsClassifiers;
93 }
94
95 protected void parseParticipantsRefs() {
96 participantsClassifiers = new ArrayList<>();
97 participantsAttributes = new ArrayList<>();
98
99 for (ObjectModeImplAssociationClassParticipant ref : participantsRefs) {
100 ObjectModelClassifier classifier = objectModelImpl
101 .getClassifier(ref.getName());
102 participantsClassifiers.add(classifier);
103 ObjectModelAttribute attribute = null;
104
105
106 if (classifier instanceof ObjectModelClass) {
107 attribute = classifier.getAttribute(ref.getAttributeName());
108 if (attribute == null) {
109 log.warn("WARNING : Attribute " + ref.getAttributeName()
110 + " not found on " + classifier.getQualifiedName());
111 log.warn("WARNING : Assuming there is no navigability in this direction for the "
112 + getQualifiedName() + " association class");
113 }
114 }
115 participantsAttributes.add(attribute);
116 }
117 }
118
119 public Collection<ObjectModeImplAssociationClassParticipant> getParticipantsRefs() {
120 return participantsRefs;
121 }
122
123 }