1
2
3 //
4 // THIS FILE IS AUTOMATICALLY GENERATED!!
5 //
6 // Generated at 2009-08-09 by the VDM++ to JAVA Code Generator
7 // (v8.2.1b - Wed 15-Jul-2009 14:09:22)
8 //
9 // Supported compilers: jdk 1.4/1.5/1.6
10 //
11
12 // ***** VDMTOOLS START Name=HeaderComment KEEP=NO
13 // ***** VDMTOOLS END Name=HeaderComment
14
15 // ***** VDMTOOLS START Name=package KEEP=NO
16 package org.overturetool.umltrans.uml2vdm;
17
18 // ***** VDMTOOLS END Name=package
19
20 // ***** VDMTOOLS START Name=imports KEEP=YES
21
22 import jp.co.csk.vdm.toolbox.VDM.*;
23 import java.util.*;
24 import org.overturetool.ast.itf.*;
25 import org.overturetool.ast.imp.*;
26 import org.overturetool.api.io.*;
27 import org.overturetool.api.io.*;
28 import org.overturetool.api.*;
29 import org.overturetool.api.xml.*;
30 import org.overturetool.umltrans.*;
31 import org.overturetool.umltrans.api.Util;
32 import org.overturetool.umltrans.uml.*;
33 import org.overturetool.umltrans.uml2vdm.*;
34 import org.overturetool.umltrans.vdm2uml.*;
35 // ***** VDMTOOLS END Name=imports
36
37
38
39 public class Xml2UmlModel extends XmlVisitor {
40
41 // ***** VDMTOOLS START Name=vdmComp KEEP=NO
42 static UTIL.VDMCompare vdmComp = new UTIL.VDMCompare();
43 // ***** VDMTOOLS END Name=vdmComp
44
45 // ***** VDMTOOLS START Name=result KEEP=NO
46 public IUmlModel result = null;
47 // ***** VDMTOOLS END Name=result
48
49 // ***** VDMTOOLS START Name=primiticeTypes KEEP=NO
50 private HashSet primiticeTypes = new HashSet();
51 // ***** VDMTOOLS END Name=primiticeTypes
52
53 // ***** VDMTOOLS START Name=classes KEEP=NO
54 private HashSet classes = new HashSet();
55 // ***** VDMTOOLS END Name=classes
56
57 // ***** VDMTOOLS START Name=associations KEEP=NO
58 private HashSet associations = new HashSet();
59 // ***** VDMTOOLS END Name=associations
60
61 // ***** VDMTOOLS START Name=constraints KEEP=NO
62 private HashSet constraints = new HashSet();
63 // ***** VDMTOOLS END Name=constraints
64
65 // ***** VDMTOOLS START Name=classesTypeMap KEEP=NO
66 private HashMap classesTypeMap = new HashMap();
67 // ***** VDMTOOLS END Name=classesTypeMap
68
69 // ***** VDMTOOLS START Name=collaborations KEEP=NO
70 private HashSet collaborations = new HashSet();
71 // ***** VDMTOOLS END Name=collaborations
72
73 // ***** VDMTOOLS START Name=idToclassesMap KEEP=NO
74 private HashMap idToclassesMap = new HashMap();
75 // ***** VDMTOOLS END Name=idToclassesMap
76
77 // ***** VDMTOOLS START Name=idToOperationMap KEEP=NO
78 private HashMap idToOperationMap = new HashMap();
79 // ***** VDMTOOLS END Name=idToOperationMap
80
81 // ***** VDMTOOLS START Name=idToClallEventMap KEEP=NO
82 private HashMap idToClallEventMap = new HashMap();
83 // ***** VDMTOOLS END Name=idToClallEventMap
84
85 // ***** VDMTOOLS START Name=lifeLineMap KEEP=NO
86 private HashMap lifeLineMap = new HashMap();
87 // ***** VDMTOOLS END Name=lifeLineMap
88
89 // ***** VDMTOOLS START Name=mosMap KEEP=NO
90 private HashMap mosMap = new HashMap();
91 // ***** VDMTOOLS END Name=mosMap
92
93 // ***** VDMTOOLS START Name=besMap KEEP=NO
94 private HashMap besMap = new HashMap();
95 // ***** VDMTOOLS END Name=besMap
96
97 // ***** VDMTOOLS START Name=combiMap KEEP=NO
98 private HashMap combiMap = new HashMap();
99 // ***** VDMTOOLS END Name=combiMap
100
101 // ***** VDMTOOLS START Name=log KEEP=NO
102 private StatusLog log = null;
103 // ***** VDMTOOLS END Name=log
104
105
106 // ***** VDMTOOLS START Name=vdm_init_Xml2UmlModel KEEP=NO
107 private void vdm_init_Xml2UmlModel () throws CGException {
108 try {
109
110 result = null;
111 primiticeTypes = new HashSet();
112 primiticeTypes.add(new String("char"));
113 primiticeTypes.add(new String("int"));
114 primiticeTypes.add(new String("bool"));
115 primiticeTypes.add(new String("String"));
116 primiticeTypes.add(new String("unlimitedNatural"));
117 classes = new HashSet();
118 associations = new HashSet();
119 constraints = new HashSet();
120 classesTypeMap = new HashMap();
121 collaborations = new HashSet();
122 idToclassesMap = new HashMap();
123 idToOperationMap = new HashMap();
124 idToClallEventMap = new HashMap();
125 lifeLineMap = new HashMap();
126 mosMap = new HashMap();
127 besMap = new HashMap();
128 combiMap = new HashMap();
129 log = (StatusLog) new StatusLog();
130 }
131 catch (Exception e){
132
133 e.printStackTrace(System.out);
134 System.out.println(e.getMessage());
135 }
136 }
137 // ***** VDMTOOLS END Name=vdm_init_Xml2UmlModel
138
139
140 // ***** VDMTOOLS START Name=Xml2UmlModel KEEP=NO
141 public Xml2UmlModel () throws CGException {
142 vdm_init_Xml2UmlModel();
143 }
144 // ***** VDMTOOLS END Name=Xml2UmlModel
145
146
147 // ***** VDMTOOLS START Name=Xml2UmlModel#1|StatusLog KEEP=NO
148 public Xml2UmlModel (final StatusLog l) throws CGException {
149
150 vdm_init_Xml2UmlModel();
151 log = (StatusLog) UTIL.clone(l);
152 }
153 // ***** VDMTOOLS END Name=Xml2UmlModel#1|StatusLog
154
155
156 // ***** VDMTOOLS START Name=VisitXmlDocument#1|XmlDocument KEEP=NO
157 public void VisitXmlDocument (final XmlDocument doc) throws CGException {
158
159 XmlEntity root = null;
160 Vector unArg_2 = null;
161 XmlEntityList tmpRec_3 = null;
162 tmpRec_3 = doc.entities;
163 unArg_2 = tmpRec_3.entities;
164 root = (XmlEntity) unArg_2.get(0);
165 Vector firstPackageAndRoot = null;
166 Vector var1_5 = null;
167 XmlEntityList tmpRec_6 = null;
168 tmpRec_6 = root.entities;
169 var1_5 = tmpRec_6.entities;
170 Vector var2_8 = null;
171 var2_8 = new Vector();
172 var2_8.add(root);
173 firstPackageAndRoot = (Vector) var1_5.clone();
174 firstPackageAndRoot.addAll(var2_8);
175 XmlEntity model = null;
176 Vector unArg_10 = null;
177 {
178
179 Vector res_l_11 = new Vector();
180 HashSet resBind_s_13 = new HashSet();
181 HashSet riseq_17 = new HashSet();
182 int max_18 = firstPackageAndRoot.size();
183 for (int i_19 = 1; i_19 <= max_18; i_19++)
184 riseq_17.add(new Long(i_19));
185 resBind_s_13 = riseq_17;
186 Vector bind_l_12 = null;
187 bind_l_12 = UTIL.Sort(resBind_s_13);
188 Long i = null;
189 for (Iterator enm_30 = bind_l_12.iterator(); enm_30.hasNext(); ) {
190
191 Long e_15 = UTIL.NumberToLong(enm_30.next());
192 i = e_15;
193 Boolean pred_23 = null;
194 String var1_24 = null;
195 XmlEntity tmpRec_25 = null;
196 if ((1 <= i.intValue()) && (i.intValue() <= firstPackageAndRoot.size()))
197 tmpRec_25 = (XmlEntity) firstPackageAndRoot.get(i.intValue() - 1);
198 else
199 UTIL.RunTime("Run-Time Error:Illegal index");
200 var1_24 = tmpRec_25.name;
201 pred_23 = new Boolean(UTIL.equals(var1_24, new String("uml:Model")));
202 if (pred_23.booleanValue()) {
203
204 XmlEntity reselem_20 = null;
205 if ((1 <= i.intValue()) && (i.intValue() <= firstPackageAndRoot.size()))
206 reselem_20 = (XmlEntity) firstPackageAndRoot.get(i.intValue() - 1);
207 else
208 UTIL.RunTime("Run-Time Error:Illegal index");
209 res_l_11.add(reselem_20);
210 }
211 }
212 unArg_10 = res_l_11;
213 }
214 model = (XmlEntity) unArg_10.get(0);
215 XmlEntity vdm_package = null;
216 Vector unArg_31 = null;
217 {
218
219 Vector res_l_32 = new Vector();
220 HashSet resBind_s_34 = new HashSet();
221 Vector unArg_37 = null;
222 XmlEntityList tmpRec_38 = null;
223 tmpRec_38 = model.entities;
224 unArg_37 = tmpRec_38.entities;
225 HashSet riseq_40 = new HashSet();
226 int max_41 = unArg_37.size();
227 for (int i_42 = 1; i_42 <= max_41; i_42++)
228 riseq_40.add(new Long(i_42));
229 resBind_s_34 = riseq_40;
230 Vector bind_l_33 = null;
231 bind_l_33 = UTIL.Sort(resBind_s_34);
232 Long i = null;
233 for (Iterator enm_56 = bind_l_33.iterator(); enm_56.hasNext(); ) {
234
235 Long e_36 = UTIL.NumberToLong(enm_56.next());
236 i = e_36;
237 Boolean pred_48 = null;
238 XmlEntity par_49 = null;
239 Vector tmp_l_50 = null;
240 XmlEntityList tmpRec_51 = null;
241 tmpRec_51 = model.entities;
242 tmp_l_50 = tmpRec_51.entities;
243 if ((1 <= i.intValue()) && (i.intValue() <= tmp_l_50.size()))
244 par_49 = (XmlEntity) tmp_l_50.get(i.intValue() - 1);
245 else
246 UTIL.RunTime("Run-Time Error:Illegal index");
247 pred_48 = isAttributeType((XmlEntity) par_49, new String("uml:Package"));
248 if (pred_48.booleanValue()) {
249
250 XmlEntity reselem_43 = null;
251 Vector tmp_l_44 = null;
252 XmlEntityList tmpRec_45 = null;
253 tmpRec_45 = model.entities;
254 tmp_l_44 = tmpRec_45.entities;
255 if ((1 <= i.intValue()) && (i.intValue() <= tmp_l_44.size()))
256 reselem_43 = (XmlEntity) tmp_l_44.get(i.intValue() - 1);
257 else
258 UTIL.RunTime("Run-Time Error:Illegal index");
259 res_l_32.add(reselem_43);
260 }
261 }
262 unArg_31 = res_l_32;
263 }
264 vdm_package = (XmlEntity) unArg_31.get(0);
265 {
266
267 Vector pes = null;
268 XmlEntityList tmpRec_59 = null;
269 tmpRec_59 = vdm_package.entities;
270 pes = tmpRec_59.entities;
271 {
272
273 HashMap rhs_61 = new HashMap();
274 HashMap modmap_62 = new HashMap();
275 HashMap res_m_65 = new HashMap();
276 {
277
278 HashSet e_set_84 = new HashSet();
279 HashSet riseq_86 = new HashSet();
280 int max_87 = pes.size();
281 for (int i_88 = 1; i_88 <= max_87; i_88++)
282 riseq_86.add(new Long(i_88));
283 e_set_84 = riseq_86;
284 Long i = null;
285 {
286 for (Iterator enm_90 = e_set_84.iterator(); enm_90.hasNext(); ) {
287
288 Long elem_89 = UTIL.NumberToLong(enm_90.next());
289 i = elem_89;
290 Boolean pred_78 = null;
291 XmlEntity par_79 = null;
292 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
293 par_79 = (XmlEntity) pes.get(i.intValue() - 1);
294 else
295 UTIL.RunTime("Run-Time Error:Illegal index");
296 pred_78 = isAttributeType((XmlEntity) par_79, new String("uml:Class"));
297 if (pred_78.booleanValue()) {
298
299 String md_66 = null;
300 XmlAttribute tmpRec_67 = null;
301 XmlEntity par_68 = null;
302 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
303 par_68 = (XmlEntity) pes.get(i.intValue() - 1);
304 else
305 UTIL.RunTime("Run-Time Error:Illegal index");
306 tmpRec_67 = (XmlAttribute) getAttribute((XmlEntity) par_68, new String("xmi:id"));
307 md_66 = tmpRec_67.val;
308 String mr_72 = null;
309 XmlAttribute tmpRec_73 = null;
310 XmlEntity par_74 = null;
311 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
312 par_74 = (XmlEntity) pes.get(i.intValue() - 1);
313 else
314 UTIL.RunTime("Run-Time Error:Illegal index");
315 tmpRec_73 = (XmlAttribute) getAttribute((XmlEntity) par_74, new String("name"));
316 mr_72 = tmpRec_73.val;
317 res_m_65.put(md_66, mr_72);
318 }
319 }
320 }
321 }
322 modmap_62 = res_m_65;
323 rhs_61 = new HashMap(classesTypeMap);
324 rhs_61.putAll(modmap_62);
325 classesTypeMap = (HashMap) UTIL.clone(rhs_61);
326 HashSet rhs_91 = new HashSet();
327 HashSet var2_93 = new HashSet();
328 HashSet res_s_94 = new HashSet();
329 {
330
331 HashSet e_set_114 = new HashSet();
332 HashSet riseq_116 = new HashSet();
333 int max_117 = pes.size();
334 for (int i_118 = 1; i_118 <= max_117; i_118++)
335 riseq_116.add(new Long(i_118));
336 e_set_114 = riseq_116;
337 Long i = null;
338 {
339 for (Iterator enm_120 = e_set_114.iterator(); enm_120.hasNext(); ) {
340
341 Long elem_119 = UTIL.NumberToLong(enm_120.next());
342 i = elem_119;
343 Boolean pred_99 = null;
344 Boolean var1_100 = null;
345 XmlEntity par_101 = null;
346 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
347 par_101 = (XmlEntity) pes.get(i.intValue() - 1);
348 else
349 UTIL.RunTime("Run-Time Error:Illegal index");
350 var1_100 = isAttributeType((XmlEntity) par_101, new String("uml:Class"));
351 {
352 if ((pred_99 = var1_100).booleanValue()) {
353
354 Boolean var2_105 = null;
355 String var1_106 = null;
356 XmlAttribute tmpRec_107 = null;
357 XmlEntity par_108 = null;
358 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
359 par_108 = (XmlEntity) pes.get(i.intValue() - 1);
360 else
361 UTIL.RunTime("Run-Time Error:Illegal index");
362 tmpRec_107 = (XmlAttribute) getAttribute((XmlEntity) par_108, new String("name"));
363 var1_106 = tmpRec_107.val;
364 var2_105 = new Boolean(!primiticeTypes.contains(var1_106));
365 pred_99 = var2_105;
366 }
367 }
368 if (pred_99.booleanValue()) {
369
370 IUmlClass res_s_95 = null;
371 XmlEntity par_96 = null;
372 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
373 par_96 = (XmlEntity) pes.get(i.intValue() - 1);
374 else
375 UTIL.RunTime("Run-Time Error:Illegal index");
376 res_s_95 = (IUmlClass) exstractClass((XmlEntity) par_96);
377 res_s_94.add(res_s_95);
378 }
379 }
380 }
381 }
382 var2_93 = res_s_94;
383 rhs_91 = (HashSet) classes.clone();
384 rhs_91.addAll(var2_93);
385 classes = (HashSet) UTIL.clone(rhs_91);
386 HashSet rhs_121 = new HashSet();
387 HashSet var2_123 = new HashSet();
388 HashSet res_s_124 = new HashSet();
389 {
390
391 HashSet e_set_135 = new HashSet();
392 HashSet riseq_137 = new HashSet();
393 int max_138 = pes.size();
394 for (int i_139 = 1; i_139 <= max_138; i_139++)
395 riseq_137.add(new Long(i_139));
396 e_set_135 = riseq_137;
397 Long i = null;
398 {
399 for (Iterator enm_141 = e_set_135.iterator(); enm_141.hasNext(); ) {
400
401 Long elem_140 = UTIL.NumberToLong(enm_141.next());
402 i = elem_140;
403 Boolean pred_129 = null;
404 XmlEntity par_130 = null;
405 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
406 par_130 = (XmlEntity) pes.get(i.intValue() - 1);
407 else
408 UTIL.RunTime("Run-Time Error:Illegal index");
409 pred_129 = isAttributeType((XmlEntity) par_130, new String("uml:Association"));
410 if (pred_129.booleanValue()) {
411
412 IUmlAssociation res_s_125 = null;
413 XmlEntity par_126 = null;
414 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
415 par_126 = (XmlEntity) pes.get(i.intValue() - 1);
416 else
417 UTIL.RunTime("Run-Time Error:Illegal index");
418 res_s_125 = (IUmlAssociation) build_uAssociation((XmlEntity) par_126);
419 res_s_124.add(res_s_125);
420 }
421 }
422 }
423 }
424 var2_123 = res_s_124;
425 rhs_121 = (HashSet) associations.clone();
426 rhs_121.addAll(var2_123);
427 associations = (HashSet) UTIL.clone(rhs_121);
428 HashSet rhs_142 = new HashSet();
429 HashSet var2_144 = new HashSet();
430 HashSet res_s_145 = new HashSet();
431 {
432
433 HashSet e_set_156 = new HashSet();
434 HashSet riseq_158 = new HashSet();
435 int max_159 = pes.size();
436 for (int i_160 = 1; i_160 <= max_159; i_160++)
437 riseq_158.add(new Long(i_160));
438 e_set_156 = riseq_158;
439 Long i = null;
440 {
441 for (Iterator enm_162 = e_set_156.iterator(); enm_162.hasNext(); ) {
442
443 Long elem_161 = UTIL.NumberToLong(enm_162.next());
444 i = elem_161;
445 Boolean pred_150 = null;
446 XmlEntity par_151 = null;
447 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
448 par_151 = (XmlEntity) pes.get(i.intValue() - 1);
449 else
450 UTIL.RunTime("Run-Time Error:Illegal index");
451 pred_150 = isAttributeType((XmlEntity) par_151, new String("uml:Constraint"));
452 if (pred_150.booleanValue()) {
453
454 IUmlConstraint res_s_146 = null;
455 XmlEntity par_147 = null;
456 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
457 par_147 = (XmlEntity) pes.get(i.intValue() - 1);
458 else
459 UTIL.RunTime("Run-Time Error:Illegal index");
460 res_s_146 = (IUmlConstraint) build_uConstraint((XmlEntity) par_147);
461 res_s_145.add(res_s_146);
462 }
463 }
464 }
465 }
466 var2_144 = res_s_145;
467 rhs_142 = (HashSet) constraints.clone();
468 rhs_142.addAll(var2_144);
469 constraints = (HashSet) UTIL.clone(rhs_142);
470 HashMap rhs_163 = new HashMap();
471 HashSet par_164 = new HashSet();
472 HashSet res_s_165 = new HashSet();
473 {
474
475 HashSet e_set_175 = new HashSet();
476 HashSet riseq_177 = new HashSet();
477 int max_178 = pes.size();
478 for (int i_179 = 1; i_179 <= max_178; i_179++)
479 riseq_177.add(new Long(i_179));
480 e_set_175 = riseq_177;
481 Long i = null;
482 {
483 for (Iterator enm_181 = e_set_175.iterator(); enm_181.hasNext(); ) {
484
485 Long elem_180 = UTIL.NumberToLong(enm_181.next());
486 i = elem_180;
487 Boolean pred_169 = null;
488 XmlEntity par_170 = null;
489 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
490 par_170 = (XmlEntity) pes.get(i.intValue() - 1);
491 else
492 UTIL.RunTime("Run-Time Error:Illegal index");
493 pred_169 = isAttributeType((XmlEntity) par_170, new String("uml:CallEvent"));
494 if (pred_169.booleanValue()) {
495
496 XmlEntity res_s_166 = null;
497 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
498 res_s_166 = (XmlEntity) pes.get(i.intValue() - 1);
499 else
500 UTIL.RunTime("Run-Time Error:Illegal index");
501 res_s_165.add(res_s_166);
502 }
503 }
504 }
505 }
506 par_164 = res_s_165;
507 rhs_163 = buildCallEventMap(par_164);
508 idToClallEventMap = (HashMap) UTIL.clone(rhs_163);
509 HashSet rhs_182 = new HashSet();
510 HashSet var2_184 = new HashSet();
511 HashSet res_s_185 = new HashSet();
512 {
513
514 HashSet e_set_196 = new HashSet();
515 HashSet riseq_198 = new HashSet();
516 int max_199 = pes.size();
517 for (int i_200 = 1; i_200 <= max_199; i_200++)
518 riseq_198.add(new Long(i_200));
519 e_set_196 = riseq_198;
520 Long i = null;
521 {
522 for (Iterator enm_202 = e_set_196.iterator(); enm_202.hasNext(); ) {
523
524 Long elem_201 = UTIL.NumberToLong(enm_202.next());
525 i = elem_201;
526 Boolean pred_190 = null;
527 XmlEntity par_191 = null;
528 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
529 par_191 = (XmlEntity) pes.get(i.intValue() - 1);
530 else
531 UTIL.RunTime("Run-Time Error:Illegal index");
532 pred_190 = isAttributeType((XmlEntity) par_191, new String("uml:Collaboration"));
533 if (pred_190.booleanValue()) {
534
535 IUmlCollaboration res_s_186 = null;
536 XmlEntity par_187 = null;
537 if ((1 <= i.intValue()) && (i.intValue() <= pes.size()))
538 par_187 = (XmlEntity) pes.get(i.intValue() - 1);
539 else
540 UTIL.RunTime("Run-Time Error:Illegal index");
541 res_s_186 = (IUmlCollaboration) build_uCollobration((XmlEntity) par_187);
542 res_s_185.add(res_s_186);
543 }
544 }
545 }
546 }
547 var2_184 = res_s_185;
548 rhs_182 = (HashSet) collaborations.clone();
549 rhs_182.addAll(var2_184);
550 collaborations = (HashSet) UTIL.clone(rhs_182);
551 }
552 }
553 UmlModel rhs_203 = null;
554 String arg_204 = null;
555 arg_204 = ((XmlAttribute) getAttribute((XmlEntity) vdm_package, new String("name"))).val;
556 HashSet arg_205 = new HashSet();
557 HashSet var1_209 = new HashSet();
558 HashSet var1_210 = new HashSet();
559 var1_210 = (HashSet) classes.clone();
560 var1_210.addAll(associations);
561 var1_209 = (HashSet) var1_210.clone();
562 var1_209.addAll(constraints);
563 arg_205 = (HashSet) var1_209.clone();
564 arg_205.addAll(collaborations);
565 rhs_203 = new UmlModel(arg_204, arg_205);
566 result = (IUmlModel) UTIL.clone(rhs_203);
567 }
568 // ***** VDMTOOLS END Name=VisitXmlDocument#1|XmlDocument
569
570
571 // ***** VDMTOOLS START Name=exstractClass#1|XmlEntity KEEP=NO
572 private IUmlClass exstractClass (final XmlEntity e) throws CGException {
573
574 String name = null;
575 name = ((XmlAttribute) getAttribute((XmlEntity) e, new String("name"))).val;
576 HashSet dBlocks = build_udefBlock((XmlEntity) e, name);
577 Boolean vdm_abstract = null;
578 if (hasAttribute((XmlEntity) e, new String("isAbstract")).booleanValue()) {
579
580 String par_15 = null;
581 par_15 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("isAbstract"))).val;
582 vdm_abstract = (Boolean) StdLib.StringToBool(par_15);
583 }
584 else
585 vdm_abstract = new Boolean(false);
586 Vector supers = null;
587 {
588
589 Vector eg = null;
590 XmlEntityList tmpRec_22 = null;
591 tmpRec_22 = e.entities;
592 eg = tmpRec_22.entities;
593 {
594
595 Vector res_l_24 = new Vector();
596 HashSet resBind_s_26 = new HashSet();
597 HashSet riseq_30 = new HashSet();
598 int max_31 = eg.size();
599 for (int i_32 = 1; i_32 <= max_31; i_32++)
600 riseq_30.add(new Long(i_32));
601 resBind_s_26 = riseq_30;
602 Vector bind_l_25 = null;
603 bind_l_25 = UTIL.Sort(resBind_s_26);
604 Long i = null;
605 for (Iterator enm_43 = bind_l_25.iterator(); enm_43.hasNext(); ) {
606
607 Long e_28 = UTIL.NumberToLong(enm_43.next());
608 i = e_28;
609 Boolean pred_37 = null;
610 XmlEntity par_38 = null;
611 if ((1 <= i.intValue()) && (i.intValue() <= eg.size()))
612 par_38 = (XmlEntity) eg.get(i.intValue() - 1);
613 else
614 UTIL.RunTime("Run-Time Error:Illegal index");
615 pred_37 = isAttributeType((XmlEntity) par_38, new String("uml:Generalization"));
616 if (pred_37.booleanValue()) {
617
618 IUmlClassNameType reselem_33 = null;
619 XmlEntity par_34 = null;
620 if ((1 <= i.intValue()) && (i.intValue() <= eg.size()))
621 par_34 = (XmlEntity) eg.get(i.intValue() - 1);
622 else
623 UTIL.RunTime("Run-Time Error:Illegal index");
624 reselem_33 = (IUmlClassNameType) exstractGeneralization((XmlEntity) par_34);
625 res_l_24.add(reselem_33);
626 }
627 }
628 supers = res_l_24;
629 }
630 }
631 UmlVisibilityKind tmpVal_44 = null;
632 tmpVal_44 = (UmlVisibilityKind) new UmlVisibilityKind(UmlVisibilityKindQuotes.IQPUBLIC);
633 IUmlVisibilityKind visibility = null;
634 visibility = (IUmlVisibilityKind) tmpVal_44;
635 Boolean isStatic = new Boolean(false);
636 Boolean active = null;
637 if (hasAttribute((XmlEntity) e, new String("isActive")).booleanValue()) {
638
639 XmlAttribute a = (XmlAttribute) (XmlAttribute) getAttribute((XmlEntity) e, new String("isActive"));
640 if ((!UTIL.equals(a, null))) {
641
642 String par_60 = null;
643 par_60 = a.val;
644 active = (Boolean) StdLib.StringToBool(par_60);
645 }
646 else
647 active = new Boolean(false);
648 }
649 else
650 active = new Boolean(false);
651 IUmlTemplateSignature template = null;
652 String id = null;
653 id = ((XmlAttribute) getAttribute((XmlEntity) e, new String("xmi:id"))).val;
654 IUmlClass cls = (IUmlClass) new UmlClass(name, dBlocks, vdm_abstract, supers, visibility, isStatic, active, template);
655 {
656
657 idToclassesMap.put(id, cls);
658 log.addNewClassInfo(name, id);
659 return (IUmlClass) cls;
660 }
661 }
662 // ***** VDMTOOLS END Name=exstractClass#1|XmlEntity
663
664
665 // ***** VDMTOOLS START Name=exstractGeneralization#1|XmlEntity KEEP=NO
666 private IUmlClassNameType exstractGeneralization (final XmlEntity e) throws CGException {
667
668 String vdm_super = null;
669 vdm_super = ((XmlAttribute) getAttribute((XmlEntity) e, new String("general"))).val;
670 return (IUmlClassNameType) new UmlClassNameType(UTIL.ConvertToString(classesTypeMap.get(vdm_super)));
671 }
672 // ***** VDMTOOLS END Name=exstractGeneralization#1|XmlEntity
673
674
675 // ***** VDMTOOLS START Name=build_udefBlock#2|XmlEntity|String KEEP=NO
676 private HashSet build_udefBlock (final XmlEntity e, final String name) throws CGException {
677
678 Vector eList = null;
679 XmlEntityList tmpRec_5 = null;
680 tmpRec_5 = e.entities;
681 eList = tmpRec_5.entities;
682 HashSet tmpVal_7 = new HashSet();
683 HashSet res_s_8 = new HashSet();
684 {
685
686 HashSet e_set_20 = new HashSet();
687 HashSet riseq_22 = new HashSet();
688 int max_23 = eList.size();
689 for (int i_24 = 1; i_24 <= max_23; i_24++)
690 riseq_22.add(new Long(i_24));
691 e_set_20 = riseq_22;
692 Long i = null;
693 {
694 for (Iterator enm_26 = e_set_20.iterator(); enm_26.hasNext(); ) {
695
696 Long elem_25 = UTIL.NumberToLong(enm_26.next());
697 i = elem_25;
698 Boolean pred_14 = null;
699 XmlEntity par_15 = null;
700 if ((1 <= i.intValue()) && (i.intValue() <= eList.size()))
701 par_15 = (XmlEntity) eList.get(i.intValue() - 1);
702 else
703 UTIL.RunTime("Run-Time Error:Illegal index");
704 pred_14 = isAttributeType((XmlEntity) par_15, new String("uml:Property"));
705 if (pred_14.booleanValue()) {
706
707 IUmlProperty res_s_9 = null;
708 XmlEntity par_10 = null;
709 if ((1 <= i.intValue()) && (i.intValue() <= eList.size()))
710 par_10 = (XmlEntity) eList.get(i.intValue() - 1);
711 else
712 UTIL.RunTime("Run-Time Error:Illegal index");
713 res_s_9 = (IUmlProperty) build_uProperty((XmlEntity) par_10, name);
714 res_s_8.add(res_s_9);
715 }
716 }
717 }
718 }
719 tmpVal_7 = res_s_8;
720 HashSet props = new HashSet();
721 props = tmpVal_7;
722 HashSet ops = new HashSet();
723 HashSet res_s_28 = new HashSet();
724 {
725
726 HashSet e1_set_36 = new HashSet(eList);
727 XmlEntity p = null;
728 {
729 for (Iterator enm_38 = e1_set_36.iterator(); enm_38.hasNext(); ) {
730
731 XmlEntity elem_37 = (XmlEntity) enm_38.next();
732 p = (XmlEntity) elem_37;
733 if (isAttributeType((XmlEntity) p, new String("uml:Operation")).booleanValue()) {
734 res_s_28.add((IUmlOperation) build_uOperation((XmlEntity) p));
735 }
736 }
737 }
738 }
739 ops = res_s_28;
740 HashSet rexpr_39 = new HashSet();
741 HashSet var1_40 = new HashSet();
742 var1_40 = new HashSet();
743 var1_40.add(new UmlOwnedProperties(props));
744 HashSet var2_43 = new HashSet();
745 var2_43 = new HashSet();
746 var2_43.add(new UmlOwnedOperations(ops));
747 rexpr_39 = (HashSet) var1_40.clone();
748 rexpr_39.addAll(var2_43);
749 return rexpr_39;
750 }
751 // ***** VDMTOOLS END Name=build_udefBlock#2|XmlEntity|String
752
753
754 // ***** VDMTOOLS START Name=build_uProperty#2|XmlEntity|String KEEP=NO
755 private IUmlProperty build_uProperty (final XmlEntity e, final String ownerClass) throws CGException {
756
757 String name = null;
758 name = ((XmlAttribute) getAttribute((XmlEntity) e, new String("name"))).val;
759 Object tmpVal_8 = null;
760 if (hasAttribute((XmlEntity) e, new String("visibility")).booleanValue())
761 tmpVal_8 = GetVisibility((XmlAttribute) (XmlAttribute) getAttribute((XmlEntity) e, new String("visibility")));
762 else
763 tmpVal_8 = new UmlVisibilityKind(UmlVisibilityKindQuotes.IQPRIVATE);
764 IUmlVisibilityKind visibility = null;
765 visibility = (IUmlVisibilityKind) tmpVal_8;
766 IUmlMultiplicityElement multiplicity = (IUmlMultiplicityElement) (IUmlMultiplicityElement) getMultiplicity((XmlEntity) e);
767 IUmlType tmpVal_19 = null;
768 tmpVal_19 = (IUmlType) (IUmlType) lookUpType((XmlEntity) e);
769 IUmlType type = null;
770 type = (IUmlType) tmpVal_19;
771 Boolean isReadOnly = null;
772 if (hasAttribute((XmlEntity) e, new String("isReadOnly")).booleanValue()) {
773
774 String par_26 = null;
775 par_26 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("isReadOnly"))).val;
776 isReadOnly = (Boolean) StdLib.StringToBool(par_26);
777 }
778 else
779 isReadOnly = new Boolean(false);
780 IUmlValueSpecification vdm_default = null;
781 {
782
783 HashSet dValue = new HashSet();
784 HashSet res_s_33 = new HashSet();
785 {
786
787 Vector e_set_40 = null;
788 XmlEntityList tmpRec_41 = null;
789 tmpRec_41 = e.entities;
790 e_set_40 = tmpRec_41.entities;
791 XmlEntity el = null;
792 {
793 for (Iterator enm_44 = e_set_40.iterator(); enm_44.hasNext(); ) {
794
795 XmlEntity elem_43 = (XmlEntity) enm_44.next();
796 el = (XmlEntity) elem_43;
797 Boolean pred_35 = null;
798 String var1_36 = null;
799 var1_36 = el.name;
800 pred_35 = new Boolean(UTIL.equals(var1_36, new String("defaultValue")));
801 if (pred_35.booleanValue()) {
802 res_s_33.add(el);
803 }
804 }
805 }
806 }
807 dValue = res_s_33;
808 if (((new Long(dValue.size()).intValue()) > (new Long(0).intValue()))) {
809
810 XmlEntity par_50 = null;
811 {
812
813 HashSet tmpSet_51 = new HashSet();
814 tmpSet_51 = dValue;
815 XmlEntity d = null;
816 boolean succ_53 = false;
817 for (Iterator enm_55 = tmpSet_51.iterator(); enm_55.hasNext() && !succ_53; ) {
818
819 XmlEntity tmpElem_54 = (XmlEntity) enm_55.next();
820 succ_53 = true;
821 d = (XmlEntity) tmpElem_54;
822 }
823 if (!succ_53)
824 UTIL.RunTime("Run-Time Error:The binding environment was empty");
825 par_50 = (XmlEntity) d;
826 }
827 vdm_default = (IUmlValueSpecification) getDefaultValue((XmlEntity) par_50);
828 }
829 else
830 vdm_default = null;
831 }
832 Boolean isComposite = new Boolean(false);
833 Boolean isDerived = new Boolean(false);
834 Boolean isStatic = new Boolean(false);
835 IUmlType qualifier = null;
836 return (IUmlProperty) new UmlProperty(name, visibility, multiplicity, type, isReadOnly, vdm_default, isComposite, isDerived, isStatic, ownerClass, qualifier);
837 }
838 // ***** VDMTOOLS END Name=build_uProperty#2|XmlEntity|String
839
840
841 // ***** VDMTOOLS START Name=getDefaultValue#1|XmlEntity KEEP=NO
842 private IUmlValueSpecification getDefaultValue (final XmlEntity e) throws CGException {
843
844 String val = null;
845 val = ((XmlAttribute) getAttribute((XmlEntity) e, new String("value"))).val;
846 String typ = null;
847 typ = ((XmlAttribute) getAttribute((XmlEntity) e, new String("xmi:type"))).val;
848 Object rexpr_11 = null;
849 boolean succ_12 = true;
850 {
851
852 succ_12 = true;
853 if (!UTIL.equals(typ, new String("uml:LiteralString")))
854 succ_12 = false;
855 if (succ_12)
856 rexpr_11 = new UmlLiteralString(val);
857 }
858 if (!succ_12) {
859
860 succ_12 = true;
861 if (!UTIL.equals(typ, new String("uml:LiteralInteger")))
862 succ_12 = false;
863 if (succ_12) {
864
865 Long arg_18 = null;
866 arg_18 = UTIL.NumberToLong(StdLib.StringToInt(val));
867 rexpr_11 = new UmlLiteralInteger(arg_18);
868 }
869 }
870 if (!succ_12)
871 rexpr_11 = null;
872 return (IUmlValueSpecification) rexpr_11;
873 }
874 // ***** VDMTOOLS END Name=getDefaultValue#1|XmlEntity
875
876
877 // ***** VDMTOOLS START Name=getMultiplicity#1|XmlEntity KEEP=NO
878 private IUmlMultiplicityElement getMultiplicity (final XmlEntity e) throws CGException {
879
880 Vector eList = null;
881 XmlEntityList tmpRec_4 = null;
882 tmpRec_4 = e.entities;
883 eList = tmpRec_4.entities;
884 HashSet lowerSet = new HashSet();
885 HashSet res_s_7 = new HashSet();
886 {
887
888 HashSet e1_set_22 = new HashSet(eList);
889 XmlEntity el = null;
890 {
891 for (Iterator enm_24 = e1_set_22.iterator(); enm_24.hasNext(); ) {
892
893 XmlEntity elem_23 = (XmlEntity) enm_24.next();
894 el = (XmlEntity) elem_23;
895 Boolean pred_12 = null;
896 Boolean var1_13 = null;
897 String var1_14 = null;
898 var1_14 = el.name;
899 var1_13 = new Boolean(UTIL.equals(var1_14, new String("lowerValue")));
900 {
901 if ((pred_12 = var1_13).booleanValue())
902 pred_12 = hasAttribute((XmlEntity) e, new String("value"));
903 }
904 if (pred_12.booleanValue()) {
905
906 String res_s_8 = null;
907 res_s_8 = ((XmlAttribute) getAttribute((XmlEntity) el, new String("value"))).val;
908 res_s_7.add(res_s_8);
909 }
910 }
911 }
912 }
913 lowerSet = res_s_7;
914 HashSet upperSet = new HashSet();
915 HashSet res_s_26 = new HashSet();
916 {
917
918 HashSet e1_set_41 = new HashSet(eList);
919 XmlEntity el = null;
920 {
921 for (Iterator enm_43 = e1_set_41.iterator(); enm_43.hasNext(); ) {
922
923 XmlEntity elem_42 = (XmlEntity) enm_43.next();
924 el = (XmlEntity) elem_42;
925 Boolean pred_31 = null;
926 Boolean var1_32 = null;
927 String var1_33 = null;
928 var1_33 = el.name;
929 var1_32 = new Boolean(UTIL.equals(var1_33, new String("upperValue")));
930 {
931 if ((pred_31 = var1_32).booleanValue())
932 pred_31 = hasAttribute((XmlEntity) e, new String("value"));
933 }
934 if (pred_31.booleanValue()) {
935
936 String res_s_27 = null;
937 res_s_27 = ((XmlAttribute) getAttribute((XmlEntity) el, new String("value"))).val;
938 res_s_26.add(res_s_27);
939 }
940 }
941 }
942 }
943 upperSet = res_s_26;
944 Boolean cond_44 = null;
945 {
946 if ((cond_44 = new Boolean(new Long(upperSet.size()).intValue() == new Long(0).intValue())).booleanValue())
947 cond_44 = new Boolean(new Long(lowerSet.size()).intValue() == new Long(0).intValue());
948 }
949 if (cond_44.booleanValue())
950 return null;
951 else {
952
953 Long lower = null;
954 if ((new Long(lowerSet.size()).intValue() == new Long(0).intValue()))
955 lower = new Long(0);
956 else {
957
958 HashSet tmpSet_60 = new HashSet();
959 tmpSet_60 = lowerSet;
960 String p = null;
961 boolean succ_62 = false;
962 for (Iterator enm_64 = tmpSet_60.iterator(); enm_64.hasNext() && !succ_62; ) {
963
964 String tmpElem_63 = UTIL.ConvertToString(enm_64.next());
965 succ_62 = true;
966 p = tmpElem_63;
967 }
968 if (!succ_62)
969 UTIL.RunTime("Run-Time Error:The binding environment was empty");
970 lower = UTIL.NumberToLong(StdLib.StringToInt(p));
971 }
972 Long upper = null;
973 if ((new Long(upperSet.size()).intValue() == new Long(0).intValue()))
974 upper = null;
975 else {
976
977 HashSet tmpSet_72 = new HashSet();
978 tmpSet_72 = upperSet;
979 String p = null;
980 boolean succ_74 = false;
981 for (Iterator enm_76 = tmpSet_72.iterator(); enm_76.hasNext() && !succ_74; ) {
982
983 String tmpElem_75 = UTIL.ConvertToString(enm_76.next());
984 succ_74 = true;
985 p = tmpElem_75;
986 }
987 if (!succ_74)
988 UTIL.RunTime("Run-Time Error:The binding environment was empty");
989 upper = UTIL.NumberToLong(StdLib.StringToInt(p));
990 }
991 return (IUmlMultiplicityElement) new UmlMultiplicityElement(new Boolean(false), new Boolean(false), lower, upper);
992 }
993 }
994 // ***** VDMTOOLS END Name=getMultiplicity#1|XmlEntity
995
996
997 // ***** VDMTOOLS START Name=build_uOperation#1|XmlEntity KEEP=NO
998 private IUmlOperation build_uOperation (final XmlEntity e) throws CGException {
999
1000 String tmpVal_3 = null;
1001 tmpVal_3 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("name"))).val;
1002 String name = null;
1003 name = tmpVal_3;
1004 IUmlVisibilityKind tmpVal_7 = null;
1005 tmpVal_7 = (IUmlVisibilityKind) (IUmlVisibilityKind) GetVisibility((XmlAttribute) (XmlAttribute) getAttribute((XmlEntity) e, new String("visibility")));
1006 IUmlVisibilityKind visibility = null;
1007 visibility = (IUmlVisibilityKind) tmpVal_7;
1008 IUmlMultiplicityElement multiplicity = (IUmlMultiplicityElement) new UmlMultiplicityElement(new Boolean(false), new Boolean(false), new Long(0), new Long(0));
1009 Boolean isQuery = null;
1010 if (hasAttribute((XmlEntity) e, new String("isQuery")).booleanValue()) {
1011
1012 String par_21 = null;
1013 par_21 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("isQuery"))).val;
1014 isQuery = (Boolean) StdLib.StringToBool(par_21);
1015 }
1016 else
1017 isQuery = new Boolean(false);
1018 Object tmpVal_25 = null;
1019 tmpVal_25 = null;
1020 IUmlType type = null;
1021 type = (IUmlType) tmpVal_25;
1022 Boolean isStatic = null;
1023 if (hasAttribute((XmlEntity) e, new String("isStatic")).booleanValue()) {
1024
1025 String par_31 = null;
1026 par_31 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("isStatic"))).val;
1027 isStatic = (Boolean) StdLib.StringToBool(par_31);
1028 }
1029 else
1030 isStatic = new Boolean(false);
1031 String id = null;
1032 id = ((XmlAttribute) getAttribute((XmlEntity) e, new String("xmi:id"))).val;
1033 Vector params = CreateOperstionParameters((XmlEntity) e);
1034 UmlParameters parameters = null;
1035 if ((UTIL.equals(params, null)))
1036 parameters = null;
1037 else
1038 parameters = (UmlParameters) new UmlParameters(params);
1039 IUmlOperation operation = (IUmlOperation) new UmlOperation(name, visibility, multiplicity, isQuery, type, isStatic, parameters);
1040 {
1041
1042 idToOperationMap.put(id, operation);
1043 return (IUmlOperation) operation;
1044 }
1045 }
1046 // ***** VDMTOOLS END Name=build_uOperation#1|XmlEntity
1047
1048
1049 // ***** VDMTOOLS START Name=CreateOperstionParameters#1|XmlEntity KEEP=NO
1050 protected Vector CreateOperstionParameters (final XmlEntity e) throws CGException {
1051
1052 Vector tmpVal_3 = null;
1053 XmlEntityList tmpRec_4 = null;
1054 tmpRec_4 = e.entities;
1055 tmpVal_3 = tmpRec_4.entities;
1056 Vector elist = null;
1057 elist = tmpVal_3;
1058 Vector tmpVal_6 = null;
1059 {
1060
1061 Vector res_l_7 = new Vector();
1062 HashSet resBind_s_9 = new HashSet();
1063 HashSet riseq_13 = new HashSet();
1064 int max_14 = elist.size();
1065 for (int i_15 = 1; i_15 <= max_14; i_15++)
1066 riseq_13.add(new Long(i_15));
1067 resBind_s_9 = riseq_13;
1068 Vector bind_l_8 = null;
1069 bind_l_8 = UTIL.Sort(resBind_s_9);
1070 Long i = null;
1071 for (Iterator enm_47 = bind_l_8.iterator(); enm_47.hasNext(); ) {
1072
1073 Long e_11 = UTIL.NumberToLong(enm_47.next());
1074 i = e_11;
1075 Boolean pred_40 = null;
1076 String var1_41 = null;
1077 XmlEntity tmpRec_42 = null;
1078 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
1079 tmpRec_42 = (XmlEntity) elist.get(i.intValue() - 1);
1080 else
1081 UTIL.RunTime("Run-Time Error:Illegal index");
1082 var1_41 = tmpRec_42.name;
1083 pred_40 = new Boolean(UTIL.equals(var1_41, new String("ownedParameter")));
1084 if (pred_40.booleanValue()) {
1085
1086 UmlParameter reselem_16 = null;
1087 String arg_17 = null;
1088 XmlAttribute tmpRec_22 = null;
1089 XmlEntity par_23 = null;
1090 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
1091 par_23 = (XmlEntity) elist.get(i.intValue() - 1);
1092 else
1093 UTIL.RunTime("Run-Time Error:Illegal index");
1094 tmpRec_22 = (XmlAttribute) getAttribute((XmlEntity) par_23, new String("name"));
1095 arg_17 = tmpRec_22.val;
1096 IUmlType arg_18 = null;
1097 XmlEntity par_27 = null;
1098 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
1099 par_27 = (XmlEntity) elist.get(i.intValue() - 1);
1100 else
1101 UTIL.RunTime("Run-Time Error:Illegal index");
1102 arg_18 = (IUmlType) lookUpType((XmlEntity) par_27);
1103 IUmlParameterDirectionKind arg_21 = null;
1104 String par_34 = null;
1105 XmlAttribute tmpRec_35 = null;
1106 XmlEntity par_36 = null;
1107 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
1108 par_36 = (XmlEntity) elist.get(i.intValue() - 1);
1109 else
1110 UTIL.RunTime("Run-Time Error:Illegal index");
1111 tmpRec_35 = (XmlAttribute) getAttribute((XmlEntity) par_36, new String("direction"));
1112 par_34 = tmpRec_35.val;
1113 arg_21 = (IUmlParameterDirectionKind) ConvertParameterDirectionKind(par_34);
1114 reselem_16 = new UmlParameter(arg_17, arg_18, new UmlMultiplicityElement(new Boolean(false), new Boolean(false), new Long(1), new Long(1)), new String(""), arg_21);
1115 res_l_7.add(reselem_16);
1116 }
1117 }
1118 tmpVal_6 = res_l_7;
1119 }
1120 Vector parms = null;
1121 parms = tmpVal_6;
1122 Vector rexpr_48 = null;
1123 if ((new Long(parms.size()).intValue() == new Long(0).intValue()))
1124 rexpr_48 = null;
1125 else
1126 rexpr_48 = parms;
1127 return rexpr_48;
1128 }
1129 // ***** VDMTOOLS END Name=CreateOperstionParameters#1|XmlEntity
1130
1131
1132 // ***** VDMTOOLS START Name=ConvertParameterDirectionKind#1|String KEEP=NO
1133 private IUmlParameterDirectionKind ConvertParameterDirectionKind (final String val) throws CGException {
1134
1135 UmlParameterDirectionKind varRes_2 = null;
1136 boolean succ_3 = true;
1137 {
1138
1139 succ_3 = true;
1140 if (!UTIL.equals(val, new String("in")))
1141 succ_3 = false;
1142 if (succ_3)
1143 varRes_2 = (UmlParameterDirectionKind) new UmlParameterDirectionKind(UmlParameterDirectionKindQuotes.IQIN);
1144 }
1145 if (!succ_3) {
1146
1147 succ_3 = true;
1148 if (!UTIL.equals(val, new String("out")))
1149 succ_3 = false;
1150 if (succ_3)
1151 varRes_2 = (UmlParameterDirectionKind) new UmlParameterDirectionKind(UmlParameterDirectionKindQuotes.IQOUT);
1152 }
1153 if (!succ_3) {
1154
1155 succ_3 = true;
1156 if (!UTIL.equals(val, new String("return")))
1157 succ_3 = false;
1158 if (succ_3)
1159 varRes_2 = (UmlParameterDirectionKind) new UmlParameterDirectionKind(UmlParameterDirectionKindQuotes.IQRETURN);
1160 }
1161 if (!succ_3) {
1162
1163 succ_3 = true;
1164 if (!UTIL.equals(val, new String("inout")))
1165 succ_3 = false;
1166 if (succ_3)
1167 varRes_2 = (UmlParameterDirectionKind) new UmlParameterDirectionKind(UmlParameterDirectionKindQuotes.IQINOUT);
1168 }
1169 if (!succ_3)
1170 UTIL.RunTime("Run-Time Error:No \'others\' branch in CasesExpr");
1171 return (IUmlParameterDirectionKind) varRes_2;
1172 }
1173 // ***** VDMTOOLS END Name=ConvertParameterDirectionKind#1|String
1174
1175
1176 // ***** VDMTOOLS START Name=build_uConstraint#1|XmlEntity KEEP=NO
1177 private IUmlConstraint build_uConstraint (final XmlEntity e) throws CGException {
1178
1179 UmlConstraint varRes_2 = null;
1180 {
1181
1182 Vector elist = null;
1183 XmlEntityList tmpRec_5 = null;
1184 tmpRec_5 = e.entities;
1185 elist = tmpRec_5.entities;
1186 HashSet ids = new HashSet();
1187 HashSet res_s_8 = new HashSet();
1188 {
1189
1190 HashSet e1_set_18 = new HashSet(elist);
1191 XmlEntity p = null;
1192 {
1193 for (Iterator enm_20 = e1_set_18.iterator(); enm_20.hasNext(); ) {
1194
1195 XmlEntity elem_19 = (XmlEntity) enm_20.next();
1196 p = (XmlEntity) elem_19;
1197 if (hasAttribute((XmlEntity) p, new String("xmi:idref")).booleanValue()) {
1198
1199 String res_s_9 = null;
1200 res_s_9 = ((XmlAttribute) getAttribute((XmlEntity) p, new String("xmi:idref"))).val;
1201 res_s_8.add(res_s_9);
1202 }
1203 }
1204 }
1205 }
1206 ids = res_s_8;
1207 String specification = null;
1208 Vector unArg_22 = null;
1209 HashSet par_23 = new HashSet();
1210 HashSet res_s_24 = new HashSet();
1211 {
1212
1213 HashSet e1_set_34 = new HashSet(elist);
1214 XmlEntity p = null;
1215 {
1216 for (Iterator enm_36 = e1_set_34.iterator(); enm_36.hasNext(); ) {
1217
1218 XmlEntity elem_35 = (XmlEntity) enm_36.next();
1219 p = (XmlEntity) elem_35;
1220 Boolean pred_28 = null;
1221 String var1_29 = null;
1222 var1_29 = p.name;
1223 pred_28 = new Boolean(UTIL.equals(var1_29, new String("body")));
1224 if (pred_28.booleanValue()) {
1225
1226 String res_s_25 = null;
1227 XmlData tmpRec_26 = null;
1228 tmpRec_26 = p.data;
1229 res_s_25 = tmpRec_26.data;
1230 res_s_24.add(res_s_25);
1231 }
1232 }
1233 }
1234 }
1235 par_23 = res_s_24;
1236 unArg_22 = (Vector) UTIL.ConvertToList(Util.SetToSeq(par_23));
1237 specification = UTIL.ConvertToString(unArg_22.get(0));
1238 varRes_2 = (UmlConstraint) new UmlConstraint(ids, new UmlLiteralString(specification));
1239 }
1240 return (IUmlConstraint) varRes_2;
1241 }
1242 // ***** VDMTOOLS END Name=build_uConstraint#1|XmlEntity
1243
1244
1245 // ***** VDMTOOLS START Name=build_uAssociation#1|XmlEntity KEEP=NO
1246 private IUmlAssociation build_uAssociation (final XmlEntity e) throws CGException {
1247
1248 Vector tmpVal_3 = null;
1249 XmlEntityList tmpRec_4 = null;
1250 tmpRec_4 = e.entities;
1251 tmpVal_3 = tmpRec_4.entities;
1252 Vector elist = null;
1253 elist = tmpVal_3;
1254 HashSet tmpVal_6 = new HashSet();
1255 HashSet res_s_7 = new HashSet();
1256 {
1257
1258 HashSet e_set_17 = new HashSet();
1259 HashSet riseq_19 = new HashSet();
1260 int max_20 = elist.size();
1261 for (int i_21 = 1; i_21 <= max_20; i_21++)
1262 riseq_19.add(new Long(i_21));
1263 e_set_17 = riseq_19;
1264 Long i = null;
1265 {
1266 for (Iterator enm_23 = e_set_17.iterator(); enm_23.hasNext(); ) {
1267
1268 Long elem_22 = UTIL.NumberToLong(enm_23.next());
1269 i = elem_22;
1270 Boolean pred_11 = null;
1271 XmlEntity par_12 = null;
1272 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
1273 par_12 = (XmlEntity) elist.get(i.intValue() - 1);
1274 else
1275 UTIL.RunTime("Run-Time Error:Illegal index");
1276 pred_11 = isAttributeType((XmlEntity) par_12, new String("uml:Property"));
1277 if (pred_11.booleanValue()) {
1278
1279 XmlEntity res_s_8 = null;
1280 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
1281 res_s_8 = (XmlEntity) elist.get(i.intValue() - 1);
1282 else
1283 UTIL.RunTime("Run-Time Error:Illegal index");
1284 res_s_7.add(res_s_8);
1285 }
1286 }
1287 }
1288 }
1289 tmpVal_6 = res_s_7;
1290 HashSet props = new HashSet();
1291 props = tmpVal_6;
1292 HashSet ownedNavivableEnds = new HashSet();
1293 HashSet res_s_25 = new HashSet();
1294 {
1295
1296 XmlEntity p = null;
1297 {
1298 for (Iterator enm_36 = props.iterator(); enm_36.hasNext(); ) {
1299
1300 XmlEntity elem_35 = (XmlEntity) enm_36.next();
1301 p = (XmlEntity) elem_35;
1302 if (hasAttributeValue((XmlEntity) p, new String("name"), new String("")).booleanValue()) {
1303 res_s_25.add((IUmlProperty) build_uProperty((XmlEntity) p, new String("")));
1304 }
1305 }
1306 }
1307 }
1308 ownedNavivableEnds = res_s_25;
1309 Vector one = null;
1310 one = (Vector) UTIL.ConvertToList(Util.SetToSeq(ownedNavivableEnds));
1311 IUmlType ownerClassType = null;
1312 Vector unArg_40 = null;
1313 {
1314
1315 Vector res_l_41 = new Vector();
1316 HashSet resBind_s_43 = new HashSet();
1317 HashSet riseq_47 = new HashSet();
1318 int max_48 = one.size();
1319 for (int i_49 = 1; i_49 <= max_48; i_49++)
1320 riseq_47.add(new Long(i_49));
1321 resBind_s_43 = riseq_47;
1322 Vector bind_l_42 = null;
1323 bind_l_42 = UTIL.Sort(resBind_s_43);
1324 Long i = null;
1325 for (Iterator enm_55 = bind_l_42.iterator(); enm_55.hasNext(); ) {
1326
1327 Long e_45 = UTIL.NumberToLong(enm_55.next());
1328 i = e_45;
1329 IUmlType reselem_50 = null;
1330 IUmlProperty obj_51 = null;
1331 if ((1 <= i.intValue()) && (i.intValue() <= one.size()))
1332 obj_51 = (IUmlProperty) one.get(i.intValue() - 1);
1333 else
1334 UTIL.RunTime("Run-Time Error:Illegal index");
1335 reselem_50 = (IUmlType) obj_51.getType();
1336 res_l_41.add(reselem_50);
1337 }
1338 unArg_40 = res_l_41;
1339 }
1340 ownerClassType = (IUmlType) unArg_40.get(0);
1341 String tmpVal_56 = null;
1342 {
1343
1344 IUmlClassNameType ct = (IUmlClassNameType) ownerClassType;
1345 tmpVal_56 = ct.getName();
1346 }
1347 String ownerClass = null;
1348 ownerClass = tmpVal_56;
1349 HashSet ownedEnds = new HashSet();
1350 HashSet res_s_60 = new HashSet();
1351 {
1352
1353 XmlEntity p = null;
1354 {
1355 for (Iterator enm_74 = props.iterator(); enm_74.hasNext(); ) {
1356
1357 XmlEntity elem_73 = (XmlEntity) enm_74.next();
1358 p = (XmlEntity) elem_73;
1359 Boolean pred_64 = null;
1360 Long var1_65 = null;
1361 String unArg_66 = null;
1362 unArg_66 = ((XmlAttribute) getAttribute((XmlEntity) p, new String("name"))).val;
1363 var1_65 = new Long(unArg_66.length());
1364 pred_64 = new Boolean((var1_65.intValue()) > (new Long(0).intValue()));
1365 if (pred_64.booleanValue()) {
1366 res_s_60.add((IUmlProperty) build_uProperty((XmlEntity) p, ownerClass));
1367 }
1368 }
1369 }
1370 }
1371 ownedEnds = res_s_60;
1372 String tmpVal_75 = null;
1373 tmpVal_75 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("name"))).val;
1374 String name = null;
1375 name = tmpVal_75;
1376 String id = null;
1377 id = ((XmlAttribute) getAttribute((XmlEntity) e, new String("xmi:id"))).val;
1378 return (IUmlAssociation) new UmlAssociation(ownedEnds, ownedNavivableEnds, name, id);
1379 }
1380 // ***** VDMTOOLS END Name=build_uAssociation#1|XmlEntity
1381
1382
1383 // ***** VDMTOOLS START Name=lookUpType#1|XmlEntity KEEP=NO
1384 private IUmlType lookUpType (final XmlEntity e) throws CGException {
1385
1386 Vector elist = null;
1387 XmlEntityList tmpRec_4 = null;
1388 tmpRec_4 = e.entities;
1389 elist = tmpRec_4.entities;
1390 HashSet typeOption1 = new HashSet();
1391 if (hasAttribute((XmlEntity) e, new String("type")).booleanValue()) {
1392
1393 String enum_set_32 = null;
1394 enum_set_32 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("type"))).val;
1395 typeOption1 = new HashSet();
1396 typeOption1.add(enum_set_32);
1397 }
1398 else {
1399
1400 HashSet res_s_11 = new HashSet();
1401 {
1402
1403 HashSet e_set_25 = new HashSet();
1404 HashSet riseq_27 = new HashSet();
1405 int max_28 = elist.size();
1406 for (int i_29 = 1; i_29 <= max_28; i_29++)
1407 riseq_27.add(new Long(i_29));
1408 e_set_25 = riseq_27;
1409 Long i = null;
1410 {
1411 for (Iterator enm_31 = e_set_25.iterator(); enm_31.hasNext(); ) {
1412
1413 Long elem_30 = UTIL.NumberToLong(enm_31.next());
1414 i = elem_30;
1415 Boolean pred_18 = null;
1416 String var1_19 = null;
1417 XmlEntity tmpRec_20 = null;
1418 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
1419 tmpRec_20 = (XmlEntity) elist.get(i.intValue() - 1);
1420 else
1421 UTIL.RunTime("Run-Time Error:Illegal index");
1422 var1_19 = tmpRec_20.name;
1423 pred_18 = new Boolean(UTIL.equals(var1_19, new String("type")));
1424 if (pred_18.booleanValue()) {
1425
1426 String res_s_12 = null;
1427 XmlAttribute tmpRec_13 = null;
1428 XmlEntity par_14 = null;
1429 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
1430 par_14 = (XmlEntity) elist.get(i.intValue() - 1);
1431 else
1432 UTIL.RunTime("Run-Time Error:Illegal index");
1433 tmpRec_13 = (XmlAttribute) getAttribute((XmlEntity) par_14, new String("xmi:idref"));
1434 res_s_12 = tmpRec_13.val;
1435 res_s_11.add(res_s_12);
1436 }
1437 }
1438 }
1439 }
1440 typeOption1 = res_s_11;
1441 }
1442 {
1443
1444 HashSet tmpSet_36 = new HashSet();
1445 tmpSet_36 = typeOption1;
1446 String id = null;
1447 boolean succ_38 = false;
1448 for (Iterator enm_40 = tmpSet_36.iterator(); enm_40.hasNext() && !succ_38; ) {
1449
1450 String tmpElem_39 = UTIL.ConvertToString(enm_40.next());
1451 succ_38 = true;
1452 id = tmpElem_39;
1453 }
1454 if (!succ_38)
1455 UTIL.RunTime("Run-Time Error:The binding environment was empty");
1456 {
1457
1458 String typeName = null;
1459 Boolean cond_44 = null;
1460 cond_44 = new Boolean(classesTypeMap.containsKey(id));
1461 if (cond_44.booleanValue())
1462 typeName = UTIL.ConvertToString(classesTypeMap.get(id));
1463 else
1464 typeName = null;
1465 boolean succ_49 = true;
1466 {
1467
1468 succ_49 = true;
1469 if (!UTIL.equals(typeName, null))
1470 succ_49 = false;
1471 if (succ_49)
1472 return (IUmlType) new UmlIntegerType();
1473 else {
1474
1475 succ_49 = true;
1476 if (!UTIL.equals(typeName, new String("String")))
1477 succ_49 = false;
1478 if (succ_49)
1479 return (IUmlType) new UmlStringType();
1480 else {
1481
1482 succ_49 = true;
1483 if (!UTIL.equals(typeName, new String("int")))
1484 succ_49 = false;
1485 if (succ_49)
1486 return (IUmlType) new UmlIntegerType();
1487 else {
1488
1489 succ_49 = true;
1490 if (!UTIL.equals(typeName, new String("bool")))
1491 succ_49 = false;
1492 if (succ_49)
1493 return (IUmlType) new UmlBoolType();
1494 else {
1495
1496 succ_49 = true;
1497 if (!UTIL.equals(typeName, new String("char")))
1498 succ_49 = false;
1499 if (succ_49)
1500 return (IUmlType) new UmlCharType();
1501 else {
1502
1503 succ_49 = true;
1504 if (!UTIL.equals(typeName, new String("unlimitedNatural")))
1505 succ_49 = false;
1506 if (succ_49)
1507 return (IUmlType) new UmlUnlimitedNatural();
1508 else
1509 return (IUmlType) new UmlClassNameType(typeName);
1510 }
1511 }
1512 }
1513 }
1514 }
1515 }
1516 }
1517 }
1518 }
1519 // ***** VDMTOOLS END Name=lookUpType#1|XmlEntity
1520
1521
1522 // ***** VDMTOOLS START Name=VisitXmlEntity#1|XmlEntity KEEP=NO
1523 public void VisitXmlEntity (final XmlEntity e) throws CGException {
1524
1525 HashSet rhs_2 = new HashSet();
1526 HashSet var2_4 = new HashSet();
1527 HashSet res_s_5 = new HashSet();
1528 {
1529
1530 HashSet e_set_19 = new HashSet();
1531 e_set_19 = new HashSet();
1532 e_set_19.add(e);
1533 XmlEntity entity = null;
1534 {
1535 for (Iterator enm_22 = e_set_19.iterator(); enm_22.hasNext(); ) {
1536
1537 XmlEntity elem_21 = (XmlEntity) enm_22.next();
1538 entity = (XmlEntity) elem_21;
1539 Boolean pred_8 = null;
1540 {
1541 if ((pred_8 = isAttributeType((XmlEntity) entity, new String("uml:Class"))).booleanValue()) {
1542
1543 Boolean var2_12 = null;
1544 String var1_13 = null;
1545 var1_13 = ((XmlAttribute) getAttribute((XmlEntity) entity, new String("name"))).val;
1546 var2_12 = new Boolean(!primiticeTypes.contains(var1_13));
1547 pred_8 = var2_12;
1548 }
1549 }
1550 if (pred_8.booleanValue()) {
1551 res_s_5.add((IUmlClass) exstractClass((XmlEntity) entity));
1552 }
1553 }
1554 }
1555 }
1556 var2_4 = res_s_5;
1557 rhs_2 = (HashSet) classes.clone();
1558 rhs_2.addAll(var2_4);
1559 classes = (HashSet) UTIL.clone(rhs_2);
1560 HashSet rhs_23 = new HashSet();
1561 HashSet var2_25 = new HashSet();
1562 HashSet res_s_26 = new HashSet();
1563 {
1564
1565 HashSet e_set_33 = new HashSet();
1566 e_set_33 = new HashSet();
1567 e_set_33.add(e);
1568 XmlEntity entity = null;
1569 {
1570 for (Iterator enm_36 = e_set_33.iterator(); enm_36.hasNext(); ) {
1571
1572 XmlEntity elem_35 = (XmlEntity) enm_36.next();
1573 entity = (XmlEntity) elem_35;
1574 if (isAttributeType((XmlEntity) entity, new String("uml:Association")).booleanValue()) {
1575 res_s_26.add((IUmlAssociation) build_uAssociation((XmlEntity) entity));
1576 }
1577 }
1578 }
1579 }
1580 var2_25 = res_s_26;
1581 rhs_23 = (HashSet) associations.clone();
1582 rhs_23.addAll(var2_25);
1583 associations = (HashSet) UTIL.clone(rhs_23);
1584 }
1585 // ***** VDMTOOLS END Name=VisitXmlEntity#1|XmlEntity
1586
1587
1588 // ***** VDMTOOLS START Name=hasAttribute#2|XmlEntity|String KEEP=NO
1589 private Boolean hasAttribute (final XmlEntity e, final String name) throws CGException {
1590
1591 Boolean varRes_3 = null;
1592 {
1593
1594 Vector tmpVal_5 = null;
1595 XmlAttributeList tmpRec_6 = null;
1596 tmpRec_6 = e.attributes;
1597 tmpVal_5 = tmpRec_6.attributes;
1598 Vector list = null;
1599 list = tmpVal_5;
1600 boolean tmpQuant_8 = false;
1601 {
1602
1603 HashSet e_set_16 = new HashSet();
1604 HashSet riseq_18 = new HashSet();
1605 int max_19 = list.size();
1606 for (int i_20 = 1; i_20 <= max_19; i_20++)
1607 riseq_18.add(new Long(i_20));
1608 e_set_16 = riseq_18;
1609 Long i = null;
1610 {
1611 for (Iterator enm_22 = e_set_16.iterator(); enm_22.hasNext() && !tmpQuant_8; ) {
1612
1613 Long elem_21 = UTIL.NumberToLong(enm_22.next());
1614 i = elem_21;
1615 Boolean pred_9 = null;
1616 String var1_10 = null;
1617 XmlAttribute tmpRec_11 = null;
1618 if ((1 <= i.intValue()) && (i.intValue() <= list.size()))
1619 tmpRec_11 = (XmlAttribute) list.get(i.intValue() - 1);
1620 else
1621 UTIL.RunTime("Run-Time Error:Illegal index");
1622 var1_10 = tmpRec_11.name;
1623 pred_9 = new Boolean(UTIL.equals(var1_10, name));
1624 if (pred_9.booleanValue())
1625 tmpQuant_8 = true;
1626 }
1627 }
1628 }
1629 varRes_3 = new Boolean(tmpQuant_8);
1630 }
1631 return varRes_3;
1632 }
1633 // ***** VDMTOOLS END Name=hasAttribute#2|XmlEntity|String
1634
1635
1636 // ***** VDMTOOLS START Name=hasAttributeValue#3|XmlEntity|String|String KEEP=NO
1637 private Boolean hasAttributeValue (final XmlEntity e, final String name, final String val) throws CGException {
1638
1639 Boolean varRes_4 = null;
1640 {
1641
1642 Vector tmpVal_6 = null;
1643 XmlAttributeList tmpRec_7 = null;
1644 tmpRec_7 = e.attributes;
1645 tmpVal_6 = tmpRec_7.attributes;
1646 Vector list = null;
1647 list = tmpVal_6;
1648 boolean tmpQuant_9 = false;
1649 {
1650
1651 HashSet e_set_24 = new HashSet();
1652 HashSet riseq_26 = new HashSet();
1653 int max_27 = list.size();
1654 for (int i_28 = 1; i_28 <= max_27; i_28++)
1655 riseq_26.add(new Long(i_28));
1656 e_set_24 = riseq_26;
1657 Long i = null;
1658 {
1659 for (Iterator enm_30 = e_set_24.iterator(); enm_30.hasNext() && !tmpQuant_9; ) {
1660
1661 Long elem_29 = UTIL.NumberToLong(enm_30.next());
1662 i = elem_29;
1663 Boolean pred_10 = null;
1664 Boolean var1_11 = null;
1665 String var1_12 = null;
1666 XmlAttribute tmpRec_13 = null;
1667 if ((1 <= i.intValue()) && (i.intValue() <= list.size()))
1668 tmpRec_13 = (XmlAttribute) list.get(i.intValue() - 1);
1669 else
1670 UTIL.RunTime("Run-Time Error:Illegal index");
1671 var1_12 = tmpRec_13.name;
1672 var1_11 = new Boolean(UTIL.equals(var1_12, name));
1673 {
1674 if ((pred_10 = var1_11).booleanValue()) {
1675
1676 Boolean var2_17 = null;
1677 String var1_18 = null;
1678 XmlAttribute tmpRec_19 = null;
1679 if ((1 <= i.intValue()) && (i.intValue() <= list.size()))
1680 tmpRec_19 = (XmlAttribute) list.get(i.intValue() - 1);
1681 else
1682 UTIL.RunTime("Run-Time Error:Illegal index");
1683 var1_18 = tmpRec_19.val;
1684 var2_17 = new Boolean(UTIL.equals(var1_18, val));
1685 pred_10 = var2_17;
1686 }
1687 }
1688 if (pred_10.booleanValue())
1689 tmpQuant_9 = true;
1690 }
1691 }
1692 }
1693 varRes_4 = new Boolean(tmpQuant_9);
1694 }
1695 return varRes_4;
1696 }
1697 // ***** VDMTOOLS END Name=hasAttributeValue#3|XmlEntity|String|String
1698
1699
1700 // ***** VDMTOOLS START Name=isAttributeType#2|XmlEntity|String KEEP=NO
1701 private Boolean isAttributeType (final XmlEntity e, final String val) throws CGException {
1702 return hasAttributeValue((XmlEntity) e, new String("xmi:type"), val);
1703 }
1704 // ***** VDMTOOLS END Name=isAttributeType#2|XmlEntity|String
1705
1706
1707 // ***** VDMTOOLS START Name=getElementType#1|XmlEntity KEEP=NO
1708 private String getElementType (final XmlEntity e) throws CGException {
1709
1710 String varRes_2 = null;
1711 if ((!UTIL.equals((XmlAttribute) getAttribute((XmlEntity) e, new String("xmi:type")), null)))
1712 varRes_2 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("xmi:type"))).val;
1713 else
1714 varRes_2 = e.name;
1715 return varRes_2;
1716 }
1717 // ***** VDMTOOLS END Name=getElementType#1|XmlEntity
1718
1719
1720 // ***** VDMTOOLS START Name=getAttribute#2|XmlEntity|String KEEP=NO
1721 private XmlAttribute getAttribute (final XmlEntity e, final String name) throws CGException {
1722
1723 XmlAttribute varRes_3 = null;
1724 {
1725
1726 Vector tmpVal_5 = null;
1727 XmlAttributeList tmpRec_6 = null;
1728 tmpRec_6 = e.attributes;
1729 tmpVal_5 = tmpRec_6.attributes;
1730 Vector list = null;
1731 list = tmpVal_5;
1732 Vector attList = null;
1733 {
1734
1735 Vector res_l_9 = new Vector();
1736 HashSet resBind_s_11 = new HashSet();
1737 HashSet riseq_15 = new HashSet();
1738 int max_16 = list.size();
1739 for (int i_17 = 1; i_17 <= max_16; i_17++)
1740 riseq_15.add(new Long(i_17));
1741 resBind_s_11 = riseq_15;
1742 Vector bind_l_10 = null;
1743 bind_l_10 = UTIL.Sort(resBind_s_11);
1744 Long i = null;
1745 for (Iterator enm_28 = bind_l_10.iterator(); enm_28.hasNext(); ) {
1746
1747 Long e_13 = UTIL.NumberToLong(enm_28.next());
1748 i = e_13;
1749 Boolean pred_21 = null;
1750 String var1_22 = null;
1751 XmlAttribute tmpRec_23 = null;
1752 if ((1 <= i.intValue()) && (i.intValue() <= list.size()))
1753 tmpRec_23 = (XmlAttribute) list.get(i.intValue() - 1);
1754 else
1755 UTIL.RunTime("Run-Time Error:Illegal index");
1756 var1_22 = tmpRec_23.name;
1757 pred_21 = new Boolean(UTIL.equals(var1_22, name));
1758 if (pred_21.booleanValue()) {
1759
1760 XmlAttribute reselem_18 = null;
1761 if ((1 <= i.intValue()) && (i.intValue() <= list.size()))
1762 reselem_18 = (XmlAttribute) list.get(i.intValue() - 1);
1763 else
1764 UTIL.RunTime("Run-Time Error:Illegal index");
1765 res_l_9.add(reselem_18);
1766 }
1767 }
1768 attList = res_l_9;
1769 }
1770 if (((new Long(attList.size()).intValue()) > (new Long(0).intValue())))
1771 varRes_3 = (XmlAttribute) (XmlAttribute) attList.get(0);
1772 else
1773 varRes_3 = null;
1774 }
1775 return (XmlAttribute) varRes_3;
1776 }
1777 // ***** VDMTOOLS END Name=getAttribute#2|XmlEntity|String
1778
1779
1780 // ***** VDMTOOLS START Name=GetVisibility#1|XmlAttribute KEEP=NO
1781 static private IUmlVisibilityKind GetVisibility (final XmlAttribute v) throws CGException {
1782
1783 UmlVisibilityKind varRes_2 = null;
1784 if ((!UTIL.equals(v, null))) {
1785
1786 String selRes_9 = null;
1787 selRes_9 = v.val;
1788 boolean succ_8 = true;
1789 {
1790
1791 succ_8 = true;
1792 if (!UTIL.equals(selRes_9, new String("private")))
1793 succ_8 = false;
1794 if (succ_8)
1795 varRes_2 = (UmlVisibilityKind) new UmlVisibilityKind(UmlVisibilityKindQuotes.IQPRIVATE);
1796 }
1797 if (!succ_8) {
1798
1799 succ_8 = true;
1800 if (!UTIL.equals(selRes_9, new String("public")))
1801 succ_8 = false;
1802 if (succ_8)
1803 varRes_2 = (UmlVisibilityKind) new UmlVisibilityKind(UmlVisibilityKindQuotes.IQPUBLIC);
1804 }
1805 if (!succ_8) {
1806
1807 succ_8 = true;
1808 if (!UTIL.equals(selRes_9, new String("protected")))
1809 succ_8 = false;
1810 if (succ_8)
1811 varRes_2 = (UmlVisibilityKind) new UmlVisibilityKind(UmlVisibilityKindQuotes.IQPROTECTED);
1812 }
1813 if (!succ_8)
1814 UTIL.RunTime("Run-Time Error:No \'others\' branch in CasesExpr");
1815 }
1816 else
1817 varRes_2 = (UmlVisibilityKind) new UmlVisibilityKind(UmlVisibilityKindQuotes.IQPRIVATE);
1818 return (IUmlVisibilityKind) varRes_2;
1819 }
1820 // ***** VDMTOOLS END Name=GetVisibility#1|XmlAttribute
1821
1822
1823 // ***** VDMTOOLS START Name=build_uCollobration#1|XmlEntity KEEP=NO
1824 private IUmlCollaboration build_uCollobration (final XmlEntity e) throws CGException {
1825
1826 Vector tmpVal_3 = null;
1827 XmlEntityList tmpRec_4 = null;
1828 tmpRec_4 = e.entities;
1829 tmpVal_3 = tmpRec_4.entities;
1830 Vector elist = null;
1831 elist = tmpVal_3;
1832 HashSet interactions = new HashSet();
1833 HashSet res_s_7 = new HashSet();
1834 {
1835
1836 HashSet e1_set_15 = new HashSet(elist);
1837 XmlEntity p = null;
1838 {
1839 for (Iterator enm_17 = e1_set_15.iterator(); enm_17.hasNext(); ) {
1840
1841 XmlEntity elem_16 = (XmlEntity) enm_17.next();
1842 p = (XmlEntity) elem_16;
1843 if (isAttributeType((XmlEntity) p, new String("uml:Interaction")).booleanValue()) {
1844 res_s_7.add((IUmlInteraction) build_uInteraction((XmlEntity) p));
1845 }
1846 }
1847 }
1848 }
1849 interactions = res_s_7;
1850 return (IUmlCollaboration) new UmlCollaboration(interactions);
1851 }
1852 // ***** VDMTOOLS END Name=build_uCollobration#1|XmlEntity
1853
1854
1855 // ***** VDMTOOLS START Name=build_uInteraction#1|XmlEntity KEEP=NO
1856 private IUmlInteraction build_uInteraction (final XmlEntity e) throws CGException {
1857
1858 Vector tmpVal_3 = null;
1859 XmlEntityList tmpRec_4 = null;
1860 tmpRec_4 = e.entities;
1861 tmpVal_3 = tmpRec_4.entities;
1862 Vector elist = null;
1863 elist = tmpVal_3;
1864 HashMap tmpVal_6 = new HashMap();
1865 HashMap res_m_7 = new HashMap();
1866 {
1867
1868 HashSet e1_set_20 = new HashSet(elist);
1869 XmlEntity p = null;
1870 {
1871 for (Iterator enm_22 = e1_set_20.iterator(); enm_22.hasNext(); ) {
1872
1873 XmlEntity elem_21 = (XmlEntity) enm_22.next();
1874 p = (XmlEntity) elem_21;
1875 if (isAttributeType((XmlEntity) p, new String("uml:Property")).booleanValue()) {
1876
1877 String md_8 = null;
1878 md_8 = ((XmlAttribute) getAttribute((XmlEntity) p, new String("xmi:id"))).val;
1879 res_m_7.put(md_8, (IUmlProperty) build_uProperty((XmlEntity) p, new String("")));
1880 }
1881 }
1882 }
1883 }
1884 tmpVal_6 = res_m_7;
1885 HashMap props = new HashMap();
1886 props = tmpVal_6;
1887 {
1888
1889 HashMap rhs_23 = new HashMap();
1890 HashMap modmap_24 = new HashMap();
1891 HashMap res_m_27 = new HashMap();
1892 {
1893
1894 HashSet e1_set_50 = new HashSet(elist);
1895 XmlEntity p = null;
1896 {
1897 for (Iterator enm_52 = e1_set_50.iterator(); enm_52.hasNext(); ) {
1898
1899 XmlEntity elem_51 = (XmlEntity) enm_52.next();
1900 p = (XmlEntity) elem_51;
1901 Boolean pred_44 = null;
1902 String var1_45 = null;
1903 var1_45 = p.name;
1904 pred_44 = new Boolean(UTIL.equals(var1_45, new String("lifeline")));
1905 if (pred_44.booleanValue()) {
1906
1907 String md_28 = null;
1908 md_28 = ((XmlAttribute) getAttribute((XmlEntity) p, new String("xmi:id"))).val;
1909 UmlLifeLine mr_32 = null;
1910 String arg_33 = null;
1911 arg_33 = ((XmlAttribute) getAttribute((XmlEntity) p, new String("name"))).val;
1912 IUmlType arg_34 = null;
1913 IUmlProperty obj_38 = null;
1914 String tmppar_40 = null;
1915 tmppar_40 = ((XmlAttribute) getAttribute((XmlEntity) p, new String("represents"))).val;
1916 obj_38 = (IUmlProperty) props.get(tmppar_40);
1917 arg_34 = (IUmlType) obj_38.getType();
1918 mr_32 = new UmlLifeLine(arg_33, arg_34);
1919 res_m_27.put(md_28, mr_32);
1920 }
1921 }
1922 }
1923 }
1924 modmap_24 = res_m_27;
1925 rhs_23 = new HashMap(lifeLineMap);
1926 rhs_23.putAll(modmap_24);
1927 lifeLineMap = (HashMap) UTIL.clone(rhs_23);
1928 {
1929
1930 String tmpVal_54 = null;
1931 tmpVal_54 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("name"))).val;
1932 String name = null;
1933 name = tmpVal_54;
1934 HashSet lifeLines = new HashSet();
1935 lifeLines.clear();
1936 lifeLines.addAll(lifeLineMap.values());
1937 HashSet mosfragments = new HashSet();
1938 HashSet res_s_61 = new HashSet();
1939 {
1940
1941 HashSet e1_set_69 = new HashSet(elist);
1942 XmlEntity f = null;
1943 {
1944 for (Iterator enm_71 = e1_set_69.iterator(); enm_71.hasNext(); ) {
1945
1946 XmlEntity elem_70 = (XmlEntity) enm_71.next();
1947 f = (XmlEntity) elem_70;
1948 if (isAttributeType((XmlEntity) f, new String("uml:MessageOccurrenceSpecification")).booleanValue()) {
1949 res_s_61.add((IUmlInteractionFragment) build_uFragment((XmlEntity) f));
1950 }
1951 }
1952 }
1953 }
1954 mosfragments = res_s_61;
1955 HashSet besfragments = new HashSet();
1956 HashSet res_s_73 = new HashSet();
1957 {
1958
1959 HashSet e1_set_81 = new HashSet(elist);
1960 XmlEntity f = null;
1961 {
1962 for (Iterator enm_83 = e1_set_81.iterator(); enm_83.hasNext(); ) {
1963
1964 XmlEntity elem_82 = (XmlEntity) enm_83.next();
1965 f = (XmlEntity) elem_82;
1966 if (isAttributeType((XmlEntity) f, new String("uml:BehaviorExecutionSpecification")).booleanValue()) {
1967 res_s_73.add((IUmlInteractionFragment) build_uFragment((XmlEntity) f));
1968 }
1969 }
1970 }
1971 }
1972 besfragments = res_s_73;
1973 HashSet combifragments = new HashSet();
1974 HashSet res_s_85 = new HashSet();
1975 {
1976
1977 HashSet e1_set_93 = new HashSet(elist);
1978 XmlEntity f = null;
1979 {
1980 for (Iterator enm_95 = e1_set_93.iterator(); enm_95.hasNext(); ) {
1981
1982 XmlEntity elem_94 = (XmlEntity) enm_95.next();
1983 f = (XmlEntity) elem_94;
1984 if (isAttributeType((XmlEntity) f, new String("uml:CombinedFragment")).booleanValue()) {
1985 res_s_85.add((IUmlInteractionFragment) build_uFragment((XmlEntity) f));
1986 }
1987 }
1988 }
1989 }
1990 combifragments = res_s_85;
1991 Vector messages = null;
1992 {
1993
1994 Vector res_l_97 = new Vector();
1995 HashSet resBind_s_99 = new HashSet();
1996 HashSet riseq_103 = new HashSet();
1997 int max_104 = elist.size();
1998 for (int i_105 = 1; i_105 <= max_104; i_105++)
1999 riseq_103.add(new Long(i_105));
2000 resBind_s_99 = riseq_103;
2001 Vector bind_l_98 = null;
2002 bind_l_98 = UTIL.Sort(resBind_s_99);
2003 Long i = null;
2004 for (Iterator enm_117 = bind_l_98.iterator(); enm_117.hasNext(); ) {
2005
2006 Long e_101 = UTIL.NumberToLong(enm_117.next());
2007 i = e_101;
2008 Boolean pred_110 = null;
2009 String var1_111 = null;
2010 XmlEntity tmpRec_112 = null;
2011 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
2012 tmpRec_112 = (XmlEntity) elist.get(i.intValue() - 1);
2013 else
2014 UTIL.RunTime("Run-Time Error:Illegal index");
2015 var1_111 = tmpRec_112.name;
2016 pred_110 = new Boolean(UTIL.equals(var1_111, new String("message")));
2017 if (pred_110.booleanValue()) {
2018
2019 IUmlMessage reselem_106 = null;
2020 XmlEntity par_107 = null;
2021 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
2022 par_107 = (XmlEntity) elist.get(i.intValue() - 1);
2023 else
2024 UTIL.RunTime("Run-Time Error:Illegal index");
2025 reselem_106 = (IUmlMessage) build_uMessage((XmlEntity) par_107);
2026 res_l_97.add(reselem_106);
2027 }
2028 }
2029 messages = res_l_97;
2030 }
2031 UmlInteraction rexpr_118 = null;
2032 HashSet arg_121 = new HashSet();
2033 HashSet var1_123 = new HashSet();
2034 var1_123 = (HashSet) mosfragments.clone();
2035 var1_123.addAll(besfragments);
2036 arg_121 = (HashSet) var1_123.clone();
2037 arg_121.addAll(combifragments);
2038 rexpr_118 = new UmlInteraction(name, lifeLines, arg_121, messages);
2039 return (IUmlInteraction) rexpr_118;
2040 }
2041 }
2042 }
2043 // ***** VDMTOOLS END Name=build_uInteraction#1|XmlEntity
2044
2045
2046 // ***** VDMTOOLS START Name=build_uMessage#1|XmlEntity KEEP=NO
2047 private IUmlMessage build_uMessage (final XmlEntity e) throws CGException {
2048
2049 IUmlMessageKind messageKind = (IUmlMessageKind) new UmlMessageKind(UmlMessageKindQuotes.IQCOMPLETE);
2050 IUmlMessageSort messageSort = (IUmlMessageSort) new UmlMessageSort(UmlMessageSortQuotes.IQSYNCHCALL);
2051 IUmlMos mosSend = null;
2052 String tmppar_9 = null;
2053 tmppar_9 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("sendEvent"))).val;
2054 mosSend = (IUmlMos) mosMap.get(tmppar_9);
2055 IUmlMos mosRecive = null;
2056 String tmppar_15 = null;
2057 tmppar_15 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("receiveEvent"))).val;
2058 mosRecive = (IUmlMos) mosMap.get(tmppar_15);
2059 Vector args = new Vector();
2060 String name = null;
2061 IUmlOperation obj_21 = null;
2062 IUmlCallEvent obj_22 = null;
2063 obj_22 = (IUmlCallEvent) mosRecive.getEvent();
2064 obj_21 = (IUmlOperation) obj_22.getOperation();
2065 name = obj_21.getName();
2066 return (IUmlMessage) new UmlMessage(name, messageKind, messageSort, mosSend, mosRecive, args);
2067 }
2068 // ***** VDMTOOLS END Name=build_uMessage#1|XmlEntity
2069
2070
2071 // ***** VDMTOOLS START Name=build_uFragment#1|XmlEntity KEEP=NO
2072 private IUmlInteractionFragment build_uFragment (final XmlEntity e) throws CGException {
2073
2074 boolean succ_2 = true;
2075 {
2076
2077 succ_2 = true;
2078 if (!UTIL.equals(getElementType((XmlEntity) e), new String("uml:MessageOccurrenceSpecification")))
2079 succ_2 = false;
2080 if (succ_2)
2081 return (IUmlInteractionFragment) (IUmlMos) build_uMos((XmlEntity) e);
2082 else {
2083
2084 succ_2 = true;
2085 if (!UTIL.equals(getElementType((XmlEntity) e), new String("uml:BehaviorExecutionSpecification")))
2086 succ_2 = false;
2087 if (succ_2)
2088 return (IUmlInteractionFragment) (IUmlBes) build_uBes((XmlEntity) e);
2089 else {
2090
2091 succ_2 = true;
2092 if (!UTIL.equals(getElementType((XmlEntity) e), new String("uml:CombinedFragment")))
2093 succ_2 = false;
2094 if (succ_2)
2095 return (IUmlInteractionFragment) (IUmlCombinedFragment) build_uCombi((XmlEntity) e);
2096 else {
2097
2098 UTIL.RunTime("Run-Time Error:Can not evaluate an error statement");
2099 throw new CGException(); // throw new CGException(); // throw new CGException(); // throw new CGException(); // throw new CGException(); // throw new CGException(); // throw new CGException(); // throw new CGException(); // return new IUmlInteractionFragment();
2100 }
2101 }
2102 }
2103 }
2104 }
2105 // ***** VDMTOOLS END Name=build_uFragment#1|XmlEntity
2106
2107
2108 // ***** VDMTOOLS START Name=build_uMos#1|XmlEntity KEEP=NO
2109 private IUmlMos build_uMos (final XmlEntity e) throws CGException {
2110
2111 String name = null;
2112 name = ((XmlAttribute) getAttribute((XmlEntity) e, new String("name"))).val;
2113 IUmlMessage message = null;
2114 IUmlLifeLine lifeLines = null;
2115 {
2116
2117 HashSet tmpSet_9 = new HashSet();
2118 HashSet res_s_13 = new HashSet();
2119 {
2120
2121 HashSet e1_set_20 = new HashSet(GetCovered((XmlEntity) e));
2122 String c = null;
2123 {
2124 for (Iterator enm_22 = e1_set_20.iterator(); enm_22.hasNext(); ) {
2125
2126 String elem_21 = UTIL.ConvertToString(enm_22.next());
2127 c = elem_21;
2128 res_s_13.add((IUmlLifeLine) lifeLineMap.get(c));
2129 }
2130 }
2131 }
2132 tmpSet_9 = res_s_13;
2133 IUmlLifeLine l = null;
2134 boolean succ_11 = false;
2135 for (Iterator enm_23 = tmpSet_9.iterator(); enm_23.hasNext() && !succ_11; ) {
2136
2137 IUmlLifeLine tmpElem_12 = (IUmlLifeLine) enm_23.next();
2138 succ_11 = true;
2139 l = (IUmlLifeLine) tmpElem_12;
2140 }
2141 if (!succ_11)
2142 UTIL.RunTime("Run-Time Error:The binding environment was empty");
2143 lifeLines = (IUmlLifeLine) l;
2144 }
2145 String id = null;
2146 id = ((XmlAttribute) getAttribute((XmlEntity) e, new String("xmi:id"))).val;
2147 IUmlCallEvent event = null;
2148 String tmppar_30 = null;
2149 tmppar_30 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("event"))).val;
2150 event = (IUmlCallEvent) idToClallEventMap.get(tmppar_30);
2151 UmlMos mos = (UmlMos) new UmlMos(name, message, lifeLines, event);
2152 {
2153
2154 mosMap.put(id, mos);
2155 return (IUmlMos) mos;
2156 }
2157 }
2158 // ***** VDMTOOLS END Name=build_uMos#1|XmlEntity
2159
2160
2161 // ***** VDMTOOLS START Name=build_uBes#1|XmlEntity KEEP=NO
2162 private IUmlBes build_uBes (final XmlEntity e) throws CGException {
2163
2164 String name = null;
2165 name = ((XmlAttribute) getAttribute((XmlEntity) e, new String("name"))).val;
2166 IUmlMos startOc = null;
2167 String tmppar_9 = null;
2168 tmppar_9 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("start"))).val;
2169 startOc = (IUmlMos) mosMap.get(tmppar_9);
2170 IUmlMos finishOc = null;
2171 String tmppar_15 = null;
2172 tmppar_15 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("finish"))).val;
2173 finishOc = (IUmlMos) mosMap.get(tmppar_15);
2174 HashSet covered = new HashSet();
2175 HashSet res_s_20 = new HashSet();
2176 {
2177
2178 HashSet e1_set_27 = new HashSet(GetCovered((XmlEntity) e));
2179 String c = null;
2180 {
2181 for (Iterator enm_29 = e1_set_27.iterator(); enm_29.hasNext(); ) {
2182
2183 String elem_28 = UTIL.ConvertToString(enm_29.next());
2184 c = elem_28;
2185 res_s_20.add((IUmlLifeLine) lifeLineMap.get(c));
2186 }
2187 }
2188 }
2189 covered = res_s_20;
2190 String id = null;
2191 id = ((XmlAttribute) getAttribute((XmlEntity) e, new String("xmi:id"))).val;
2192 UmlBes bes = (UmlBes) new UmlBes(name, startOc, finishOc, covered);
2193 {
2194
2195 besMap.put(id, bes);
2196 return (IUmlBes) bes;
2197 }
2198 }
2199 // ***** VDMTOOLS END Name=build_uBes#1|XmlEntity
2200
2201
2202 // ***** VDMTOOLS START Name=build_uCombi#1|XmlEntity KEEP=NO
2203 private IUmlCombinedFragment build_uCombi (final XmlEntity e) throws CGException {
2204
2205 Vector elist = null;
2206 XmlEntityList tmpRec_4 = null;
2207 tmpRec_4 = e.entities;
2208 elist = tmpRec_4.entities;
2209 String name = null;
2210 name = ((XmlAttribute) getAttribute((XmlEntity) e, new String("name"))).val;
2211 IUmlInteractionOperatorKind interactionOperatorKind = null;
2212 String par_11 = null;
2213 par_11 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("interactionOperator"))).val;
2214 interactionOperatorKind = (IUmlInteractionOperatorKind) GetIntOperationKind(par_11);
2215 Vector operands = null;
2216 {
2217
2218 Vector res_l_16 = new Vector();
2219 HashSet resBind_s_18 = new HashSet();
2220 HashSet riseq_22 = new HashSet();
2221 int max_23 = elist.size();
2222 for (int i_24 = 1; i_24 <= max_23; i_24++)
2223 riseq_22.add(new Long(i_24));
2224 resBind_s_18 = riseq_22;
2225 Vector bind_l_17 = null;
2226 bind_l_17 = UTIL.Sort(resBind_s_18);
2227 Long i = null;
2228 for (Iterator enm_36 = bind_l_17.iterator(); enm_36.hasNext(); ) {
2229
2230 Long e_20 = UTIL.NumberToLong(enm_36.next());
2231 i = e_20;
2232 Boolean pred_29 = null;
2233 String var1_30 = null;
2234 XmlEntity tmpRec_31 = null;
2235 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
2236 tmpRec_31 = (XmlEntity) elist.get(i.intValue() - 1);
2237 else
2238 UTIL.RunTime("Run-Time Error:Illegal index");
2239 var1_30 = tmpRec_31.name;
2240 pred_29 = new Boolean(UTIL.equals(var1_30, new String("operand")));
2241 if (pred_29.booleanValue()) {
2242
2243 IUmlInteractionOperand reselem_25 = null;
2244 XmlEntity par_26 = null;
2245 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
2246 par_26 = (XmlEntity) elist.get(i.intValue() - 1);
2247 else
2248 UTIL.RunTime("Run-Time Error:Illegal index");
2249 reselem_25 = (IUmlInteractionOperand) build_uOperand((XmlEntity) par_26);
2250 res_l_16.add(reselem_25);
2251 }
2252 }
2253 operands = res_l_16;
2254 }
2255 HashSet covered = new HashSet();
2256 HashSet res_s_38 = new HashSet();
2257 {
2258
2259 HashSet e1_set_45 = new HashSet(GetCovered((XmlEntity) e));
2260 String c = null;
2261 {
2262 for (Iterator enm_47 = e1_set_45.iterator(); enm_47.hasNext(); ) {
2263
2264 String elem_46 = UTIL.ConvertToString(enm_47.next());
2265 c = elem_46;
2266 res_s_38.add((IUmlLifeLine) lifeLineMap.get(c));
2267 }
2268 }
2269 }
2270 covered = res_s_38;
2271 String id = null;
2272 id = ((XmlAttribute) getAttribute((XmlEntity) e, new String("xmi:id"))).val;
2273 UmlCombinedFragment combi = (UmlCombinedFragment) new UmlCombinedFragment(name, interactionOperatorKind, operands, covered);
2274 {
2275
2276 combiMap.put(id, combi);
2277 return (IUmlCombinedFragment) combi;
2278 }
2279 }
2280 // ***** VDMTOOLS END Name=build_uCombi#1|XmlEntity
2281
2282
2283 // ***** VDMTOOLS START Name=GetIntOperationKind#1|String KEEP=NO
2284 private IUmlInteractionOperatorKind GetIntOperationKind (final String text) throws CGException {
2285
2286 UmlInteractionOperatorKind varRes_2 = null;
2287 boolean succ_3 = true;
2288 {
2289
2290 succ_3 = true;
2291 if (!UTIL.equals(text, new String("alt")))
2292 succ_3 = false;
2293 if (succ_3)
2294 varRes_2 = (UmlInteractionOperatorKind) new UmlInteractionOperatorKind(UmlInteractionOperatorKindQuotes.IQALT);
2295 }
2296 if (!succ_3) {
2297
2298 succ_3 = true;
2299 if (!UTIL.equals(text, new String("loop")))
2300 succ_3 = false;
2301 if (succ_3)
2302 varRes_2 = (UmlInteractionOperatorKind) new UmlInteractionOperatorKind(UmlInteractionOperatorKindQuotes.IQLOOP);
2303 }
2304 if (!succ_3)
2305 UTIL.RunTime("Run-Time Error:No \'others\' branch in CasesExpr");
2306 return (IUmlInteractionOperatorKind) varRes_2;
2307 }
2308 // ***** VDMTOOLS END Name=GetIntOperationKind#1|String
2309
2310
2311 // ***** VDMTOOLS START Name=build_uOperand#1|XmlEntity KEEP=NO
2312 private IUmlInteractionOperand build_uOperand (final XmlEntity e) throws CGException {
2313
2314 Vector elist = null;
2315 XmlEntityList tmpRec_4 = null;
2316 tmpRec_4 = e.entities;
2317 elist = tmpRec_4.entities;
2318 String name = new String("");
2319 Vector fragments = new Vector();
2320 HashSet covered = new HashSet();
2321 HashSet res_s_9 = new HashSet();
2322 {
2323
2324 Vector e_set_14 = null;
2325 String par_15 = null;
2326 Vector unArg_16 = null;
2327 {
2328
2329 Vector res_l_17 = new Vector();
2330 HashSet resBind_s_19 = new HashSet();
2331 HashSet riseq_23 = new HashSet();
2332 int max_24 = elist.size();
2333 for (int i_25 = 1; i_25 <= max_24; i_25++)
2334 riseq_23.add(new Long(i_25));
2335 resBind_s_19 = riseq_23;
2336 Vector bind_l_18 = null;
2337 bind_l_18 = UTIL.Sort(resBind_s_19);
2338 Long i = null;
2339 for (Iterator enm_37 = bind_l_18.iterator(); enm_37.hasNext(); ) {
2340
2341 Long e_21 = UTIL.NumberToLong(enm_37.next());
2342 i = e_21;
2343 Boolean pred_30 = null;
2344 XmlEntity par_31 = null;
2345 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
2346 par_31 = (XmlEntity) elist.get(i.intValue() - 1);
2347 else
2348 UTIL.RunTime("Run-Time Error:Illegal index");
2349 pred_30 = hasAttributeValue((XmlEntity) par_31, new String("extender"), new String("umltrans"));
2350 if (pred_30.booleanValue()) {
2351
2352 String reselem_26 = null;
2353 XmlEntity par_27 = null;
2354 if ((1 <= i.intValue()) && (i.intValue() <= elist.size()))
2355 par_27 = (XmlEntity) elist.get(i.intValue() - 1);
2356 else
2357 UTIL.RunTime("Run-Time Error:Illegal index");
2358 reselem_26 = GetCoveredExtension((XmlEntity) par_27);
2359 res_l_17.add(reselem_26);
2360 }
2361 }
2362 unArg_16 = res_l_17;
2363 }
2364 String rdcseq_38 = new String();
2365 for (Iterator enm_41 = unArg_16.iterator(); enm_41.hasNext(); ) {
2366
2367 String e_39 = UTIL.ConvertToString(enm_41.next());
2368 rdcseq_38 = rdcseq_38.concat(e_39);
2369 }
2370 par_15 = rdcseq_38;
2371 e_set_14 = (Vector) StdLib.Split(par_15, new Character(' '));
2372 String c = null;
2373 {
2374 for (Iterator enm_44 = e_set_14.iterator(); enm_44.hasNext(); ) {
2375
2376 String elem_43 = UTIL.ConvertToString(enm_44.next());
2377 c = elem_43;
2378 res_s_9.add((IUmlMos) mosMap.get(c));
2379 }
2380 }
2381 }
2382 covered = res_s_9;
2383 IUmlInteractionConstraint guard = null;
2384 Boolean cond_47 = null;
2385 boolean tmpQuant_48 = false;
2386 {
2387
2388 HashSet e1_set_55 = new HashSet(elist);
2389 XmlEntity gu = null;
2390 {
2391 for (Iterator enm_57 = e1_set_55.iterator(); enm_57.hasNext() && !tmpQuant_48; ) {
2392
2393 XmlEntity elem_56 = (XmlEntity) enm_57.next();
2394 gu = (XmlEntity) elem_56;
2395 Boolean pred_49 = null;
2396 String var1_50 = null;
2397 var1_50 = gu.name;
2398 pred_49 = new Boolean(UTIL.equals(var1_50, new String("guard")));
2399 if (pred_49.booleanValue())
2400 tmpQuant_48 = true;
2401 }
2402 }
2403 }
2404 cond_47 = new Boolean(tmpQuant_48);
2405 if (cond_47.booleanValue()) {
2406
2407 XmlEntity par_58 = null;
2408 {
2409
2410 HashSet tmpSet_59 = new HashSet();
2411 HashSet res_s_63 = new HashSet();
2412 {
2413
2414 HashSet e1_set_71 = new HashSet(elist);
2415 XmlEntity p = null;
2416 {
2417 for (Iterator enm_73 = e1_set_71.iterator(); enm_73.hasNext(); ) {
2418
2419 XmlEntity elem_72 = (XmlEntity) enm_73.next();
2420 p = (XmlEntity) elem_72;
2421 Boolean pred_65 = null;
2422 String var1_66 = null;
2423 var1_66 = p.name;
2424 pred_65 = new Boolean(UTIL.equals(var1_66, new String("guard")));
2425 if (pred_65.booleanValue()) {
2426 res_s_63.add(p);
2427 }
2428 }
2429 }
2430 }
2431 tmpSet_59 = res_s_63;
2432 XmlEntity g = null;
2433 boolean succ_61 = false;
2434 for (Iterator enm_74 = tmpSet_59.iterator(); enm_74.hasNext() && !succ_61; ) {
2435
2436 XmlEntity tmpElem_62 = (XmlEntity) enm_74.next();
2437 succ_61 = true;
2438 g = (XmlEntity) tmpElem_62;
2439 }
2440 if (!succ_61)
2441 UTIL.RunTime("Run-Time Error:The binding environment was empty");
2442 par_58 = (XmlEntity) g;
2443 }
2444 guard = (IUmlInteractionConstraint) GetGuard((XmlEntity) par_58);
2445 }
2446 else
2447 guard = null;
2448 return (IUmlInteractionOperand) new UmlInteractionOperand(name, fragments, covered, guard);
2449 }
2450 // ***** VDMTOOLS END Name=build_uOperand#1|XmlEntity
2451
2452
2453 // ***** VDMTOOLS START Name=GetCoveredExtension#1|XmlEntity KEEP=NO
2454 private String GetCoveredExtension (final XmlEntity e) throws CGException {
2455
2456 String varRes_2 = null;
2457 {
2458
2459 Vector elist = null;
2460 XmlEntityList tmpRec_5 = null;
2461 tmpRec_5 = e.entities;
2462 elist = tmpRec_5.entities;
2463 {
2464
2465 HashSet tmpSet_7 = new HashSet();
2466 HashSet res_s_11 = new HashSet();
2467 {
2468
2469 HashSet e1_set_21 = new HashSet(elist);
2470 XmlEntity co = null;
2471 {
2472 for (Iterator enm_23 = e1_set_21.iterator(); enm_23.hasNext(); ) {
2473
2474 XmlEntity elem_22 = (XmlEntity) enm_23.next();
2475 co = (XmlEntity) elem_22;
2476 Boolean pred_15 = null;
2477 String var1_16 = null;
2478 var1_16 = co.name;
2479 pred_15 = new Boolean(UTIL.equals(var1_16, new String("covered")));
2480 if (pred_15.booleanValue()) {
2481
2482 String res_s_12 = null;
2483 XmlData tmpRec_13 = null;
2484 tmpRec_13 = co.data;
2485 res_s_12 = tmpRec_13.data;
2486 res_s_11.add(res_s_12);
2487 }
2488 }
2489 }
2490 }
2491 tmpSet_7 = res_s_11;
2492 String p = null;
2493 boolean succ_9 = false;
2494 for (Iterator enm_24 = tmpSet_7.iterator(); enm_24.hasNext() && !succ_9; ) {
2495
2496 String tmpElem_10 = UTIL.ConvertToString(enm_24.next());
2497 succ_9 = true;
2498 p = tmpElem_10;
2499 }
2500 if (!succ_9)
2501 UTIL.RunTime("Run-Time Error:The binding environment was empty");
2502 varRes_2 = p;
2503 }
2504 }
2505 return varRes_2;
2506 }
2507 // ***** VDMTOOLS END Name=GetCoveredExtension#1|XmlEntity
2508
2509
2510 // ***** VDMTOOLS START Name=GetCovered#1|XmlEntity KEEP=NO
2511 private Vector GetCovered (final XmlEntity e) throws CGException {
2512
2513 Vector varRes_2 = null;
2514 {
2515
2516 String text = null;
2517 text = ((XmlAttribute) getAttribute((XmlEntity) e, new String("covered"))).val;
2518 varRes_2 = (Vector) StdLib.Split(text, new Character(' '));
2519 }
2520 return varRes_2;
2521 }
2522 // ***** VDMTOOLS END Name=GetCovered#1|XmlEntity
2523
2524
2525 // ***** VDMTOOLS START Name=GetGuard#1|XmlEntity KEEP=NO
2526 private IUmlInteractionConstraint GetGuard (final XmlEntity e) throws CGException {
2527
2528 UmlInteractionConstraint varRes_2 = null;
2529 {
2530
2531 Vector elist = null;
2532 XmlEntityList tmpRec_5 = null;
2533 tmpRec_5 = e.entities;
2534 elist = tmpRec_5.entities;
2535 IUmlValueSpecification minint = null;
2536 {
2537
2538 HashSet tmpSet_8 = new HashSet();
2539 HashSet res_s_12 = new HashSet();
2540 {
2541
2542 HashSet e1_set_21 = new HashSet(elist);
2543 XmlEntity p = null;
2544 {
2545 for (Iterator enm_23 = e1_set_21.iterator(); enm_23.hasNext(); ) {
2546
2547 XmlEntity elem_22 = (XmlEntity) enm_23.next();
2548 p = (XmlEntity) elem_22;
2549 Boolean pred_15 = null;
2550 String var1_16 = null;
2551 var1_16 = p.name;
2552 pred_15 = new Boolean(UTIL.equals(var1_16, new String("minint")));
2553 if (pred_15.booleanValue()) {
2554 res_s_12.add((IUmlValueSpecification) getGuardConstraintValue((XmlEntity) p));
2555 }
2556 }
2557 }
2558 }
2559 tmpSet_8 = res_s_12;
2560 IUmlValueSpecification tmp = null;
2561 boolean succ_10 = false;
2562 for (Iterator enm_24 = tmpSet_8.iterator(); enm_24.hasNext() && !succ_10; ) {
2563
2564 IUmlValueSpecification tmpElem_11 = (IUmlValueSpecification) enm_24.next();
2565 succ_10 = true;
2566 tmp = (IUmlValueSpecification) tmpElem_11;
2567 }
2568 if (!succ_10)
2569 UTIL.RunTime("Run-Time Error:The binding environment was empty");
2570 minint = (IUmlValueSpecification) tmp;
2571 }
2572 IUmlValueSpecification maxint = null;
2573 {
2574
2575 HashSet tmpSet_26 = new HashSet();
2576 HashSet res_s_30 = new HashSet();
2577 {
2578
2579 HashSet e1_set_39 = new HashSet(elist);
2580 XmlEntity p = null;
2581 {
2582 for (Iterator enm_41 = e1_set_39.iterator(); enm_41.hasNext(); ) {
2583
2584 XmlEntity elem_40 = (XmlEntity) enm_41.next();
2585 p = (XmlEntity) elem_40;
2586 Boolean pred_33 = null;
2587 String var1_34 = null;
2588 var1_34 = p.name;
2589 pred_33 = new Boolean(UTIL.equals(var1_34, new String("maxint")));
2590 if (pred_33.booleanValue()) {
2591 res_s_30.add((IUmlValueSpecification) getGuardConstraintValue((XmlEntity) p));
2592 }
2593 }
2594 }
2595 }
2596 tmpSet_26 = res_s_30;
2597 IUmlValueSpecification tmp = null;
2598 boolean succ_28 = false;
2599 for (Iterator enm_42 = tmpSet_26.iterator(); enm_42.hasNext() && !succ_28; ) {
2600
2601 IUmlValueSpecification tmpElem_29 = (IUmlValueSpecification) enm_42.next();
2602 succ_28 = true;
2603 tmp = (IUmlValueSpecification) tmpElem_29;
2604 }
2605 if (!succ_28)
2606 UTIL.RunTime("Run-Time Error:The binding environment was empty");
2607 maxint = (IUmlValueSpecification) tmp;
2608 }
2609 varRes_2 = (UmlInteractionConstraint) new UmlInteractionConstraint(minint, maxint);
2610 }
2611 return (IUmlInteractionConstraint) varRes_2;
2612 }
2613 // ***** VDMTOOLS END Name=GetGuard#1|XmlEntity
2614
2615
2616 // ***** VDMTOOLS START Name=getGuardConstraintValue#1|XmlEntity KEEP=NO
2617 private IUmlValueSpecification getGuardConstraintValue (final XmlEntity e) throws CGException {
2618
2619 UmlLiteralInteger varRes_2 = null;
2620 Boolean cond_4 = null;
2621 {
2622 if ((cond_4 = hasAttribute((XmlEntity) e, new String("value"))).booleanValue())
2623 cond_4 = isAttributeType((XmlEntity) e, new String("uml:LiteralInteger"));
2624 }
2625 if (cond_4.booleanValue()) {
2626
2627 Long arg_11 = null;
2628 String par_12 = null;
2629 par_12 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("value"))).val;
2630 arg_11 = UTIL.NumberToLong(StdLib.StringToInt(par_12));
2631 varRes_2 = new UmlLiteralInteger(arg_11);
2632 }
2633 else
2634 varRes_2 = null;
2635 return (IUmlValueSpecification) varRes_2;
2636 }
2637 // ***** VDMTOOLS END Name=getGuardConstraintValue#1|XmlEntity
2638
2639
2640 // ***** VDMTOOLS START Name=buildCallEventMap#1|HashSet KEEP=NO
2641 private HashMap buildCallEventMap (final HashSet elist) throws CGException {
2642
2643 HashMap m = new HashMap();
2644 HashMap res_m_4 = new HashMap();
2645 {
2646
2647 XmlEntity e = null;
2648 {
2649 for (Iterator enm_19 = elist.iterator(); enm_19.hasNext(); ) {
2650
2651 XmlEntity elem_18 = (XmlEntity) enm_19.next();
2652 e = (XmlEntity) elem_18;
2653 String md_5 = null;
2654 md_5 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("xmi:id"))).val;
2655 UmlCallEvent mr_9 = null;
2656 IUmlOperation arg_10 = null;
2657 String tmppar_12 = null;
2658 tmppar_12 = ((XmlAttribute) getAttribute((XmlEntity) e, new String("operation"))).val;
2659 arg_10 = (IUmlOperation) idToOperationMap.get(tmppar_12);
2660 mr_9 = new UmlCallEvent(arg_10);
2661 res_m_4.put(md_5, mr_9);
2662 }
2663 }
2664 }
2665 m = res_m_4;
2666 return m;
2667 }
2668 // ***** VDMTOOLS END Name=buildCallEventMap#1|HashSet
2669
2670
2671 // ***** VDMTOOLS START Name=VisitXmlAttribute#1|XmlAttribute KEEP=NO
2672 public void VisitXmlAttribute (final XmlAttribute var_1_1) throws CGException {}
2673 // ***** VDMTOOLS END Name=VisitXmlAttribute#1|XmlAttribute
2674
2675
2676 // ***** VDMTOOLS START Name=VisitXmlData#1|XmlData KEEP=NO
2677 public void VisitXmlData (final XmlData var_1_1) throws CGException {}
2678 // ***** VDMTOOLS END Name=VisitXmlData#1|XmlData
2679
2680
2681 // ***** VDMTOOLS START Name=setEncoding#1|String KEEP=NO
2682 public void setEncoding (final String encodingType) throws CGException {}
2683 // ***** VDMTOOLS END Name=setEncoding#1|String
2684
2685 }
2686 ;