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 | |
package org.argouml.model.mdr; |
40 | |
|
41 | |
import javax.jmi.reflect.InvalidObjectException; |
42 | |
|
43 | |
import org.apache.log4j.Logger; |
44 | |
import org.argouml.model.ModelManagementFactory; |
45 | |
import org.omg.uml.foundation.core.ModelElement; |
46 | |
import org.omg.uml.foundation.core.Namespace; |
47 | |
import org.omg.uml.foundation.core.Stereotype; |
48 | |
import org.omg.uml.modelmanagement.ElementImport; |
49 | |
import org.omg.uml.modelmanagement.Model; |
50 | |
import org.omg.uml.modelmanagement.ModelManagementPackage; |
51 | |
import org.omg.uml.modelmanagement.Subsystem; |
52 | |
import org.omg.uml.modelmanagement.UmlPackage; |
53 | |
|
54 | |
|
55 | |
|
56 | |
|
57 | |
|
58 | |
|
59 | |
|
60 | |
|
61 | |
|
62 | |
|
63 | 968 | final class ModelManagementFactoryMDRImpl extends |
64 | |
AbstractUmlModelFactoryMDR implements ModelManagementFactory { |
65 | |
|
66 | |
|
67 | |
|
68 | |
|
69 | 900 | private static final Logger LOG = |
70 | |
Logger.getLogger(ModelManagementFactoryMDRImpl.class); |
71 | |
|
72 | |
|
73 | |
|
74 | |
|
75 | |
private Object theRootModel; |
76 | |
|
77 | |
|
78 | |
|
79 | |
|
80 | |
private MDRModelImplementation modelImpl; |
81 | |
|
82 | |
|
83 | |
|
84 | |
|
85 | |
|
86 | |
|
87 | |
|
88 | 900 | public ModelManagementFactoryMDRImpl(MDRModelImplementation mi) { |
89 | 900 | modelImpl = mi; |
90 | 900 | } |
91 | |
|
92 | |
|
93 | |
public Model createModel() { |
94 | 968 | ModelManagementPackage mmp = getModelManagementPackage(); |
95 | 968 | if (mmp == null) { |
96 | |
|
97 | |
|
98 | |
|
99 | 0 | modelImpl.createDefaultExtent(); |
100 | |
} |
101 | 968 | Model myModel = getModelManagementPackage().getModel().createModel(); |
102 | 968 | super.initialize(myModel); |
103 | 968 | return myModel; |
104 | |
} |
105 | |
|
106 | |
private ModelManagementPackage getModelManagementPackage() { |
107 | 1936 | org.omg.uml.UmlPackage umlPackage = modelImpl.getUmlPackage(); |
108 | 1936 | if (umlPackage == null) { |
109 | 0 | return null; |
110 | |
} |
111 | |
try { |
112 | 1936 | return umlPackage.getModelManagement(); |
113 | 0 | } catch (InvalidObjectException e) { |
114 | 0 | return null; |
115 | |
} |
116 | |
} |
117 | |
|
118 | |
@Deprecated |
119 | |
public void setRootModel(Object rootModel) { |
120 | 2904 | if (rootModel != null && !(rootModel instanceof Model)) { |
121 | 0 | throw new IllegalArgumentException( |
122 | |
"The rootModel supplied must be a Model. Got a " |
123 | |
+ rootModel.getClass().getName()); |
124 | |
} |
125 | 2904 | theRootModel = rootModel; |
126 | 2904 | } |
127 | |
|
128 | |
|
129 | |
@Deprecated |
130 | |
public Object getRootModel() { |
131 | 1936 | return theRootModel; |
132 | |
} |
133 | |
|
134 | |
|
135 | |
public ElementImport createElementImport() { |
136 | 0 | ElementImport myElementImport = |
137 | |
getModelManagementPackage().getElementImport().createElementImport(); |
138 | 0 | super.initialize(myElementImport); |
139 | 0 | return myElementImport; |
140 | |
} |
141 | |
|
142 | |
|
143 | |
public ElementImport buildElementImport(Object pack, Object me) { |
144 | 0 | if (pack instanceof UmlPackage && me instanceof ModelElement) { |
145 | 0 | ElementImport ei = createElementImport(); |
146 | 0 | ei.setImportedElement((ModelElement) me); |
147 | 0 | ei.setUmlPackage((UmlPackage) pack); |
148 | 0 | return ei; |
149 | |
} |
150 | 0 | throw new IllegalArgumentException( |
151 | |
"To build an ElementImport we need a " |
152 | |
+ "Package and a ModelElement."); |
153 | |
} |
154 | |
|
155 | |
public UmlPackage createPackage() { |
156 | 0 | UmlPackage myUmlPackage = |
157 | |
getModelManagementPackage().getUmlPackage().createUmlPackage(); |
158 | 0 | super.initialize(myUmlPackage); |
159 | 0 | return myUmlPackage; |
160 | |
} |
161 | |
|
162 | |
public Model createProfile() { |
163 | 14 | Model profile = createModel(); |
164 | |
|
165 | |
|
166 | 14 | Stereotype stereo = |
167 | |
(Stereotype)modelImpl.getExtensionMechanismsFactory() |
168 | |
.buildStereotype("profile", profile); |
169 | 14 | profile.getStereotype().add(stereo); |
170 | 14 | return profile; |
171 | |
} |
172 | |
|
173 | |
public Object buildPackage(String name) { |
174 | 0 | UmlPackage pkg = createPackage(); |
175 | 0 | pkg.setName(name); |
176 | 0 | return pkg; |
177 | |
} |
178 | |
|
179 | |
public Object createSubsystem() { |
180 | 0 | Subsystem mySubsystem = |
181 | |
getModelManagementPackage().getSubsystem().createSubsystem(); |
182 | 0 | super.initialize(mySubsystem); |
183 | 0 | return mySubsystem; |
184 | |
} |
185 | |
|
186 | |
|
187 | |
public Object copyPackage(Object source, Object ns) { |
188 | 0 | if (!(source instanceof UmlPackage)) { |
189 | 0 | throw new IllegalArgumentException("source"); |
190 | |
} |
191 | 0 | if (!(ns instanceof Namespace)) { |
192 | 0 | throw new IllegalArgumentException("namespace"); |
193 | |
} |
194 | |
|
195 | 0 | UmlPackage p = createPackage(); |
196 | 0 | ((Namespace) ns).getOwnedElement().add(p); |
197 | 0 | doCopyPackage((UmlPackage) source, p); |
198 | 0 | return p; |
199 | |
} |
200 | |
|
201 | |
|
202 | |
|
203 | |
|
204 | |
|
205 | |
|
206 | |
|
207 | |
|
208 | |
|
209 | |
private void doCopyPackage(UmlPackage source, UmlPackage target) { |
210 | 0 | ((CoreFactoryMDRImpl) modelImpl.getCoreFactory()) |
211 | |
.doCopyNamespace(source, target); |
212 | 0 | } |
213 | |
|
214 | |
|
215 | |
|
216 | |
|
217 | |
|
218 | |
void deleteElementImport(Object elem) { |
219 | 0 | if (!(elem instanceof ElementImport)) { |
220 | 0 | throw new IllegalArgumentException(); |
221 | |
} |
222 | |
|
223 | 0 | } |
224 | |
|
225 | |
|
226 | |
|
227 | |
|
228 | |
|
229 | |
void deleteModel(Object elem) { |
230 | 0 | if (!(elem instanceof Model)) { |
231 | 0 | throw new IllegalArgumentException(); |
232 | |
} |
233 | |
|
234 | 0 | } |
235 | |
|
236 | |
|
237 | |
|
238 | |
|
239 | |
|
240 | |
void deletePackage(Object elem) { |
241 | 0 | if (!(elem instanceof UmlPackage)) { |
242 | 0 | throw new IllegalArgumentException(); |
243 | |
} |
244 | |
|
245 | 0 | } |
246 | |
|
247 | |
|
248 | |
|
249 | |
|
250 | |
|
251 | |
void deleteSubsystem(Object elem) { |
252 | 0 | if (!(elem instanceof Subsystem)) { |
253 | 0 | throw new IllegalArgumentException(); |
254 | |
} |
255 | |
|
256 | 0 | } |
257 | |
|
258 | |
} |