diff options
author | ArenBabikian <aren.babikian@mail.mcgill.ca> | 2020-05-09 03:48:41 -0400 |
---|---|---|
committer | ArenBabikian <aren.babikian@mail.mcgill.ca> | 2020-05-09 03:48:41 -0400 |
commit | 51f00c1a2bbc52deb48be61b6d594e65d778e686 (patch) | |
tree | 0c33ffca58b3e8526d5a5b76836e8ecd6e3a30b7 /Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter | |
parent | removed unnecesary logging (diff) | |
download | VIATRA-Generator-51f00c1a2bbc52deb48be61b6d594e65d778e686.tar.gz VIATRA-Generator-51f00c1a2bbc52deb48be61b6d594e65d778e686.tar.zst VIATRA-Generator-51f00c1a2bbc52deb48be61b6d594e65d778e686.zip |
Implement UML Instance 2 GML visualization mapping
Diffstat (limited to 'Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter')
3 files changed, 204 insertions, 0 deletions
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/.UML2TGF.xtendbin b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/.UML2TGF.xtendbin new file mode 100644 index 00000000..c98e8698 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/.UML2TGF.xtendbin | |||
Binary files differ | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/.gitignore new file mode 100644 index 00000000..2df5d1c0 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/.gitignore | |||
@@ -0,0 +1 @@ | |||
/.UML2TGF.java._trace | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/UML2TGF.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/UML2TGF.java new file mode 100644 index 00000000..58bc4241 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/UML2TGF.java | |||
@@ -0,0 +1,203 @@ | |||
1 | package converter; | ||
2 | |||
3 | import java.io.PrintWriter; | ||
4 | import java.text.SimpleDateFormat; | ||
5 | import java.util.ArrayList; | ||
6 | import java.util.Collection; | ||
7 | import java.util.Date; | ||
8 | import java.util.HashMap; | ||
9 | import java.util.HashSet; | ||
10 | import org.eclipse.emf.common.util.EList; | ||
11 | import org.eclipse.emf.common.util.URI; | ||
12 | import org.eclipse.emf.ecore.EObject; | ||
13 | import org.eclipse.emf.ecore.resource.Resource; | ||
14 | import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; | ||
15 | import org.eclipse.uml2.uml.Element; | ||
16 | import org.eclipse.uml2.uml.EnumerationLiteral; | ||
17 | import org.eclipse.uml2.uml.InstanceSpecification; | ||
18 | import org.eclipse.uml2.uml.InstanceValue; | ||
19 | import org.eclipse.uml2.uml.Model; | ||
20 | import org.eclipse.uml2.uml.Slot; | ||
21 | import org.eclipse.uml2.uml.StructuralFeature; | ||
22 | import org.eclipse.uml2.uml.UMLPackage; | ||
23 | import org.eclipse.uml2.uml.ValueSpecification; | ||
24 | import org.eclipse.uml2.uml.resource.UMLResource; | ||
25 | import org.eclipse.xtend2.lib.StringConcatenation; | ||
26 | import org.eclipse.xtext.xbase.lib.Conversions; | ||
27 | import org.eclipse.xtext.xbase.lib.Exceptions; | ||
28 | import org.eclipse.xtext.xbase.lib.Functions.Function1; | ||
29 | import org.eclipse.xtext.xbase.lib.InputOutput; | ||
30 | import org.eclipse.xtext.xbase.lib.IterableExtensions; | ||
31 | |||
32 | @SuppressWarnings("all") | ||
33 | public class UML2TGF { | ||
34 | public static void main(final String[] args) { | ||
35 | try { | ||
36 | final ResourceSetImpl resourceSet = new ResourceSetImpl(); | ||
37 | resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE); | ||
38 | resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, | ||
39 | UMLResource.Factory.INSTANCE); | ||
40 | final Resource res = resourceSet.getResource(URI.createFileURI("instance//Instance_model_A.uml"), true); | ||
41 | EObject _get = res.getContents().get(0); | ||
42 | final Model docRoot = ((Model) _get); | ||
43 | final Function1<Element, Boolean> _function = (Element it) -> { | ||
44 | return Boolean.valueOf((it instanceof InstanceSpecification)); | ||
45 | }; | ||
46 | final Iterable<Element> nodes = IterableExtensions.<Element>filter(docRoot.allOwnedElements(), _function); | ||
47 | final HashSet<Object> allTypes = new HashSet<Object>(); | ||
48 | for (final Element e : nodes) { | ||
49 | allTypes.add(e.getClass()); | ||
50 | } | ||
51 | long _currentTimeMillis = System.currentTimeMillis(); | ||
52 | final Date date = new Date(_currentTimeMillis); | ||
53 | final SimpleDateFormat format = new SimpleDateFormat("dd-HHmm"); | ||
54 | final String formattedDate = format.format(date); | ||
55 | final HashMap<InstanceSpecification, Integer> map = new HashMap<InstanceSpecification, Integer>(); | ||
56 | final HashSet<String> set = new HashSet<String>(); | ||
57 | final ArrayList<Object> unidentified = new ArrayList<Object>(); | ||
58 | final ArrayList<Object> enums = new ArrayList<Object>(); | ||
59 | final PrintWriter writer = new PrintWriter((("output//graph-" + formattedDate) + ".gml")); | ||
60 | InputOutput.<String>println("begin Writing"); | ||
61 | writer.append("graph\n[\n"); | ||
62 | int ind = 0; | ||
63 | int numNodes = ((Object[])Conversions.unwrapArray(nodes, Object.class)).length; | ||
64 | int numEdges = 0; | ||
65 | for (final Element node : nodes) { | ||
66 | { | ||
67 | final InstanceSpecification n = ((InstanceSpecification) node); | ||
68 | map.put(n, Integer.valueOf(ind)); | ||
69 | StringConcatenation _builder = new StringConcatenation(); | ||
70 | _builder.append(" "); | ||
71 | _builder.append("node"); | ||
72 | _builder.newLine(); | ||
73 | _builder.append(" "); | ||
74 | _builder.append("["); | ||
75 | _builder.newLine(); | ||
76 | _builder.append(" "); | ||
77 | _builder.append("id "); | ||
78 | _builder.append(ind, " "); | ||
79 | _builder.newLineIfNotEmpty(); | ||
80 | _builder.append(" "); | ||
81 | _builder.append("label \""); | ||
82 | { | ||
83 | String _name = n.getName(); | ||
84 | boolean _tripleNotEquals = (_name != null); | ||
85 | if (_tripleNotEquals) { | ||
86 | String _name_1 = n.getName(); | ||
87 | _builder.append(_name_1, " "); | ||
88 | } | ||
89 | } | ||
90 | _builder.append("\""); | ||
91 | _builder.newLineIfNotEmpty(); | ||
92 | { | ||
93 | if (((n.getName() != null) && n.getName().contains("Household"))) { | ||
94 | _builder.append(" graphics"); | ||
95 | _builder.newLineIfNotEmpty(); | ||
96 | _builder.append(" "); | ||
97 | _builder.append("["); | ||
98 | _builder.newLine(); | ||
99 | _builder.append(" "); | ||
100 | _builder.append("fill\t\"#00FF00\""); | ||
101 | _builder.newLine(); | ||
102 | _builder.append(" "); | ||
103 | _builder.append("]"); | ||
104 | _builder.newLine(); | ||
105 | } | ||
106 | } | ||
107 | _builder.append(" "); | ||
108 | _builder.append("]"); | ||
109 | _builder.newLine(); | ||
110 | writer.append(_builder); | ||
111 | ind++; | ||
112 | } | ||
113 | } | ||
114 | Slot s = null; | ||
115 | try { | ||
116 | for (final Element node_1 : nodes) { | ||
117 | if (((node_1 instanceof EnumerationLiteral) != true)) { | ||
118 | final InstanceSpecification n = ((InstanceSpecification) node_1); | ||
119 | final Integer nind = map.get(n); | ||
120 | EList<Slot> _slots = n.getSlots(); | ||
121 | for (final Slot slot : _slots) { | ||
122 | { | ||
123 | s = slot; | ||
124 | String fname = ""; | ||
125 | StructuralFeature _definingFeature = slot.getDefiningFeature(); | ||
126 | boolean _tripleNotEquals = (_definingFeature != null); | ||
127 | if (_tripleNotEquals) { | ||
128 | fname = slot.getDefiningFeature().getName(); | ||
129 | } | ||
130 | EList<ValueSpecification> _values = slot.getValues(); | ||
131 | for (final ValueSpecification v : _values) { | ||
132 | if ((v instanceof InstanceValue)) { | ||
133 | final InstanceValue value = ((InstanceValue) v); | ||
134 | boolean _containsKey = map.containsKey(value.getInstance()); | ||
135 | if (_containsKey) { | ||
136 | final Integer vind = map.get(value.getInstance()); | ||
137 | StringConcatenation _builder = new StringConcatenation(); | ||
138 | _builder.append(" "); | ||
139 | _builder.append("edge"); | ||
140 | _builder.newLine(); | ||
141 | _builder.append(" "); | ||
142 | _builder.append("["); | ||
143 | _builder.newLine(); | ||
144 | _builder.append(" "); | ||
145 | _builder.append("source "); | ||
146 | _builder.append(nind, " "); | ||
147 | _builder.newLineIfNotEmpty(); | ||
148 | _builder.append(" "); | ||
149 | _builder.append("target "); | ||
150 | _builder.append(vind, " "); | ||
151 | _builder.newLineIfNotEmpty(); | ||
152 | _builder.append(" "); | ||
153 | _builder.append("label \""); | ||
154 | _builder.append(fname, " "); | ||
155 | _builder.append("\""); | ||
156 | _builder.newLineIfNotEmpty(); | ||
157 | _builder.append(" "); | ||
158 | _builder.append("]"); | ||
159 | _builder.newLine(); | ||
160 | writer.append(_builder); | ||
161 | numEdges++; | ||
162 | } else { | ||
163 | String _plus = (value + " -> "); | ||
164 | InstanceSpecification _instance = value.getInstance(); | ||
165 | String _plus_1 = (_plus + _instance); | ||
166 | unidentified.add(_plus_1); | ||
167 | } | ||
168 | } else { | ||
169 | set.add(v.getClass().toString()); | ||
170 | } | ||
171 | } | ||
172 | } | ||
173 | } | ||
174 | } else { | ||
175 | enums.add(node_1); | ||
176 | } | ||
177 | } | ||
178 | } catch (final Throwable _t) { | ||
179 | if (_t instanceof Exception) { | ||
180 | InputOutput.<StructuralFeature>println(s.getDefiningFeature()); | ||
181 | } else { | ||
182 | throw Exceptions.sneakyThrow(_t); | ||
183 | } | ||
184 | } | ||
185 | UML2TGF.printset("Unhandled Edges", set); | ||
186 | UML2TGF.printset("Unidentified trgs", unidentified); | ||
187 | writer.append("]"); | ||
188 | writer.close(); | ||
189 | InputOutput.<String>println("End"); | ||
190 | InputOutput.<String>println(((("#nodes:" + Integer.valueOf(numNodes)) + ", #edges:") + Integer.valueOf(numEdges))); | ||
191 | } catch (Throwable _e) { | ||
192 | throw Exceptions.sneakyThrow(_e); | ||
193 | } | ||
194 | } | ||
195 | |||
196 | public static void printset(final String name, final Collection s) { | ||
197 | InputOutput.<String>println((name + ":")); | ||
198 | for (final Object k : s) { | ||
199 | InputOutput.<String>println(("- " + k)); | ||
200 | } | ||
201 | InputOutput.println(); | ||
202 | } | ||
203 | } | ||