aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/UML2TGF.java
diff options
context:
space:
mode:
authorLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2020-05-09 03:48:41 -0400
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2020-05-09 03:48:41 -0400
commit51f00c1a2bbc52deb48be61b6d594e65d778e686 (patch)
tree0c33ffca58b3e8526d5a5b76836e8ecd6e3a30b7 /Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/UML2TGF.java
parentremoved unnecesary logging (diff)
downloadVIATRA-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/UML2TGF.java')
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/xtend-gen/converter/UML2TGF.java203
1 files changed, 203 insertions, 0 deletions
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 @@
1package converter;
2
3import java.io.PrintWriter;
4import java.text.SimpleDateFormat;
5import java.util.ArrayList;
6import java.util.Collection;
7import java.util.Date;
8import java.util.HashMap;
9import java.util.HashSet;
10import org.eclipse.emf.common.util.EList;
11import org.eclipse.emf.common.util.URI;
12import org.eclipse.emf.ecore.EObject;
13import org.eclipse.emf.ecore.resource.Resource;
14import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
15import org.eclipse.uml2.uml.Element;
16import org.eclipse.uml2.uml.EnumerationLiteral;
17import org.eclipse.uml2.uml.InstanceSpecification;
18import org.eclipse.uml2.uml.InstanceValue;
19import org.eclipse.uml2.uml.Model;
20import org.eclipse.uml2.uml.Slot;
21import org.eclipse.uml2.uml.StructuralFeature;
22import org.eclipse.uml2.uml.UMLPackage;
23import org.eclipse.uml2.uml.ValueSpecification;
24import org.eclipse.uml2.uml.resource.UMLResource;
25import org.eclipse.xtend2.lib.StringConcatenation;
26import org.eclipse.xtext.xbase.lib.Conversions;
27import org.eclipse.xtext.xbase.lib.Exceptions;
28import org.eclipse.xtext.xbase.lib.Functions.Function1;
29import org.eclipse.xtext.xbase.lib.InputOutput;
30import org.eclipse.xtext.xbase.lib.IterableExtensions;
31
32@SuppressWarnings("all")
33public 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}