aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/SocialNetwork_plugin
diff options
context:
space:
mode:
authorLibravatar 20001LastOrder <boqi.chen@mail.mcgill.ca>2019-07-31 14:45:06 -0400
committerLibravatar 20001LastOrder <boqi.chen@mail.mcgill.ca>2019-07-31 14:45:06 -0400
commit5e8b8c3a817dd9f7ae46338b6dbd3684dfb885fe (patch)
tree61b473589e5e43a58481ea28b7bbeeaf0860dcdb /Metrics/Metrics-Calculation/SocialNetwork_plugin
parentconsider node types during generation (diff)
downloadVIATRA-Generator-5e8b8c3a817dd9f7ae46338b6dbd3684dfb885fe.tar.gz
VIATRA-Generator-5e8b8c3a817dd9f7ae46338b6dbd3684dfb885fe.tar.zst
VIATRA-Generator-5e8b8c3a817dd9f7ae46338b6dbd3684dfb885fe.zip
Further development of realistic solver, create generation config for ecore models
Diffstat (limited to 'Metrics/Metrics-Calculation/SocialNetwork_plugin')
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/.classpath1
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF1
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/.gitignore7
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/mpc_rep/R_2015194.xmi132
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/na_rep/R_2017131.xmi149
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/old/mpc_rep/R_2016324.xmi (renamed from Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/mpc_rep/R_2016324.xmi)0
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/old/na_rep/R_2017419.xmi (renamed from Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/na_rep/R_2017419.xmi)0
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/old/out_d_rep/R_2015225.xmi (renamed from Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/out_d_rep/R_2015225.xmi)0
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/out_d_rep/R_2015248.xmi125
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/.gitignore4
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig34
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/model/ecore.ecore1023
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml5
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/queries/queries/ecore_pattern.vql9
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/.gitignore3
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore_pattern.java53
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/SameSuperClass.java824
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java52
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig4
19 files changed, 2395 insertions, 31 deletions
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/.classpath b/Metrics/Metrics-Calculation/SocialNetwork_plugin/.classpath
index 58c238b9..4f2afbc9 100644
--- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/.classpath
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/.classpath
@@ -1,6 +1,7 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<classpath> 2<classpath>
3 <classpathentry kind="src" path="encore_gen"/> 3 <classpathentry kind="src" path="encore_gen"/>
4 <classpathentry kind="src" path="queries"/>
4 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> 5 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
5 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> 6 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
6 <classpathentry kind="src" path="src"/> 7 <classpathentry kind="src" path="src"/>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF b/Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF
index b7ec683a..cf5154e4 100644
--- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF
@@ -7,6 +7,7 @@ Bundle-ClassPath: .
7Bundle-Vendor: %providerName 7Bundle-Vendor: %providerName
8Bundle-Localization: plugin 8Bundle-Localization: plugin
9Export-Package: ca.mcgill.ecse.socialnetwork.plugin, 9Export-Package: ca.mcgill.ecse.socialnetwork.plugin,
10 queries,
10 socialnetwork, 11 socialnetwork,
11 socialnetwork.impl, 12 socialnetwork.impl,
12 socialnetwork.util 13 socialnetwork.util
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/.gitignore
index 683b1de1..8b962bcf 100644
--- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/.gitignore
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/.gitignore
@@ -1 +1,8 @@
1/ca/ 1/ca/
2/ecore.ecore
3/queries/
4/socialnetwork.aird
5/socialnetwork.ecore
6/socialnetwork.genmodel
7/socialnetwork/
8/statistics/
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/mpc_rep/R_2015194.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/mpc_rep/R_2015194.xmi
new file mode 100644
index 00000000..25ff5ce0
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/mpc_rep/R_2015194.xmi
@@ -0,0 +1,132 @@
1<?xml version="1.0" encoding="ASCII"?>
2<hu.bme.mit.inf.yakindumm:Statechart xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hu.bme.mit.inf.yakindumm="hu.bme.mit.inf.yakindumm">
3 <regions>
4 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.2/@outgoingTransitions.0">
5 <outgoingTransitions target="//@regions.0/@vertices.1"/>
6 <regions>
7 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.5/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.13/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.12/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.12/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.13/@outgoingTransitions.1">
8 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.12"/>
9 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
10 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.13"/>
11 </vertices>
12 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.14/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.15/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.0/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.15/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.14/@outgoingTransitions.1">
13 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.7"/>
14 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.14"/>
15 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.15"/>
16 </vertices>
17 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.7/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.1">
18 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
19 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
20 </vertices>
21 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.7/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.2/@outgoingTransitions.1">
22 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
23 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
24 </vertices>
25 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.9/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.8/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.6/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.2/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.8/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.9/@outgoingTransitions.1">
26 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.5"/>
27 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.8"/>
28 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.9"/>
29 </vertices>
30 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.11/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.10/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.10/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.11/@outgoingTransitions.1">
31 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
32 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.10"/>
33 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.11"/>
34 </vertices>
35 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
36 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
37 </vertices>
38 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.0">
39 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
40 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
41 </vertices>
42 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.4/@outgoingTransitions.1">
43 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
44 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
45 </vertices>
46 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.4/@outgoingTransitions.2">
47 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
48 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
49 </vertices>
50 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.5/@outgoingTransitions.1">
51 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.5"/>
52 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.5"/>
53 </vertices>
54 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.5/@outgoingTransitions.2">
55 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.5"/>
56 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.5"/>
57 </vertices>
58 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.0/@outgoingTransitions.0">
59 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
60 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
61 </vertices>
62 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.0/@outgoingTransitions.2">
63 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
64 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
65 </vertices>
66 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.1">
67 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
68 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
69 </vertices>
70 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.2">
71 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
72 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
73 </vertices>
74 </regions>
75 </vertices>
76 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@outgoingTransitions.0">
77 <outgoingTransitions target="//@regions.0/@vertices.0"/>
78 <regions>
79 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
80 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2"/>
81 </vertices>
82 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.2/@outgoingTransitions.0"/>
83 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.0/@outgoingTransitions.0">
84 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.1"/>
85 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.3"/>
86 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.3"/>
87 <regions>
88 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.2/@outgoingTransitions.0 //@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.5/@outgoingTransitions.0 //@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.0/@outgoingTransitions.1 //@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.5/@outgoingTransitions.1">
89 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.4"/>
90 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.0"/>
91 </vertices>
92 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.2/@outgoingTransitions.1 //@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.4/@outgoingTransitions.1">
93 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.1"/>
94 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.5"/>
95 </vertices>
96 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.3/@outgoingTransitions.0">
97 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.0"/>
98 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.1"/>
99 </vertices>
100 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
101 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.2"/>
102 </vertices>
103 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.0/@outgoingTransitions.0">
104 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.1"/>
105 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.1"/>
106 </vertices>
107 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.1/@outgoingTransitions.1">
108 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.0"/>
109 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2/@regions.0/@vertices.0"/>
110 </vertices>
111 </regions>
112 </vertices>
113 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.2/@outgoingTransitions.1 //@regions.0/@vertices.1/@regions.0/@vertices.2/@outgoingTransitions.2">
114 <regions>
115 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.3/@regions.0/@vertices.2/@outgoingTransitions.1"/>
116 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.3/@regions.0/@vertices.2/@outgoingTransitions.0"/>
117 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.3/@regions.0/@vertices.3/@outgoingTransitions.0">
118 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.3/@regions.0/@vertices.1"/>
119 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.3/@regions.0/@vertices.0"/>
120 </vertices>
121 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
122 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.3/@regions.0/@vertices.2"/>
123 </vertices>
124 </regions>
125 </vertices>
126 </regions>
127 </vertices>
128 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
129 <outgoingTransitions target="//@regions.0/@vertices.0"/>
130 </vertices>
131 </regions>
132</hu.bme.mit.inf.yakindumm:Statechart>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/na_rep/R_2017131.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/na_rep/R_2017131.xmi
new file mode 100644
index 00000000..39780f72
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/na_rep/R_2017131.xmi
@@ -0,0 +1,149 @@
1<?xml version="1.0" encoding="ASCII"?>
2<hu.bme.mit.inf.yakindumm:Statechart xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hu.bme.mit.inf.yakindumm="hu.bme.mit.inf.yakindumm">
3 <regions>
4 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.5/@outgoingTransitions.0 //@regions.0/@vertices.2/@outgoingTransitions.0 //@regions.0/@vertices.1/@outgoingTransitions.0">
5 <outgoingTransitions target="//@regions.0/@vertices.1"/>
6 <regions>
7 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.2/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.5/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.5/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.4/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.8/@outgoingTransitions.0">
8 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.5"/>
9 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
10 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
11 </vertices>
12 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.10/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.0/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.9/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.9/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.10/@outgoingTransitions.1">
13 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.10"/>
14 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
15 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.9"/>
16 </vertices>
17 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.11/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.11/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.12/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.12/@outgoingTransitions.1">
18 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
19 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.12"/>
20 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.11"/>
21 </vertices>
22 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.7/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.6/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.7/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.6/@outgoingTransitions.1">
23 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
24 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.7"/>
25 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.6"/>
26 </vertices>
27 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.0/@outgoingTransitions.2">
28 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
29 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
30 </vertices>
31 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.0/@outgoingTransitions.0">
32 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
33 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
34 </vertices>
35 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.2">
36 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
37 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
38 </vertices>
39 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.1">
40 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
41 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
42 </vertices>
43 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
44 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
45 </vertices>
46 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.2">
47 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
48 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
49 </vertices>
50 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.0">
51 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
52 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
53 </vertices>
54 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.2/@outgoingTransitions.2">
55 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
56 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
57 </vertices>
58 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.2/@outgoingTransitions.1">
59 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
60 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
61 </vertices>
62 </regions>
63 </vertices>
64 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@outgoingTransitions.0 //@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.4/@outgoingTransitions.1 //@regions.0/@vertices.2/@regions.0/@vertices.5/@outgoingTransitions.0">
65 <outgoingTransitions target="//@regions.0/@vertices.0"/>
66 <regions>
67 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
68 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.1"/>
69 </vertices>
70 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.2/@outgoingTransitions.0 //@regions.0/@vertices.1/@regions.0/@vertices.0/@outgoingTransitions.0 //@regions.0/@vertices.1/@regions.0/@vertices.2/@outgoingTransitions.2">
71 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2"/>
72 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.4"/>
73 <outgoingTransitions target="//@regions.0/@vertices.3"/>
74 </vertices>
75 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.1/@outgoingTransitions.0">
76 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.1"/>
77 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.3"/>
78 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.1"/>
79 </vertices>
80 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.5/@outgoingTransitions.1 //@regions.0/@vertices.1/@regions.0/@vertices.2/@outgoingTransitions.1"/>
81 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.1/@outgoingTransitions.1 //@regions.0/@vertices.1/@regions.0/@vertices.5/@outgoingTransitions.0 //@regions.0/@vertices.1/@regions.0/@vertices.5/@outgoingTransitions.2">
82 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.7"/>
83 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.5"/>
84 </vertices>
85 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.4/@outgoingTransitions.1">
86 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.4"/>
87 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.3"/>
88 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.4"/>
89 </vertices>
90 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.7/@outgoingTransitions.1 //@regions.0/@vertices.1/@regions.0/@vertices.7/@outgoingTransitions.0">
91 <outgoingTransitions target="//@regions.0/@vertices.2"/>
92 </vertices>
93 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.4/@outgoingTransitions.0">
94 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.6"/>
95 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.6"/>
96 </vertices>
97 </regions>
98 </vertices>
99 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.3/@outgoingTransitions.0 //@regions.0/@vertices.3/@outgoingTransitions.1 //@regions.0/@vertices.1/@regions.0/@vertices.6/@outgoingTransitions.0">
100 <outgoingTransitions target="//@regions.0/@vertices.0"/>
101 <regions>
102 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.7/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.2/@outgoingTransitions.1 //@regions.0/@vertices.2/@regions.0/@vertices.2/@outgoingTransitions.0">
103 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
104 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
105 <outgoingTransitions target="//@regions.0/@vertices.4"/>
106 </vertices>
107 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.2/@outgoingTransitions.2 //@regions.0/@vertices.2/@regions.0/@vertices.4/@outgoingTransitions.2"/>
108 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.0/@outgoingTransitions.0">
109 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.0"/>
110 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.0"/>
111 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.1"/>
112 </vertices>
113 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.0/@outgoingTransitions.1 //@regions.0/@vertices.2/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.4/@outgoingTransitions.1">
114 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.4"/>
115 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.6"/>
116 </vertices>
117 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.3/@outgoingTransitions.0">
118 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
119 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
120 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.1"/>
121 </vertices>
122 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.6/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.6/@outgoingTransitions.1">
123 <outgoingTransitions target="//@regions.0/@vertices.1"/>
124 </vertices>
125 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.3/@outgoingTransitions.1">
126 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.5"/>
127 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.5"/>
128 </vertices>
129 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
130 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.0"/>
131 </vertices>
132 </regions>
133 </vertices>
134 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.1/@outgoingTransitions.2">
135 <outgoingTransitions target="//@regions.0/@vertices.2"/>
136 <outgoingTransitions target="//@regions.0/@vertices.2"/>
137 </vertices>
138 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.0/@outgoingTransitions.2">
139 <outgoingTransitions target="//@regions.0/@vertices.1"/>
140 <outgoingTransitions target="//@regions.0/@vertices.1"/>
141 </vertices>
142 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.6/@outgoingTransitions.0">
143 <outgoingTransitions target="//@regions.0/@vertices.0"/>
144 </vertices>
145 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
146 <outgoingTransitions target="//@regions.0/@vertices.5"/>
147 </vertices>
148 </regions>
149</hu.bme.mit.inf.yakindumm:Statechart>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/mpc_rep/R_2016324.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/old/mpc_rep/R_2016324.xmi
index 493a1731..493a1731 100644
--- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/mpc_rep/R_2016324.xmi
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/old/mpc_rep/R_2016324.xmi
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/na_rep/R_2017419.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/old/na_rep/R_2017419.xmi
index 369760bf..369760bf 100644
--- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/na_rep/R_2017419.xmi
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/old/na_rep/R_2017419.xmi
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/out_d_rep/R_2015225.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/old/out_d_rep/R_2015225.xmi
index 21fee5a9..21fee5a9 100644
--- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/out_d_rep/R_2015225.xmi
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/old/out_d_rep/R_2015225.xmi
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/out_d_rep/R_2015248.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/out_d_rep/R_2015248.xmi
new file mode 100644
index 00000000..e7fe8114
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakinduum/out_d_rep/R_2015248.xmi
@@ -0,0 +1,125 @@
1<?xml version="1.0" encoding="ASCII"?>
2<hu.bme.mit.inf.yakindumm:Statechart xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hu.bme.mit.inf.yakindumm="hu.bme.mit.inf.yakindumm">
3 <regions>
4 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
5 <outgoingTransitions target="//@regions.0/@vertices.1"/>
6 </vertices>
7 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.12/@outgoingTransitions.0 //@regions.0/@vertices.0/@outgoingTransitions.0 //@regions.0/@vertices.6/@outgoingTransitions.0">
8 <outgoingTransitions target="//@regions.0/@vertices.2"/>
9 <outgoingTransitions target="//@regions.0/@vertices.6"/>
10 </vertices>
11 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.4/@outgoingTransitions.1 //@regions.0/@vertices.7/@outgoingTransitions.0 //@regions.0/@vertices.7/@outgoingTransitions.1">
12 <outgoingTransitions target="//@regions.0/@vertices.3"/>
13 <outgoingTransitions target="//@regions.0/@vertices.4"/>
14 <outgoingTransitions target="//@regions.0/@vertices.7"/>
15 </vertices>
16 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.8/@outgoingTransitions.0 //@regions.0/@vertices.8/@outgoingTransitions.1 //@regions.0/@vertices.2/@outgoingTransitions.0 //@regions.0/@vertices.9/@outgoingTransitions.0 //@regions.0/@vertices.9/@outgoingTransitions.1">
17 <outgoingTransitions target="//@regions.0/@vertices.8"/>
18 <outgoingTransitions target="//@regions.0/@vertices.5"/>
19 <outgoingTransitions target="//@regions.0/@vertices.9"/>
20 </vertices>
21 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@outgoingTransitions.1">
22 <outgoingTransitions target="//@regions.0/@vertices.2"/>
23 <outgoingTransitions target="//@regions.0/@vertices.2"/>
24 </vertices>
25 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.11/@outgoingTransitions.0 //@regions.0/@vertices.10/@outgoingTransitions.0 //@regions.0/@vertices.10/@outgoingTransitions.1 //@regions.0/@vertices.3/@outgoingTransitions.1 //@regions.0/@vertices.11/@outgoingTransitions.1">
26 <outgoingTransitions target="//@regions.0/@vertices.12"/>
27 <outgoingTransitions target="//@regions.0/@vertices.11"/>
28 <outgoingTransitions target="//@regions.0/@vertices.10"/>
29 </vertices>
30 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@outgoingTransitions.1">
31 <outgoingTransitions target="//@regions.0/@vertices.1"/>
32 <regions>
33 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
34 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.1"/>
35 </vertices>
36 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.0/@outgoingTransitions.0">
37 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.3"/>
38 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.2"/>
39 </vertices>
40 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.10/@outgoingTransitions.0 //@regions.0/@vertices.6/@regions.0/@vertices.2/@outgoingTransitions.1 //@regions.0/@vertices.6/@regions.0/@vertices.1/@outgoingTransitions.1 //@regions.0/@vertices.6/@regions.0/@vertices.10/@outgoingTransitions.2 //@regions.0/@vertices.6/@regions.0/@vertices.9/@outgoingTransitions.0 //@regions.0/@vertices.6/@regions.0/@vertices.13/@outgoingTransitions.1">
41 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.4"/>
42 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.2"/>
43 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.10"/>
44 </vertices>
45 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.6/@regions.0/@vertices.11/@outgoingTransitions.2 //@regions.0/@vertices.6/@regions.0/@vertices.11/@outgoingTransitions.0 //@regions.0/@vertices.6/@regions.0/@vertices.3/@outgoingTransitions.2 //@regions.0/@vertices.6/@regions.0/@vertices.12/@outgoingTransitions.0 //@regions.0/@vertices.6/@regions.0/@vertices.8/@outgoingTransitions.0">
46 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.11"/>
47 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.5"/>
48 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.3"/>
49 </vertices>
50 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.2/@outgoingTransitions.0">
51 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.12"/>
52 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.12"/>
53 </vertices>
54 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.3/@outgoingTransitions.1">
55 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.13"/>
56 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.13"/>
57 </vertices>
58 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.11/@outgoingTransitions.1"/>
59 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.10/@outgoingTransitions.1"/>
60 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.12/@outgoingTransitions.1">
61 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.3"/>
62 </vertices>
63 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.13/@outgoingTransitions.0">
64 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.2"/>
65 </vertices>
66 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.2/@outgoingTransitions.2">
67 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.2"/>
68 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.7"/>
69 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.2"/>
70 </vertices>
71 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.3/@outgoingTransitions.0">
72 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.3"/>
73 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.6"/>
74 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.3"/>
75 </vertices>
76 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.6/@regions.0/@vertices.4/@outgoingTransitions.1">
77 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.3"/>
78 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.8"/>
79 </vertices>
80 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.6/@regions.0/@vertices.5/@outgoingTransitions.0 //@regions.0/@vertices.6/@regions.0/@vertices.5/@outgoingTransitions.1">
81 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.9"/>
82 <outgoingTransitions target="//@regions.0/@vertices.6/@regions.0/@vertices.2"/>
83 </vertices>
84 </regions>
85 </vertices>
86 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@outgoingTransitions.2">
87 <outgoingTransitions target="//@regions.0/@vertices.2"/>
88 <outgoingTransitions target="//@regions.0/@vertices.2"/>
89 </vertices>
90 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.3/@outgoingTransitions.0">
91 <outgoingTransitions target="//@regions.0/@vertices.3"/>
92 <outgoingTransitions target="//@regions.0/@vertices.3"/>
93 </vertices>
94 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.3/@outgoingTransitions.2">
95 <outgoingTransitions target="//@regions.0/@vertices.3"/>
96 <outgoingTransitions target="//@regions.0/@vertices.3"/>
97 </vertices>
98 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.5/@outgoingTransitions.2">
99 <outgoingTransitions target="//@regions.0/@vertices.5"/>
100 <outgoingTransitions target="//@regions.0/@vertices.5"/>
101 </vertices>
102 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.5/@outgoingTransitions.1">
103 <outgoingTransitions target="//@regions.0/@vertices.5"/>
104 <outgoingTransitions target="//@regions.0/@vertices.5"/>
105 </vertices>
106 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.5/@outgoingTransitions.0">
107 <outgoingTransitions target="//@regions.0/@vertices.1"/>
108 <regions>
109 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
110 <outgoingTransitions target="//@regions.0/@vertices.12/@regions.0/@vertices.1"/>
111 </vertices>
112 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.12/@regions.0/@vertices.0/@outgoingTransitions.0">
113 <outgoingTransitions target="//@regions.0/@vertices.12/@regions.0/@vertices.2"/>
114 <outgoingTransitions target="//@regions.0/@vertices.12/@regions.0/@vertices.3"/>
115 </vertices>
116 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.12/@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.12/@regions.0/@vertices.3/@outgoingTransitions.0">
117 <outgoingTransitions target="//@regions.0/@vertices.12/@regions.0/@vertices.3"/>
118 </vertices>
119 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.12/@regions.0/@vertices.1/@outgoingTransitions.1 //@regions.0/@vertices.12/@regions.0/@vertices.2/@outgoingTransitions.0">
120 <outgoingTransitions target="//@regions.0/@vertices.12/@regions.0/@vertices.2"/>
121 </vertices>
122 </regions>
123 </vertices>
124 </regions>
125</hu.bme.mit.inf.yakindumm:Statechart>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/.gitignore
deleted file mode 100644
index 17126b28..00000000
--- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
1# ignore everything in this folder except for this folder it self
2
3*
4!.gitignore \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig b/Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig
new file mode 100644
index 00000000..2c83f94f
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig
@@ -0,0 +1,34 @@
1import viatra "./queries/queries/ecore_pattern.vql"
2import epackage "http://www.eclipse.org/emf/2002/Ecore"
3
4generate {
5 metamodel = {package ecore excluding{EClassifier.instanceClass, EClassifier.defaultValue,
6 EEnumLiteral.instance, EStructuralFeature.defaultValue, EStructuralFeature.changeable,
7 EStructuralFeature.derived, ENamedElement.name, EClass.interface, EClass.abstract, EClassifier.instanceTypeName,
8 EClassifier.instanceClassName, EPackage.nsPrefix, EPackage.nsURI, EAnnotation.source,
9 EAttribute.iD, EDataType.serializable, EEnumLiteral.literal, EEnumLiteral.value,
10 EGenericType.eTypeParameter, EReference.resolveProxies, EStringToStringMapEntry.key,
11 EStringToStringMapEntry.value, EStructuralFeature.defaultValueLiteral, EStructuralFeature.transient,
12 EStructuralFeature.unsettable, EStructuralFeature.volatile, ETypedElement.lowerBound,
13 ETypedElement.many, ETypedElement.ordered, ETypedElement.required, ETypedElement.unique,ETypedElement.upperBound,
14 EPackage.eFactoryInstance}}
15// metamodel = {EPackage, EClass, EClassifier, EObject, ENamedElement, EModelElement, EReference, EStructuralFeature, ETypedElement}
16 partial-model = { "inputs/ecore.xmi"}
17 constraints = { package queries }
18
19
20 solver = ViatraSolver
21
22 scope = {
23 #node = 75
24 }
25
26 number = 1
27 runs = 50
28 config = {
29 log-level = none
30 }
31
32 debug = "debug"
33 output = "output/Ecore/"
34} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/ecore.ecore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/ecore.ecore
new file mode 100644
index 00000000..eaaf3d11
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/ecore.ecore
@@ -0,0 +1,1023 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="ecore" nsURI="http://www.eclipse.org/emf/2002/Ecore" nsPrefix="ecore">
4 <eClassifiers xsi:type="ecore:EClass" name="EAnnotation" eSuperTypes="#//EModelElement">
5 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
6 <details key="name" value="EAnnotation"/>
7 <details key="kind" value="elementOnly"/>
8 </eAnnotations>
9 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
10 <details key="constraints" value="WellFormedSourceURI"/>
11 </eAnnotations>
12 <eStructuralFeatures xsi:type="ecore:EReference" name="details" upperBound="-1"
13 eType="#//EStringToStringMapEntry" containment="true" resolveProxies="false">
14 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
15 <details key="kind" value="element"/>
16 <details key="name" value="details"/>
17 </eAnnotations>
18 </eStructuralFeatures>
19 <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
20 eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject" containment="true"
21 resolveProxies="false">
22 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
23 <details key="kind" value="element"/>
24 <details key="name" value="contents"/>
25 </eAnnotations>
26 </eStructuralFeatures>
27 <eStructuralFeatures xsi:type="ecore:EReference" name="references" upperBound="-1"
28 eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
29 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
30 <details key="kind" value="attribute"/>
31 <details key="name" value="references"/>
32 </eAnnotations>
33 </eStructuralFeatures>
34 <eStructuralFeatures xsi:type="ecore:EAttribute" name="source" eType="#//EString">
35 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
36 <details key="kind" value="attribute"/>
37 <details key="name" value="source"/>
38 </eAnnotations>
39 </eStructuralFeatures>
40 <eStructuralFeatures xsi:type="ecore:EReference" name="eModelElement" eType="#//EModelElement"
41 transient="true" eOpposite="#//EModelElement/eAnnotations"/>
42 </eClassifiers>
43 <eClassifiers xsi:type="ecore:EClass" name="EAttribute" eSuperTypes="#//EStructuralFeature">
44 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
45 <details key="name" value="EAttribute"/>
46 <details key="kind" value="elementOnly"/>
47 </eAnnotations>
48 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
49 <details key="constraints" value="ConsistentTransient"/>
50 </eAnnotations>
51 <eStructuralFeatures xsi:type="ecore:EReference" name="eAttributeType" lowerBound="1"
52 eType="#//EDataType" changeable="false" volatile="true" transient="true" derived="true">
53 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
54 <details key="kind" value="attribute"/>
55 <details key="name" value="eAttributeType"/>
56 </eAnnotations>
57 </eStructuralFeatures>
58 <eStructuralFeatures xsi:type="ecore:EAttribute" name="iD" eType="#//EBoolean">
59 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
60 <details key="kind" value="attribute"/>
61 <details key="name" value="iD"/>
62 </eAnnotations>
63 </eStructuralFeatures>
64 </eClassifiers>
65 <eClassifiers xsi:type="ecore:EDataType" name="EBigDecimal" instanceClassName="java.math.BigDecimal">
66 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
67 <details key="name" value="EBigDecimal"/>
68 <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#decimal"/>
69 </eAnnotations>
70 </eClassifiers>
71 <eClassifiers xsi:type="ecore:EDataType" name="EBigInteger" instanceClassName="java.math.BigInteger">
72 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
73 <details key="name" value="EBigInteger"/>
74 <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#integer"/>
75 </eAnnotations>
76 </eClassifiers>
77 <eClassifiers xsi:type="ecore:EDataType" name="EBoolean" instanceClassName="boolean">
78 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
79 <details key="name" value="EBoolean"/>
80 </eAnnotations>
81 </eClassifiers>
82 <eClassifiers xsi:type="ecore:EDataType" name="EBooleanObject" instanceClassName="java.lang.Boolean">
83 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
84 <details key="name" value="EBoolean:Object"/>
85 <details key="baseType" value="EBoolean"/>
86 </eAnnotations>
87 </eClassifiers>
88 <eClassifiers xsi:type="ecore:EDataType" name="EByte" instanceClassName="byte">
89 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
90 <details key="name" value="EByte"/>
91 <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#byte"/>
92 </eAnnotations>
93 </eClassifiers>
94 <eClassifiers xsi:type="ecore:EDataType" name="EByteArray" instanceClassName="byte[]">
95 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
96 <details key="name" value="EByteArray"/>
97 <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#hexBinary"/>
98 </eAnnotations>
99 </eClassifiers>
100 <eClassifiers xsi:type="ecore:EDataType" name="EByteObject" instanceClassName="java.lang.Byte">
101 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
102 <details key="name" value="EByte:Object"/>
103 <details key="baseType" value="EByte"/>
104 </eAnnotations>
105 </eClassifiers>
106 <eClassifiers xsi:type="ecore:EDataType" name="EChar" instanceClassName="char">
107 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
108 <details key="name" value="EChar"/>
109 </eAnnotations>
110 </eClassifiers>
111 <eClassifiers xsi:type="ecore:EDataType" name="ECharacterObject" instanceClassName="java.lang.Character">
112 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
113 <details key="name" value="EChar:Object"/>
114 <details key="baseType" value="EChar"/>
115 </eAnnotations>
116 </eClassifiers>
117 <eClassifiers xsi:type="ecore:EClass" name="EClass" eSuperTypes="#//EClassifier">
118 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
119 <details key="name" value="EClass"/>
120 <details key="kind" value="elementOnly"/>
121 </eAnnotations>
122 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
123 <details key="constraints" value="InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes DisjointFeatureAndOperationSignatures"/>
124 </eAnnotations>
125 <eOperations name="isSuperTypeOf" eType="#//EBoolean">
126 <eParameters name="someClass" eType="#//EClass"/>
127 </eOperations>
128 <eOperations name="getFeatureCount" eType="#//EInt"/>
129 <eOperations name="getEStructuralFeature" eType="#//EStructuralFeature">
130 <eParameters name="featureID" eType="#//EInt"/>
131 </eOperations>
132 <eOperations name="getFeatureID" eType="#//EInt">
133 <eParameters name="feature" eType="#//EStructuralFeature"/>
134 </eOperations>
135 <eOperations name="getEStructuralFeature" eType="#//EStructuralFeature">
136 <eParameters name="featureName" eType="#//EString"/>
137 </eOperations>
138 <eOperations name="getOperationCount" eType="#//EInt"/>
139 <eOperations name="getEOperation" eType="#//EOperation">
140 <eParameters name="operationID" eType="#//EInt"/>
141 </eOperations>
142 <eOperations name="getOperationID" eType="#//EInt">
143 <eParameters name="operation" eType="#//EOperation"/>
144 </eOperations>
145 <eOperations name="getOverride" eType="#//EOperation">
146 <eParameters name="operation" eType="#//EOperation"/>
147 </eOperations>
148 <eStructuralFeatures xsi:type="ecore:EReference" name="eOperations" upperBound="-1"
149 eType="#//EOperation" containment="true" resolveProxies="false" eOpposite="#//EOperation/eContainingClass">
150 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
151 <details key="kind" value="element"/>
152 <details key="name" value="eOperations"/>
153 </eAnnotations>
154 </eStructuralFeatures>
155 <eStructuralFeatures xsi:type="ecore:EReference" name="eStructuralFeatures" upperBound="-1"
156 eType="#//EStructuralFeature" containment="true" resolveProxies="false" eOpposite="#//EStructuralFeature/eContainingClass">
157 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
158 <details key="kind" value="element"/>
159 <details key="name" value="eStructuralFeatures"/>
160 </eAnnotations>
161 </eStructuralFeatures>
162 <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericSuperTypes" upperBound="-1"
163 eType="#//EGenericType" unsettable="true" containment="true" resolveProxies="false">
164 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
165 <details key="kind" value="element"/>
166 <details key="name" value="eGenericSuperTypes"/>
167 </eAnnotations>
168 <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
169 <details key="suppressedIsSetVisibility" value="true"/>
170 <details key="suppressedUnsetVisibility" value="true"/>
171 </eAnnotations>
172 </eStructuralFeatures>
173 <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="#//EBoolean">
174 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
175 <details key="kind" value="attribute"/>
176 <details key="name" value="abstract"/>
177 </eAnnotations>
178 </eStructuralFeatures>
179 <eStructuralFeatures xsi:type="ecore:EReference" name="eAllAttributes" upperBound="-1"
180 eType="#//EAttribute" changeable="false" volatile="true" transient="true"
181 derived="true">
182 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
183 <details key="kind" value="attribute"/>
184 <details key="name" value="eAllAttributes"/>
185 </eAnnotations>
186 </eStructuralFeatures>
187 <eStructuralFeatures xsi:type="ecore:EReference" name="eAllContainments" upperBound="-1"
188 eType="#//EReference" changeable="false" volatile="true" transient="true"
189 derived="true">
190 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
191 <details key="kind" value="attribute"/>
192 <details key="name" value="eAllContainments"/>
193 </eAnnotations>
194 </eStructuralFeatures>
195 <eStructuralFeatures xsi:type="ecore:EReference" name="eAllGenericSuperTypes"
196 upperBound="-1" eType="#//EGenericType" changeable="false" volatile="true"
197 transient="true" derived="true">
198 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
199 <details key="kind" value="attribute"/>
200 <details key="name" value="eAllGenericSuperTypes"/>
201 </eAnnotations>
202 </eStructuralFeatures>
203 <eStructuralFeatures xsi:type="ecore:EReference" name="eAllOperations" upperBound="-1"
204 eType="#//EOperation" changeable="false" volatile="true" transient="true"
205 derived="true">
206 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
207 <details key="kind" value="attribute"/>
208 <details key="name" value="eAllOperations"/>
209 </eAnnotations>
210 </eStructuralFeatures>
211 <eStructuralFeatures xsi:type="ecore:EReference" name="eAllReferences" upperBound="-1"
212 eType="#//EReference" changeable="false" volatile="true" transient="true"
213 derived="true">
214 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
215 <details key="kind" value="attribute"/>
216 <details key="name" value="eAllReferences"/>
217 </eAnnotations>
218 </eStructuralFeatures>
219 <eStructuralFeatures xsi:type="ecore:EReference" name="eAllStructuralFeatures"
220 upperBound="-1" eType="#//EStructuralFeature" changeable="false" volatile="true"
221 transient="true" derived="true">
222 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
223 <details key="kind" value="attribute"/>
224 <details key="name" value="eAllStructuralFeatures"/>
225 </eAnnotations>
226 </eStructuralFeatures>
227 <eStructuralFeatures xsi:type="ecore:EReference" name="eAllSuperTypes" upperBound="-1"
228 eType="#//EClass" changeable="false" volatile="true" transient="true" derived="true">
229 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
230 <details key="kind" value="attribute"/>
231 <details key="name" value="eAllSuperTypes"/>
232 </eAnnotations>
233 </eStructuralFeatures>
234 <eStructuralFeatures xsi:type="ecore:EReference" name="eAttributes" upperBound="-1"
235 eType="#//EAttribute" changeable="false" volatile="true" transient="true"
236 derived="true">
237 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
238 <details key="kind" value="attribute"/>
239 <details key="name" value="eAttributes"/>
240 </eAnnotations>
241 </eStructuralFeatures>
242 <eStructuralFeatures xsi:type="ecore:EReference" name="eIDAttribute" eType="#//EAttribute"
243 changeable="false" volatile="true" transient="true" derived="true" resolveProxies="false">
244 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
245 <details key="kind" value="attribute"/>
246 <details key="name" value="eIDAttribute"/>
247 </eAnnotations>
248 </eStructuralFeatures>
249 <eStructuralFeatures xsi:type="ecore:EReference" name="eReferences" upperBound="-1"
250 eType="#//EReference" changeable="false" volatile="true" transient="true"
251 derived="true">
252 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
253 <details key="kind" value="attribute"/>
254 <details key="name" value="eReferences"/>
255 </eAnnotations>
256 </eStructuralFeatures>
257 <eStructuralFeatures xsi:type="ecore:EReference" name="eSuperTypes" upperBound="-1"
258 eType="#//EClass" unsettable="true">
259 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
260 <details key="kind" value="attribute"/>
261 <details key="name" value="eSuperTypes"/>
262 </eAnnotations>
263 <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
264 <details key="suppressedIsSetVisibility" value="true"/>
265 <details key="suppressedUnsetVisibility" value="true"/>
266 </eAnnotations>
267 </eStructuralFeatures>
268 <eStructuralFeatures xsi:type="ecore:EAttribute" name="interface" eType="#//EBoolean">
269 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
270 <details key="kind" value="attribute"/>
271 <details key="name" value="interface"/>
272 </eAnnotations>
273 </eStructuralFeatures>
274 </eClassifiers>
275 <eClassifiers xsi:type="ecore:EClass" name="EClassifier" abstract="true" eSuperTypes="#//ENamedElement">
276 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
277 <details key="name" value="EClassifier"/>
278 <details key="kind" value="elementOnly"/>
279 </eAnnotations>
280 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
281 <details key="constraints" value="WellFormedInstanceTypeName UniqueTypeParameterNames"/>
282 </eAnnotations>
283 <eOperations name="isInstance" eType="#//EBoolean">
284 <eParameters name="object" eType="#//EJavaObject"/>
285 </eOperations>
286 <eOperations name="getClassifierID" eType="#//EInt"/>
287 <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameters" upperBound="-1"
288 eType="#//ETypeParameter" containment="true">
289 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
290 <details key="kind" value="element"/>
291 <details key="name" value="eTypeParameters"/>
292 </eAnnotations>
293 </eStructuralFeatures>
294 <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="#//EJavaObject"
295 changeable="false" volatile="true" transient="true" derived="true">
296 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
297 <details key="kind" value="attribute"/>
298 <details key="name" value="defaultValue"/>
299 </eAnnotations>
300 </eStructuralFeatures>
301 <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceClass" changeable="false"
302 volatile="true" transient="true" derived="true">
303 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
304 <details key="kind" value="attribute"/>
305 <details key="name" value="instanceClass"/>
306 </eAnnotations>
307 <eGenericType eClassifier="#//EJavaClass">
308 <eTypeArguments/>
309 </eGenericType>
310 </eStructuralFeatures>
311 <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceClassName" eType="#//EString"
312 volatile="true" unsettable="true">
313 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
314 <details key="kind" value="attribute"/>
315 <details key="name" value="instanceClassName"/>
316 </eAnnotations>
317 <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
318 <details key="suppressedIsSetVisibility" value="true"/>
319 <details key="suppressedUnsetVisibility" value="true"/>
320 </eAnnotations>
321 </eStructuralFeatures>
322 <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceTypeName" eType="#//EString"
323 volatile="true" unsettable="true">
324 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
325 <details key="kind" value="attribute"/>
326 <details key="name" value="instanceTypeName"/>
327 </eAnnotations>
328 <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
329 <details key="suppressedIsSetVisibility" value="true"/>
330 <details key="suppressedUnsetVisibility" value="true"/>
331 </eAnnotations>
332 </eStructuralFeatures>
333 <eStructuralFeatures xsi:type="ecore:EReference" name="ePackage" eType="#//EPackage"
334 transient="true" eOpposite="#//EPackage/eClassifiers"/>
335 </eClassifiers>
336 <eClassifiers xsi:type="ecore:EClass" name="EDataType" eSuperTypes="#//EClassifier">
337 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
338 <details key="name" value="EDataType"/>
339 <details key="kind" value="elementOnly"/>
340 </eAnnotations>
341 <eStructuralFeatures xsi:type="ecore:EAttribute" name="serializable" eType="#//EBoolean"
342 defaultValueLiteral="true">
343 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
344 <details key="kind" value="attribute"/>
345 <details key="name" value="serializable"/>
346 </eAnnotations>
347 </eStructuralFeatures>
348 </eClassifiers>
349 <eClassifiers xsi:type="ecore:EDataType" name="EDate" instanceClassName="java.util.Date">
350 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
351 <details key="name" value="EDate"/>
352 </eAnnotations>
353 </eClassifiers>
354 <eClassifiers xsi:type="ecore:EDataType" name="EDiagnosticChain" instanceClassName="org.eclipse.emf.common.util.DiagnosticChain"
355 serializable="false">
356 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
357 <details key="name" value="EDiagnosticChain"/>
358 </eAnnotations>
359 </eClassifiers>
360 <eClassifiers xsi:type="ecore:EDataType" name="EDouble" instanceClassName="double">
361 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
362 <details key="name" value="EDouble"/>
363 <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#double"/>
364 </eAnnotations>
365 </eClassifiers>
366 <eClassifiers xsi:type="ecore:EDataType" name="EDoubleObject" instanceClassName="java.lang.Double">
367 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
368 <details key="name" value="EDouble:Object"/>
369 <details key="baseType" value="EDouble"/>
370 </eAnnotations>
371 </eClassifiers>
372 <eClassifiers xsi:type="ecore:EDataType" name="EEList" instanceClassName="org.eclipse.emf.common.util.EList"
373 serializable="false">
374 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
375 <details key="name" value="EEList"/>
376 </eAnnotations>
377 <eTypeParameters name="E"/>
378 </eClassifiers>
379 <eClassifiers xsi:type="ecore:EClass" name="EEnum" eSuperTypes="#//EDataType">
380 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
381 <details key="name" value="EEnum"/>
382 <details key="kind" value="elementOnly"/>
383 </eAnnotations>
384 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
385 <details key="constraints" value="UniqueEnumeratorNames UniqueEnumeratorLiterals"/>
386 </eAnnotations>
387 <eOperations name="getEEnumLiteral" eType="#//EEnumLiteral">
388 <eParameters name="name" eType="#//EString"/>
389 </eOperations>
390 <eOperations name="getEEnumLiteral" eType="#//EEnumLiteral">
391 <eParameters name="value" eType="#//EInt"/>
392 </eOperations>
393 <eOperations name="getEEnumLiteralByLiteral" eType="#//EEnumLiteral">
394 <eParameters name="literal" eType="#//EString"/>
395 </eOperations>
396 <eStructuralFeatures xsi:type="ecore:EReference" name="eLiterals" upperBound="-1"
397 eType="#//EEnumLiteral" containment="true" resolveProxies="false" eOpposite="#//EEnumLiteral/eEnum">
398 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
399 <details key="kind" value="element"/>
400 <details key="name" value="eLiterals"/>
401 </eAnnotations>
402 </eStructuralFeatures>
403 </eClassifiers>
404 <eClassifiers xsi:type="ecore:EDataType" name="EEnumerator" instanceClassName="org.eclipse.emf.common.util.Enumerator"
405 serializable="false">
406 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
407 <details key="name" value="EEnumerator"/>
408 </eAnnotations>
409 </eClassifiers>
410 <eClassifiers xsi:type="ecore:EClass" name="EEnumLiteral" eSuperTypes="#//ENamedElement">
411 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
412 <details key="name" value="EEnumLiteral"/>
413 <details key="kind" value="elementOnly"/>
414 </eAnnotations>
415 <eStructuralFeatures xsi:type="ecore:EAttribute" name="instance" eType="#//EEnumerator"
416 transient="true">
417 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
418 <details key="kind" value="attribute"/>
419 <details key="name" value="instance"/>
420 </eAnnotations>
421 </eStructuralFeatures>
422 <eStructuralFeatures xsi:type="ecore:EAttribute" name="literal" eType="#//EString">
423 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
424 <details key="kind" value="attribute"/>
425 <details key="name" value="literal"/>
426 </eAnnotations>
427 </eStructuralFeatures>
428 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//EInt">
429 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
430 <details key="kind" value="attribute"/>
431 <details key="name" value="value"/>
432 </eAnnotations>
433 </eStructuralFeatures>
434 <eStructuralFeatures xsi:type="ecore:EReference" name="eEnum" eType="#//EEnum"
435 transient="true" eOpposite="#//EEnum/eLiterals"/>
436 </eClassifiers>
437 <eClassifiers xsi:type="ecore:EClass" name="EFactory" eSuperTypes="#//EModelElement">
438 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
439 <details key="name" value="EFactory"/>
440 <details key="kind" value="elementOnly"/>
441 </eAnnotations>
442 <eOperations name="create" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
443 <eParameters name="eClass" eType="#//EClass"/>
444 </eOperations>
445 <eOperations name="createFromString" eType="#//EJavaObject">
446 <eParameters name="eDataType" eType="#//EDataType"/>
447 <eParameters name="literalValue" eType="#//EString"/>
448 </eOperations>
449 <eOperations name="convertToString" eType="#//EString">
450 <eParameters name="eDataType" eType="#//EDataType"/>
451 <eParameters name="instanceValue" eType="#//EJavaObject"/>
452 </eOperations>
453 <eStructuralFeatures xsi:type="ecore:EReference" name="ePackage" lowerBound="1"
454 eType="#//EPackage" transient="true" resolveProxies="false" eOpposite="#//EPackage/eFactoryInstance">
455 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
456 <details key="kind" value="attribute"/>
457 <details key="name" value="ePackage"/>
458 </eAnnotations>
459 </eStructuralFeatures>
460 </eClassifiers>
461 <eClassifiers xsi:type="ecore:EDataType" name="EFeatureMap" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap"
462 serializable="false">
463 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
464 <details key="name" value="EFeatureMap"/>
465 </eAnnotations>
466 </eClassifiers>
467 <eClassifiers xsi:type="ecore:EDataType" name="EFeatureMapEntry" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap$Entry"
468 serializable="false">
469 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
470 <details key="name" value="EFeatureMapEntry"/>
471 </eAnnotations>
472 </eClassifiers>
473 <eClassifiers xsi:type="ecore:EDataType" name="EFloat" instanceClassName="float">
474 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
475 <details key="name" value="EFloat"/>
476 <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#float"/>
477 </eAnnotations>
478 </eClassifiers>
479 <eClassifiers xsi:type="ecore:EDataType" name="EFloatObject" instanceClassName="java.lang.Float">
480 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
481 <details key="name" value="EFloat:Object"/>
482 <details key="baseType" value="EFloat"/>
483 </eAnnotations>
484 </eClassifiers>
485 <eClassifiers xsi:type="ecore:EClass" name="EGenericType">
486 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
487 <details key="name" value="EGenericType"/>
488 <details key="kind" value="elementOnly"/>
489 </eAnnotations>
490 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
491 <details key="constraints" value="ConsistentType ConsistentBounds ConsistentArguments"/>
492 </eAnnotations>
493 <eStructuralFeatures xsi:type="ecore:EReference" name="eUpperBound" eType="#//EGenericType"
494 containment="true" resolveProxies="false">
495 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
496 <details key="kind" value="element"/>
497 <details key="name" value="eUpperBound"/>
498 </eAnnotations>
499 </eStructuralFeatures>
500 <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeArguments" upperBound="-1"
501 eType="#//EGenericType" containment="true" resolveProxies="false">
502 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
503 <details key="kind" value="element"/>
504 <details key="name" value="eTypeArguments"/>
505 </eAnnotations>
506 </eStructuralFeatures>
507 <eStructuralFeatures xsi:type="ecore:EReference" name="eLowerBound" eType="#//EGenericType"
508 containment="true" resolveProxies="false">
509 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
510 <details key="kind" value="element"/>
511 <details key="name" value="eLowerBound"/>
512 </eAnnotations>
513 </eStructuralFeatures>
514 <eStructuralFeatures xsi:type="ecore:EReference" name="eClassifier" eType="#//EClassifier">
515 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
516 <details key="kind" value="attribute"/>
517 <details key="name" value="eClassifier"/>
518 </eAnnotations>
519 </eStructuralFeatures>
520 <eStructuralFeatures xsi:type="ecore:EReference" name="eRawType" lowerBound="1"
521 eType="#//EClassifier" changeable="false" transient="true" derived="true">
522 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
523 <details key="kind" value="attribute"/>
524 <details key="name" value="eRawType"/>
525 </eAnnotations>
526 </eStructuralFeatures>
527 <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameter" eType="#//ETypeParameter"
528 resolveProxies="false">
529 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
530 <details key="kind" value="attribute"/>
531 <details key="name" value="eTypeParameter"/>
532 </eAnnotations>
533 </eStructuralFeatures>
534 </eClassifiers>
535 <eClassifiers xsi:type="ecore:EDataType" name="EInt" instanceClassName="int">
536 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
537 <details key="name" value="EInt"/>
538 </eAnnotations>
539 </eClassifiers>
540 <eClassifiers xsi:type="ecore:EDataType" name="EIntegerObject" instanceClassName="java.lang.Integer">
541 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
542 <details key="name" value="EInt:Object"/>
543 <details key="baseType" value="EInt"/>
544 </eAnnotations>
545 </eClassifiers>
546 <eClassifiers xsi:type="ecore:EDataType" name="EInvocationTargetException" instanceClassName="java.lang.reflect.InvocationTargetException"
547 serializable="false">
548 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
549 <details key="name" value="EInvocationTargetException"/>
550 </eAnnotations>
551 </eClassifiers>
552 <eClassifiers xsi:type="ecore:EDataType" name="EJavaClass" instanceClassName="java.lang.Class">
553 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
554 <details key="name" value="EJavaClass"/>
555 </eAnnotations>
556 <eTypeParameters name="T"/>
557 </eClassifiers>
558 <eClassifiers xsi:type="ecore:EDataType" name="EJavaObject" instanceClassName="java.lang.Object">
559 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
560 <details key="name" value="EJavaObject"/>
561 </eAnnotations>
562 </eClassifiers>
563 <eClassifiers xsi:type="ecore:EDataType" name="ELong" instanceClassName="long">
564 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
565 <details key="name" value="ELong"/>
566 <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#long"/>
567 </eAnnotations>
568 </eClassifiers>
569 <eClassifiers xsi:type="ecore:EDataType" name="ELongObject" instanceClassName="java.lang.Long">
570 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
571 <details key="name" value="ELong:Object"/>
572 <details key="baseType" value="ELong"/>
573 </eAnnotations>
574 </eClassifiers>
575 <eClassifiers xsi:type="ecore:EDataType" name="EMap" instanceClassName="java.util.Map"
576 serializable="false">
577 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
578 <details key="name" value="EMap"/>
579 </eAnnotations>
580 <eTypeParameters name="K"/>
581 <eTypeParameters name="V"/>
582 </eClassifiers>
583 <eClassifiers xsi:type="ecore:EClass" name="EModelElement" abstract="true">
584 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
585 <details key="name" value="EModelElement"/>
586 <details key="kind" value="elementOnly"/>
587 </eAnnotations>
588 <eOperations name="getEAnnotation" eType="#//EAnnotation">
589 <eParameters name="source" eType="#//EString"/>
590 </eOperations>
591 <eStructuralFeatures xsi:type="ecore:EReference" name="eAnnotations" upperBound="-1"
592 eType="#//EAnnotation" containment="true" resolveProxies="false" eOpposite="#//EAnnotation/eModelElement">
593 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
594 <details key="kind" value="element"/>
595 <details key="name" value="eAnnotations"/>
596 </eAnnotations>
597 </eStructuralFeatures>
598 </eClassifiers>
599 <eClassifiers xsi:type="ecore:EClass" name="ENamedElement" abstract="true" eSuperTypes="#//EModelElement">
600 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
601 <details key="name" value="ENamedElement"/>
602 <details key="kind" value="elementOnly"/>
603 </eAnnotations>
604 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
605 <details key="constraints" value="WellFormedName"/>
606 </eAnnotations>
607 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="#//EString">
608 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
609 <details key="kind" value="attribute"/>
610 <details key="name" value="name"/>
611 </eAnnotations>
612 </eStructuralFeatures>
613 </eClassifiers>
614 <eClassifiers xsi:type="ecore:EClass" name="EObject">
615 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
616 <details key="name" value="EObject"/>
617 <details key="kind" value="empty"/>
618 </eAnnotations>
619 <eOperations name="eClass" eType="#//EClass"/>
620 <eOperations name="eIsProxy" eType="#//EBoolean"/>
621 <eOperations name="eResource" eType="#//EResource"/>
622 <eOperations name="eContainer" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
623 <eOperations name="eContainingFeature" eType="#//EStructuralFeature"/>
624 <eOperations name="eContainmentFeature" eType="#//EReference"/>
625 <eOperations name="eContents">
626 <eGenericType eClassifier="#//EEList">
627 <eTypeArguments eClassifier="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
628 </eGenericType>
629 </eOperations>
630 <eOperations name="eAllContents">
631 <eGenericType eClassifier="#//ETreeIterator">
632 <eTypeArguments eClassifier="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
633 </eGenericType>
634 </eOperations>
635 <eOperations name="eCrossReferences">
636 <eGenericType eClassifier="#//EEList">
637 <eTypeArguments eClassifier="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
638 </eGenericType>
639 </eOperations>
640 <eOperations name="eGet" eType="#//EJavaObject">
641 <eParameters name="feature" eType="#//EStructuralFeature"/>
642 </eOperations>
643 <eOperations name="eGet" eType="#//EJavaObject">
644 <eParameters name="feature" eType="#//EStructuralFeature"/>
645 <eParameters name="resolve" eType="#//EBoolean"/>
646 </eOperations>
647 <eOperations name="eSet">
648 <eParameters name="feature" eType="#//EStructuralFeature"/>
649 <eParameters name="newValue" eType="#//EJavaObject"/>
650 </eOperations>
651 <eOperations name="eIsSet" eType="#//EBoolean">
652 <eParameters name="feature" eType="#//EStructuralFeature"/>
653 </eOperations>
654 <eOperations name="eUnset">
655 <eParameters name="feature" eType="#//EStructuralFeature"/>
656 </eOperations>
657 <eOperations name="eInvoke" eType="#//EJavaObject" eExceptions="#//EInvocationTargetException">
658 <eParameters name="operation" eType="#//EOperation"/>
659 <eParameters name="arguments">
660 <eGenericType eClassifier="#//EEList">
661 <eTypeArguments/>
662 </eGenericType>
663 </eParameters>
664 </eOperations>
665 </eClassifiers>
666 <eClassifiers xsi:type="ecore:EClass" name="EOperation" eSuperTypes="#//ETypedElement">
667 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
668 <details key="name" value="EOperation"/>
669 <details key="kind" value="elementOnly"/>
670 </eAnnotations>
671 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
672 <details key="constraints" value="UniqueParameterNames UniqueTypeParameterNames NoRepeatingVoid"/>
673 </eAnnotations>
674 <eOperations name="getOperationID" eType="#//EInt"/>
675 <eOperations name="isOverrideOf" eType="#//EBoolean">
676 <eParameters name="someOperation" eType="#//EOperation"/>
677 </eOperations>
678 <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameters" upperBound="-1"
679 eType="#//ETypeParameter" containment="true">
680 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
681 <details key="kind" value="element"/>
682 <details key="name" value="eTypeParameters"/>
683 </eAnnotations>
684 </eStructuralFeatures>
685 <eStructuralFeatures xsi:type="ecore:EReference" name="eParameters" upperBound="-1"
686 eType="#//EParameter" containment="true" resolveProxies="false" eOpposite="#//EParameter/eOperation">
687 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
688 <details key="kind" value="element"/>
689 <details key="name" value="eParameters"/>
690 </eAnnotations>
691 </eStructuralFeatures>
692 <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericExceptions" upperBound="-1"
693 eType="#//EGenericType" unsettable="true" containment="true" resolveProxies="false">
694 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
695 <details key="kind" value="element"/>
696 <details key="name" value="eGenericExceptions"/>
697 </eAnnotations>
698 <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
699 <details key="suppressedIsSetVisibility" value="true"/>
700 <details key="suppressedUnsetVisibility" value="true"/>
701 </eAnnotations>
702 </eStructuralFeatures>
703 <eStructuralFeatures xsi:type="ecore:EReference" name="eExceptions" upperBound="-1"
704 eType="#//EClassifier" unsettable="true">
705 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
706 <details key="kind" value="attribute"/>
707 <details key="name" value="eExceptions"/>
708 </eAnnotations>
709 <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
710 <details key="suppressedIsSetVisibility" value="true"/>
711 <details key="suppressedUnsetVisibility" value="true"/>
712 </eAnnotations>
713 </eStructuralFeatures>
714 <eStructuralFeatures xsi:type="ecore:EReference" name="eContainingClass" eType="#//EClass"
715 transient="true" eOpposite="#//EClass/eOperations"/>
716 </eClassifiers>
717 <eClassifiers xsi:type="ecore:EClass" name="EPackage" eSuperTypes="#//ENamedElement">
718 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
719 <details key="name" value="EPackage"/>
720 <details key="kind" value="elementOnly"/>
721 </eAnnotations>
722 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
723 <details key="constraints" value="WellFormedNsURI WellFormedNsPrefix UniqueSubpackageNames UniqueClassifierNames UniqueNsURIs"/>
724 </eAnnotations>
725 <eOperations name="getEClassifier" eType="#//EClassifier">
726 <eParameters name="name" eType="#//EString"/>
727 </eOperations>
728 <eStructuralFeatures xsi:type="ecore:EReference" name="eClassifiers" upperBound="-1"
729 eType="#//EClassifier" containment="true" eOpposite="#//EClassifier/ePackage">
730 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
731 <details key="kind" value="element"/>
732 <details key="name" value="eClassifiers"/>
733 </eAnnotations>
734 </eStructuralFeatures>
735 <eStructuralFeatures xsi:type="ecore:EReference" name="eSubpackages" upperBound="-1"
736 eType="#//EPackage" containment="true" eOpposite="#//EPackage/eSuperPackage">
737 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
738 <details key="kind" value="element"/>
739 <details key="name" value="eSubpackages"/>
740 </eAnnotations>
741 </eStructuralFeatures>
742 <eStructuralFeatures xsi:type="ecore:EReference" name="eFactoryInstance" lowerBound="1"
743 eType="#//EFactory" transient="true" resolveProxies="false" eOpposite="#//EFactory/ePackage">
744 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
745 <details key="kind" value="attribute"/>
746 <details key="name" value="eFactoryInstance"/>
747 </eAnnotations>
748 </eStructuralFeatures>
749 <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsPrefix" eType="#//EString">
750 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
751 <details key="kind" value="attribute"/>
752 <details key="name" value="nsPrefix"/>
753 </eAnnotations>
754 </eStructuralFeatures>
755 <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsURI" eType="#//EString">
756 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
757 <details key="kind" value="attribute"/>
758 <details key="name" value="nsURI"/>
759 </eAnnotations>
760 </eStructuralFeatures>
761 <eStructuralFeatures xsi:type="ecore:EReference" name="eSuperPackage" eType="#//EPackage"
762 transient="true" eOpposite="#//EPackage/eSubpackages"/>
763 </eClassifiers>
764 <eClassifiers xsi:type="ecore:EClass" name="EParameter" eSuperTypes="#//ETypedElement">
765 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
766 <details key="name" value="EParameter"/>
767 <details key="kind" value="elementOnly"/>
768 </eAnnotations>
769 <eStructuralFeatures xsi:type="ecore:EReference" name="eOperation" eType="#//EOperation"
770 transient="true" eOpposite="#//EOperation/eParameters"/>
771 </eClassifiers>
772 <eClassifiers xsi:type="ecore:EClass" name="EReference" eSuperTypes="#//EStructuralFeature">
773 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
774 <details key="name" value="EReference"/>
775 <details key="kind" value="elementOnly"/>
776 </eAnnotations>
777 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
778 <details key="constraints" value="ConsistentOpposite SingleContainer ConsistentKeys ConsistentUnique ConsistentContainer"/>
779 </eAnnotations>
780 <eStructuralFeatures xsi:type="ecore:EAttribute" name="container" eType="#//EBoolean"
781 changeable="false" volatile="true" transient="true" derived="true">
782 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
783 <details key="kind" value="attribute"/>
784 <details key="name" value="container"/>
785 </eAnnotations>
786 </eStructuralFeatures>
787 <eStructuralFeatures xsi:type="ecore:EAttribute" name="containment" eType="#//EBoolean">
788 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
789 <details key="kind" value="attribute"/>
790 <details key="name" value="containment"/>
791 </eAnnotations>
792 </eStructuralFeatures>
793 <eStructuralFeatures xsi:type="ecore:EReference" name="eKeys" upperBound="-1"
794 eType="#//EAttribute">
795 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
796 <details key="kind" value="attribute"/>
797 <details key="name" value="eKeys"/>
798 </eAnnotations>
799 </eStructuralFeatures>
800 <eStructuralFeatures xsi:type="ecore:EReference" name="eOpposite" eType="#//EReference">
801 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
802 <details key="kind" value="attribute"/>
803 <details key="name" value="eOpposite"/>
804 </eAnnotations>
805 </eStructuralFeatures>
806 <eStructuralFeatures xsi:type="ecore:EReference" name="eReferenceType" lowerBound="1"
807 eType="#//EClass" changeable="false" volatile="true" transient="true" derived="true">
808 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
809 <details key="kind" value="attribute"/>
810 <details key="name" value="eReferenceType"/>
811 </eAnnotations>
812 </eStructuralFeatures>
813 <eStructuralFeatures xsi:type="ecore:EAttribute" name="resolveProxies" eType="#//EBoolean"
814 defaultValueLiteral="true">
815 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
816 <details key="kind" value="attribute"/>
817 <details key="name" value="resolveProxies"/>
818 </eAnnotations>
819 </eStructuralFeatures>
820 </eClassifiers>
821 <eClassifiers xsi:type="ecore:EDataType" name="EResource" instanceClassName="org.eclipse.emf.ecore.resource.Resource"
822 serializable="false">
823 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
824 <details key="name" value="EResource"/>
825 </eAnnotations>
826 </eClassifiers>
827 <eClassifiers xsi:type="ecore:EDataType" name="EResourceSet" instanceClassName="org.eclipse.emf.ecore.resource.ResourceSet"
828 serializable="false">
829 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
830 <details key="name" value="EResourceSet"/>
831 </eAnnotations>
832 </eClassifiers>
833 <eClassifiers xsi:type="ecore:EDataType" name="EShort" instanceClassName="short">
834 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
835 <details key="name" value="EShort"/>
836 <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#short"/>
837 </eAnnotations>
838 </eClassifiers>
839 <eClassifiers xsi:type="ecore:EDataType" name="EShortObject" instanceClassName="java.lang.Short">
840 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
841 <details key="name" value="EShort:Object"/>
842 <details key="baseType" value="EShort"/>
843 </eAnnotations>
844 </eClassifiers>
845 <eClassifiers xsi:type="ecore:EDataType" name="EString" instanceClassName="java.lang.String">
846 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
847 <details key="name" value="EString"/>
848 <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#string"/>
849 </eAnnotations>
850 </eClassifiers>
851 <eClassifiers xsi:type="ecore:EClass" name="EStringToStringMapEntry" instanceClassName="java.util.Map$Entry">
852 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
853 <details key="name" value="EStringToStringMapEntry"/>
854 <details key="kind" value="empty"/>
855 </eAnnotations>
856 <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="#//EString">
857 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
858 <details key="kind" value="attribute"/>
859 <details key="name" value="key"/>
860 </eAnnotations>
861 </eStructuralFeatures>
862 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//EString">
863 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
864 <details key="kind" value="attribute"/>
865 <details key="name" value="value"/>
866 </eAnnotations>
867 </eStructuralFeatures>
868 </eClassifiers>
869 <eClassifiers xsi:type="ecore:EClass" name="EStructuralFeature" abstract="true"
870 eSuperTypes="#//ETypedElement">
871 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
872 <details key="name" value="EStructuralFeature"/>
873 <details key="kind" value="elementOnly"/>
874 </eAnnotations>
875 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
876 <details key="constraints" value="ValidDefaultValueLiteral"/>
877 </eAnnotations>
878 <eOperations name="getFeatureID" eType="#//EInt"/>
879 <eOperations name="getContainerClass">
880 <eGenericType eClassifier="#//EJavaClass">
881 <eTypeArguments/>
882 </eGenericType>
883 </eOperations>
884 <eStructuralFeatures xsi:type="ecore:EAttribute" name="changeable" eType="#//EBoolean"
885 defaultValueLiteral="true">
886 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
887 <details key="kind" value="attribute"/>
888 <details key="name" value="changeable"/>
889 </eAnnotations>
890 </eStructuralFeatures>
891 <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="#//EJavaObject"
892 changeable="false" volatile="true" transient="true" derived="true">
893 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
894 <details key="kind" value="attribute"/>
895 <details key="name" value="defaultValue"/>
896 </eAnnotations>
897 </eStructuralFeatures>
898 <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValueLiteral" eType="#//EString">
899 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
900 <details key="kind" value="attribute"/>
901 <details key="name" value="defaultValueLiteral"/>
902 </eAnnotations>
903 </eStructuralFeatures>
904 <eStructuralFeatures xsi:type="ecore:EAttribute" name="derived" eType="#//EBoolean">
905 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
906 <details key="kind" value="attribute"/>
907 <details key="name" value="derived"/>
908 </eAnnotations>
909 </eStructuralFeatures>
910 <eStructuralFeatures xsi:type="ecore:EAttribute" name="transient" eType="#//EBoolean">
911 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
912 <details key="kind" value="attribute"/>
913 <details key="name" value="transient"/>
914 </eAnnotations>
915 </eStructuralFeatures>
916 <eStructuralFeatures xsi:type="ecore:EAttribute" name="unsettable" eType="#//EBoolean">
917 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
918 <details key="kind" value="attribute"/>
919 <details key="name" value="unsettable"/>
920 </eAnnotations>
921 </eStructuralFeatures>
922 <eStructuralFeatures xsi:type="ecore:EAttribute" name="volatile" eType="#//EBoolean">
923 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
924 <details key="kind" value="attribute"/>
925 <details key="name" value="volatile"/>
926 </eAnnotations>
927 </eStructuralFeatures>
928 <eStructuralFeatures xsi:type="ecore:EReference" name="eContainingClass" eType="#//EClass"
929 transient="true" eOpposite="#//EClass/eStructuralFeatures"/>
930 </eClassifiers>
931 <eClassifiers xsi:type="ecore:EDataType" name="ETreeIterator" instanceClassName="org.eclipse.emf.common.util.TreeIterator"
932 serializable="false">
933 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
934 <details key="name" value="ETreeIterator"/>
935 </eAnnotations>
936 <eTypeParameters name="E"/>
937 </eClassifiers>
938 <eClassifiers xsi:type="ecore:EClass" name="ETypedElement" abstract="true" eSuperTypes="#//ENamedElement">
939 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
940 <details key="name" value="ETypedElement"/>
941 <details key="kind" value="elementOnly"/>
942 </eAnnotations>
943 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
944 <details key="constraints" value="ValidLowerBound ValidUpperBound ConsistentBounds ValidType"/>
945 </eAnnotations>
946 <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericType" eType="#//EGenericType"
947 volatile="true" unsettable="true" containment="true" resolveProxies="false">
948 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
949 <details key="kind" value="element"/>
950 <details key="name" value="eGenericType"/>
951 </eAnnotations>
952 <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
953 <details key="suppressedIsSetVisibility" value="true"/>
954 <details key="suppressedUnsetVisibility" value="true"/>
955 </eAnnotations>
956 </eStructuralFeatures>
957 <eStructuralFeatures xsi:type="ecore:EReference" name="eType" eType="#//EClassifier"
958 volatile="true" unsettable="true">
959 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
960 <details key="kind" value="attribute"/>
961 <details key="name" value="eType"/>
962 </eAnnotations>
963 <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
964 <details key="suppressedIsSetVisibility" value="true"/>
965 <details key="suppressedUnsetVisibility" value="true"/>
966 </eAnnotations>
967 </eStructuralFeatures>
968 <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerBound" eType="#//EInt">
969 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
970 <details key="kind" value="attribute"/>
971 <details key="name" value="lowerBound"/>
972 </eAnnotations>
973 </eStructuralFeatures>
974 <eStructuralFeatures xsi:type="ecore:EAttribute" name="many" eType="#//EBoolean"
975 changeable="false" volatile="true" transient="true" derived="true">
976 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
977 <details key="kind" value="attribute"/>
978 <details key="name" value="many"/>
979 </eAnnotations>
980 </eStructuralFeatures>
981 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordered" eType="#//EBoolean"
982 defaultValueLiteral="true">
983 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
984 <details key="kind" value="attribute"/>
985 <details key="name" value="ordered"/>
986 </eAnnotations>
987 </eStructuralFeatures>
988 <eStructuralFeatures xsi:type="ecore:EAttribute" name="required" eType="#//EBoolean"
989 changeable="false" volatile="true" transient="true" derived="true">
990 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
991 <details key="kind" value="attribute"/>
992 <details key="name" value="required"/>
993 </eAnnotations>
994 </eStructuralFeatures>
995 <eStructuralFeatures xsi:type="ecore:EAttribute" name="unique" eType="#//EBoolean"
996 defaultValueLiteral="true">
997 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
998 <details key="kind" value="attribute"/>
999 <details key="name" value="unique"/>
1000 </eAnnotations>
1001 </eStructuralFeatures>
1002 <eStructuralFeatures xsi:type="ecore:EAttribute" name="upperBound" eType="#//EInt"
1003 defaultValueLiteral="1">
1004 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
1005 <details key="kind" value="attribute"/>
1006 <details key="name" value="upperBound"/>
1007 </eAnnotations>
1008 </eStructuralFeatures>
1009 </eClassifiers>
1010 <eClassifiers xsi:type="ecore:EClass" name="ETypeParameter" eSuperTypes="#//ENamedElement">
1011 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
1012 <details key="name" value="ETypeParameter"/>
1013 <details key="kind" value="elementOnly"/>
1014 </eAnnotations>
1015 <eStructuralFeatures xsi:type="ecore:EReference" name="eBounds" upperBound="-1"
1016 eType="#//EGenericType" containment="true" resolveProxies="false">
1017 <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
1018 <details key="kind" value="element"/>
1019 <details key="name" value="eBounds"/>
1020 </eAnnotations>
1021 </eStructuralFeatures>
1022 </eClassifiers>
1023</ecore:EPackage>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml b/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml
index 6f4ab31b..6ac719c8 100644
--- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml
@@ -12,4 +12,9 @@
12 <query-specification fqn="ca.mcgill.ecse.socialnetwork.plugin.friendship"/> 12 <query-specification fqn="ca.mcgill.ecse.socialnetwork.plugin.friendship"/>
13 </group> 13 </group>
14 </extension> 14 </extension>
15 <extension id="queries.Ecore_pattern" point="org.eclipse.viatra.query.runtime.queryspecification">
16 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:queries.Ecore_pattern" id="queries.Ecore_pattern">
17 <query-specification fqn="queries.sameSuperClass"/>
18 </group>
19 </extension>
15</plugin> 20</plugin>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/queries/queries/ecore_pattern.vql b/Metrics/Metrics-Calculation/SocialNetwork_plugin/queries/queries/ecore_pattern.vql
new file mode 100644
index 00000000..a6f384d9
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/queries/queries/ecore_pattern.vql
@@ -0,0 +1,9 @@
1package queries
2import epackage "http://www.eclipse.org/emf/2002/Ecore"
3
4@Constraint(severity="error", message="error", key = {c})
5pattern sameSuperClass(c : EClass, s1 : EClass, s2: EClass) {
6 EClass.eSuperTypes(c, s1);
7 EClass.eSuperTypes(c, s2);
8 s1 == s2;
9} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/.gitignore
new file mode 100644
index 00000000..121edf31
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/.gitignore
@@ -0,0 +1,3 @@
1/.Ecore_pattern.java._trace
2/.MultipleTransitionFromEntry.java._trace
3/.SameSuperClass.java._trace
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore_pattern.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore_pattern.java
new file mode 100644
index 00000000..e2627646
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore_pattern.java
@@ -0,0 +1,53 @@
1/**
2 * Generated from platform:/resource/SocialNetwork_plugin/queries/queries/ecore_pattern.vql
3 */
4package queries;
5
6import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
7import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup;
8import queries.SameSuperClass;
9
10/**
11 * A pattern group formed of all public patterns defined in ecore_pattern.vql.
12 *
13 * <p>Use the static instance as any {@link interface org.eclipse.viatra.query.runtime.api.IQueryGroup}, to conveniently prepare
14 * a VIATRA Query engine for matching all patterns originally defined in file ecore_pattern.vql,
15 * in order to achieve better performance than one-by-one on-demand matcher initialization.
16 *
17 * <p> From package queries, the group contains the definition of the following patterns: <ul>
18 * <li>sameSuperClass</li>
19 * </ul>
20 *
21 * @see IQueryGroup
22 *
23 */
24@SuppressWarnings("all")
25public final class Ecore_pattern extends BaseGeneratedPatternGroup {
26 /**
27 * Access the pattern group.
28 *
29 * @return the singleton instance of the group
30 * @throws ViatraQueryRuntimeException if there was an error loading the generated code of pattern specifications
31 *
32 */
33 public static Ecore_pattern instance() {
34 if (INSTANCE == null) {
35 INSTANCE = new Ecore_pattern();
36 }
37 return INSTANCE;
38 }
39
40 private static Ecore_pattern INSTANCE;
41
42 private Ecore_pattern() {
43 querySpecifications.add(SameSuperClass.instance());
44 }
45
46 public SameSuperClass getSameSuperClass() {
47 return SameSuperClass.instance();
48 }
49
50 public SameSuperClass.Matcher getSameSuperClass(final ViatraQueryEngine engine) {
51 return SameSuperClass.Matcher.on(engine);
52 }
53}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/SameSuperClass.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/SameSuperClass.java
new file mode 100644
index 00000000..2e8a19d8
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/SameSuperClass.java
@@ -0,0 +1,824 @@
1/**
2 * Generated from platform:/resource/SocialNetwork_plugin/queries/queries/ecore_pattern.vql
3 */
4package queries;
5
6import java.util.Arrays;
7import java.util.Collection;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Objects;
11import java.util.Optional;
12import java.util.Set;
13import java.util.function.Consumer;
14import java.util.stream.Collectors;
15import java.util.stream.Stream;
16import org.apache.log4j.Logger;
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.viatra.query.runtime.api.IPatternMatch;
19import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
20import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
21import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
23import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
24import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
25import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
26import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
40import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
41
42/**
43 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
44 *
45 * <p>Original source:
46 * <code><pre>
47 * {@literal @}Constraint(severity="error", message="error", key = {c})
48 * pattern sameSuperClass(c : EClass, s1 : EClass, s2: EClass) {
49 * EClass.eSuperTypes(c, s1);
50 * EClass.eSuperTypes(c, s2);
51 * s1 == s2;
52 * }
53 * </pre></code>
54 *
55 * @see Matcher
56 * @see Match
57 *
58 */
59@SuppressWarnings("all")
60public final class SameSuperClass extends BaseGeneratedEMFQuerySpecification<SameSuperClass.Matcher> {
61 /**
62 * Pattern-specific match representation of the queries.sameSuperClass pattern,
63 * to be used in conjunction with {@link Matcher}.
64 *
65 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
66 * Each instance is a (possibly partial) substitution of pattern parameters,
67 * usable to represent a match of the pattern in the result of a query,
68 * or to specify the bound (fixed) input parameters when issuing a query.
69 *
70 * @see Matcher
71 *
72 */
73 public static abstract class Match extends BasePatternMatch {
74 private EClass fC;
75
76 private EClass fS1;
77
78 private EClass fS2;
79
80 private static List<String> parameterNames = makeImmutableList("c", "s1", "s2");
81
82 private Match(final EClass pC, final EClass pS1, final EClass pS2) {
83 this.fC = pC;
84 this.fS1 = pS1;
85 this.fS2 = pS2;
86 }
87
88 @Override
89 public Object get(final String parameterName) {
90 if ("c".equals(parameterName)) return this.fC;
91 if ("s1".equals(parameterName)) return this.fS1;
92 if ("s2".equals(parameterName)) return this.fS2;
93 return null;
94 }
95
96 public EClass getC() {
97 return this.fC;
98 }
99
100 public EClass getS1() {
101 return this.fS1;
102 }
103
104 public EClass getS2() {
105 return this.fS2;
106 }
107
108 @Override
109 public boolean set(final String parameterName, final Object newValue) {
110 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
111 if ("c".equals(parameterName) ) {
112 this.fC = (EClass) newValue;
113 return true;
114 }
115 if ("s1".equals(parameterName) ) {
116 this.fS1 = (EClass) newValue;
117 return true;
118 }
119 if ("s2".equals(parameterName) ) {
120 this.fS2 = (EClass) newValue;
121 return true;
122 }
123 return false;
124 }
125
126 public void setC(final EClass pC) {
127 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
128 this.fC = pC;
129 }
130
131 public void setS1(final EClass pS1) {
132 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
133 this.fS1 = pS1;
134 }
135
136 public void setS2(final EClass pS2) {
137 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
138 this.fS2 = pS2;
139 }
140
141 @Override
142 public String patternName() {
143 return "queries.sameSuperClass";
144 }
145
146 @Override
147 public List<String> parameterNames() {
148 return SameSuperClass.Match.parameterNames;
149 }
150
151 @Override
152 public Object[] toArray() {
153 return new Object[]{fC, fS1, fS2};
154 }
155
156 @Override
157 public SameSuperClass.Match toImmutable() {
158 return isMutable() ? newMatch(fC, fS1, fS2) : this;
159 }
160
161 @Override
162 public String prettyPrint() {
163 StringBuilder result = new StringBuilder();
164 result.append("\"c\"=" + prettyPrintValue(fC) + ", ");
165 result.append("\"s1\"=" + prettyPrintValue(fS1) + ", ");
166 result.append("\"s2\"=" + prettyPrintValue(fS2));
167 return result.toString();
168 }
169
170 @Override
171 public int hashCode() {
172 return Objects.hash(fC, fS1, fS2);
173 }
174
175 @Override
176 public boolean equals(final Object obj) {
177 if (this == obj)
178 return true;
179 if (obj == null) {
180 return false;
181 }
182 if ((obj instanceof SameSuperClass.Match)) {
183 SameSuperClass.Match other = (SameSuperClass.Match) obj;
184 return Objects.equals(fC, other.fC) && Objects.equals(fS1, other.fS1) && Objects.equals(fS2, other.fS2);
185 } else {
186 // this should be infrequent
187 if (!(obj instanceof IPatternMatch)) {
188 return false;
189 }
190 IPatternMatch otherSig = (IPatternMatch) obj;
191 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
192 }
193 }
194
195 @Override
196 public SameSuperClass specification() {
197 return SameSuperClass.instance();
198 }
199
200 /**
201 * Returns an empty, mutable match.
202 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
203 *
204 * @return the empty match.
205 *
206 */
207 public static SameSuperClass.Match newEmptyMatch() {
208 return new Mutable(null, null, null);
209 }
210
211 /**
212 * Returns a mutable (partial) match.
213 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
214 *
215 * @param pC the fixed value of pattern parameter c, or null if not bound.
216 * @param pS1 the fixed value of pattern parameter s1, or null if not bound.
217 * @param pS2 the fixed value of pattern parameter s2, or null if not bound.
218 * @return the new, mutable (partial) match object.
219 *
220 */
221 public static SameSuperClass.Match newMutableMatch(final EClass pC, final EClass pS1, final EClass pS2) {
222 return new Mutable(pC, pS1, pS2);
223 }
224
225 /**
226 * Returns a new (partial) match.
227 * This can be used e.g. to call the matcher with a partial match.
228 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
229 * @param pC the fixed value of pattern parameter c, or null if not bound.
230 * @param pS1 the fixed value of pattern parameter s1, or null if not bound.
231 * @param pS2 the fixed value of pattern parameter s2, or null if not bound.
232 * @return the (partial) match object.
233 *
234 */
235 public static SameSuperClass.Match newMatch(final EClass pC, final EClass pS1, final EClass pS2) {
236 return new Immutable(pC, pS1, pS2);
237 }
238
239 private static final class Mutable extends SameSuperClass.Match {
240 Mutable(final EClass pC, final EClass pS1, final EClass pS2) {
241 super(pC, pS1, pS2);
242 }
243
244 @Override
245 public boolean isMutable() {
246 return true;
247 }
248 }
249
250 private static final class Immutable extends SameSuperClass.Match {
251 Immutable(final EClass pC, final EClass pS1, final EClass pS2) {
252 super(pC, pS1, pS2);
253 }
254
255 @Override
256 public boolean isMutable() {
257 return false;
258 }
259 }
260 }
261
262 /**
263 * Generated pattern matcher API of the queries.sameSuperClass pattern,
264 * providing pattern-specific query methods.
265 *
266 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
267 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
268 *
269 * <p>Matches of the pattern will be represented as {@link Match}.
270 *
271 * <p>Original source:
272 * <code><pre>
273 * {@literal @}Constraint(severity="error", message="error", key = {c})
274 * pattern sameSuperClass(c : EClass, s1 : EClass, s2: EClass) {
275 * EClass.eSuperTypes(c, s1);
276 * EClass.eSuperTypes(c, s2);
277 * s1 == s2;
278 * }
279 * </pre></code>
280 *
281 * @see Match
282 * @see SameSuperClass
283 *
284 */
285 public static class Matcher extends BaseMatcher<SameSuperClass.Match> {
286 /**
287 * Initializes the pattern matcher within an existing VIATRA Query engine.
288 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
289 *
290 * @param engine the existing VIATRA Query engine in which this matcher will be created.
291 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
292 *
293 */
294 public static SameSuperClass.Matcher on(final ViatraQueryEngine engine) {
295 // check if matcher already exists
296 Matcher matcher = engine.getExistingMatcher(querySpecification());
297 if (matcher == null) {
298 matcher = (Matcher)engine.getMatcher(querySpecification());
299 }
300 return matcher;
301 }
302
303 /**
304 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
305 * @return an initialized matcher
306 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
307 *
308 */
309 public static SameSuperClass.Matcher create() {
310 return new Matcher();
311 }
312
313 private static final int POSITION_C = 0;
314
315 private static final int POSITION_S1 = 1;
316
317 private static final int POSITION_S2 = 2;
318
319 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(SameSuperClass.Matcher.class);
320
321 /**
322 * Initializes the pattern matcher within an existing VIATRA Query engine.
323 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
324 *
325 * @param engine the existing VIATRA Query engine in which this matcher will be created.
326 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
327 *
328 */
329 private Matcher() {
330 super(querySpecification());
331 }
332
333 /**
334 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
335 * @param pC the fixed value of pattern parameter c, or null if not bound.
336 * @param pS1 the fixed value of pattern parameter s1, or null if not bound.
337 * @param pS2 the fixed value of pattern parameter s2, or null if not bound.
338 * @return matches represented as a Match object.
339 *
340 */
341 public Collection<SameSuperClass.Match> getAllMatches(final EClass pC, final EClass pS1, final EClass pS2) {
342 return rawStreamAllMatches(new Object[]{pC, pS1, pS2}).collect(Collectors.toSet());
343 }
344
345 /**
346 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
347 * </p>
348 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
349 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
350 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
351 * @param pC the fixed value of pattern parameter c, or null if not bound.
352 * @param pS1 the fixed value of pattern parameter s1, or null if not bound.
353 * @param pS2 the fixed value of pattern parameter s2, or null if not bound.
354 * @return a stream of matches represented as a Match object.
355 *
356 */
357 public Stream<SameSuperClass.Match> streamAllMatches(final EClass pC, final EClass pS1, final EClass pS2) {
358 return rawStreamAllMatches(new Object[]{pC, pS1, pS2});
359 }
360
361 /**
362 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
363 * Neither determinism nor randomness of selection is guaranteed.
364 * @param pC the fixed value of pattern parameter c, or null if not bound.
365 * @param pS1 the fixed value of pattern parameter s1, or null if not bound.
366 * @param pS2 the fixed value of pattern parameter s2, or null if not bound.
367 * @return a match represented as a Match object, or null if no match is found.
368 *
369 */
370 public Optional<SameSuperClass.Match> getOneArbitraryMatch(final EClass pC, final EClass pS1, final EClass pS2) {
371 return rawGetOneArbitraryMatch(new Object[]{pC, pS1, pS2});
372 }
373
374 /**
375 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
376 * under any possible substitution of the unspecified parameters (if any).
377 * @param pC the fixed value of pattern parameter c, or null if not bound.
378 * @param pS1 the fixed value of pattern parameter s1, or null if not bound.
379 * @param pS2 the fixed value of pattern parameter s2, or null if not bound.
380 * @return true if the input is a valid (partial) match of the pattern.
381 *
382 */
383 public boolean hasMatch(final EClass pC, final EClass pS1, final EClass pS2) {
384 return rawHasMatch(new Object[]{pC, pS1, pS2});
385 }
386
387 /**
388 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
389 * @param pC the fixed value of pattern parameter c, or null if not bound.
390 * @param pS1 the fixed value of pattern parameter s1, or null if not bound.
391 * @param pS2 the fixed value of pattern parameter s2, or null if not bound.
392 * @return the number of pattern matches found.
393 *
394 */
395 public int countMatches(final EClass pC, final EClass pS1, final EClass pS2) {
396 return rawCountMatches(new Object[]{pC, pS1, pS2});
397 }
398
399 /**
400 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
401 * Neither determinism nor randomness of selection is guaranteed.
402 * @param pC the fixed value of pattern parameter c, or null if not bound.
403 * @param pS1 the fixed value of pattern parameter s1, or null if not bound.
404 * @param pS2 the fixed value of pattern parameter s2, or null if not bound.
405 * @param processor the action that will process the selected match.
406 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
407 *
408 */
409 public boolean forOneArbitraryMatch(final EClass pC, final EClass pS1, final EClass pS2, final Consumer<? super SameSuperClass.Match> processor) {
410 return rawForOneArbitraryMatch(new Object[]{pC, pS1, pS2}, processor);
411 }
412
413 /**
414 * Returns a new (partial) match.
415 * This can be used e.g. to call the matcher with a partial match.
416 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
417 * @param pC the fixed value of pattern parameter c, or null if not bound.
418 * @param pS1 the fixed value of pattern parameter s1, or null if not bound.
419 * @param pS2 the fixed value of pattern parameter s2, or null if not bound.
420 * @return the (partial) match object.
421 *
422 */
423 public SameSuperClass.Match newMatch(final EClass pC, final EClass pS1, final EClass pS2) {
424 return SameSuperClass.Match.newMatch(pC, pS1, pS2);
425 }
426
427 /**
428 * Retrieve the set of values that occur in matches for c.
429 * @return the Set of all values or empty set if there are no matches
430 *
431 */
432 protected Stream<EClass> rawStreamAllValuesOfc(final Object[] parameters) {
433 return rawStreamAllValues(POSITION_C, parameters).map(EClass.class::cast);
434 }
435
436 /**
437 * Retrieve the set of values that occur in matches for c.
438 * @return the Set of all values or empty set if there are no matches
439 *
440 */
441 public Set<EClass> getAllValuesOfc() {
442 return rawStreamAllValuesOfc(emptyArray()).collect(Collectors.toSet());
443 }
444
445 /**
446 * Retrieve the set of values that occur in matches for c.
447 * @return the Set of all values or empty set if there are no matches
448 *
449 */
450 public Stream<EClass> streamAllValuesOfc() {
451 return rawStreamAllValuesOfc(emptyArray());
452 }
453
454 /**
455 * Retrieve the set of values that occur in matches for c.
456 * </p>
457 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
458 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
459 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
460 *
461 * @return the Stream of all values or empty set if there are no matches
462 *
463 */
464 public Stream<EClass> streamAllValuesOfc(final SameSuperClass.Match partialMatch) {
465 return rawStreamAllValuesOfc(partialMatch.toArray());
466 }
467
468 /**
469 * Retrieve the set of values that occur in matches for c.
470 * </p>
471 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
472 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
473 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
474 *
475 * @return the Stream of all values or empty set if there are no matches
476 *
477 */
478 public Stream<EClass> streamAllValuesOfc(final EClass pS1, final EClass pS2) {
479 return rawStreamAllValuesOfc(new Object[]{null, pS1, pS2});
480 }
481
482 /**
483 * Retrieve the set of values that occur in matches for c.
484 * @return the Set of all values or empty set if there are no matches
485 *
486 */
487 public Set<EClass> getAllValuesOfc(final SameSuperClass.Match partialMatch) {
488 return rawStreamAllValuesOfc(partialMatch.toArray()).collect(Collectors.toSet());
489 }
490
491 /**
492 * Retrieve the set of values that occur in matches for c.
493 * @return the Set of all values or empty set if there are no matches
494 *
495 */
496 public Set<EClass> getAllValuesOfc(final EClass pS1, final EClass pS2) {
497 return rawStreamAllValuesOfc(new Object[]{null, pS1, pS2}).collect(Collectors.toSet());
498 }
499
500 /**
501 * Retrieve the set of values that occur in matches for s1.
502 * @return the Set of all values or empty set if there are no matches
503 *
504 */
505 protected Stream<EClass> rawStreamAllValuesOfs1(final Object[] parameters) {
506 return rawStreamAllValues(POSITION_S1, parameters).map(EClass.class::cast);
507 }
508
509 /**
510 * Retrieve the set of values that occur in matches for s1.
511 * @return the Set of all values or empty set if there are no matches
512 *
513 */
514 public Set<EClass> getAllValuesOfs1() {
515 return rawStreamAllValuesOfs1(emptyArray()).collect(Collectors.toSet());
516 }
517
518 /**
519 * Retrieve the set of values that occur in matches for s1.
520 * @return the Set of all values or empty set if there are no matches
521 *
522 */
523 public Stream<EClass> streamAllValuesOfs1() {
524 return rawStreamAllValuesOfs1(emptyArray());
525 }
526
527 /**
528 * Retrieve the set of values that occur in matches for s1.
529 * </p>
530 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
531 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
532 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
533 *
534 * @return the Stream of all values or empty set if there are no matches
535 *
536 */
537 public Stream<EClass> streamAllValuesOfs1(final SameSuperClass.Match partialMatch) {
538 return rawStreamAllValuesOfs1(partialMatch.toArray());
539 }
540
541 /**
542 * Retrieve the set of values that occur in matches for s1.
543 * </p>
544 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
545 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
546 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
547 *
548 * @return the Stream of all values or empty set if there are no matches
549 *
550 */
551 public Stream<EClass> streamAllValuesOfs1(final EClass pC, final EClass pS2) {
552 return rawStreamAllValuesOfs1(new Object[]{pC, null, pS2});
553 }
554
555 /**
556 * Retrieve the set of values that occur in matches for s1.
557 * @return the Set of all values or empty set if there are no matches
558 *
559 */
560 public Set<EClass> getAllValuesOfs1(final SameSuperClass.Match partialMatch) {
561 return rawStreamAllValuesOfs1(partialMatch.toArray()).collect(Collectors.toSet());
562 }
563
564 /**
565 * Retrieve the set of values that occur in matches for s1.
566 * @return the Set of all values or empty set if there are no matches
567 *
568 */
569 public Set<EClass> getAllValuesOfs1(final EClass pC, final EClass pS2) {
570 return rawStreamAllValuesOfs1(new Object[]{pC, null, pS2}).collect(Collectors.toSet());
571 }
572
573 /**
574 * Retrieve the set of values that occur in matches for s2.
575 * @return the Set of all values or empty set if there are no matches
576 *
577 */
578 protected Stream<EClass> rawStreamAllValuesOfs2(final Object[] parameters) {
579 return rawStreamAllValues(POSITION_S2, parameters).map(EClass.class::cast);
580 }
581
582 /**
583 * Retrieve the set of values that occur in matches for s2.
584 * @return the Set of all values or empty set if there are no matches
585 *
586 */
587 public Set<EClass> getAllValuesOfs2() {
588 return rawStreamAllValuesOfs2(emptyArray()).collect(Collectors.toSet());
589 }
590
591 /**
592 * Retrieve the set of values that occur in matches for s2.
593 * @return the Set of all values or empty set if there are no matches
594 *
595 */
596 public Stream<EClass> streamAllValuesOfs2() {
597 return rawStreamAllValuesOfs2(emptyArray());
598 }
599
600 /**
601 * Retrieve the set of values that occur in matches for s2.
602 * </p>
603 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
604 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
605 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
606 *
607 * @return the Stream of all values or empty set if there are no matches
608 *
609 */
610 public Stream<EClass> streamAllValuesOfs2(final SameSuperClass.Match partialMatch) {
611 return rawStreamAllValuesOfs2(partialMatch.toArray());
612 }
613
614 /**
615 * Retrieve the set of values that occur in matches for s2.
616 * </p>
617 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
618 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
619 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
620 *
621 * @return the Stream of all values or empty set if there are no matches
622 *
623 */
624 public Stream<EClass> streamAllValuesOfs2(final EClass pC, final EClass pS1) {
625 return rawStreamAllValuesOfs2(new Object[]{pC, pS1, null});
626 }
627
628 /**
629 * Retrieve the set of values that occur in matches for s2.
630 * @return the Set of all values or empty set if there are no matches
631 *
632 */
633 public Set<EClass> getAllValuesOfs2(final SameSuperClass.Match partialMatch) {
634 return rawStreamAllValuesOfs2(partialMatch.toArray()).collect(Collectors.toSet());
635 }
636
637 /**
638 * Retrieve the set of values that occur in matches for s2.
639 * @return the Set of all values or empty set if there are no matches
640 *
641 */
642 public Set<EClass> getAllValuesOfs2(final EClass pC, final EClass pS1) {
643 return rawStreamAllValuesOfs2(new Object[]{pC, pS1, null}).collect(Collectors.toSet());
644 }
645
646 @Override
647 protected SameSuperClass.Match tupleToMatch(final Tuple t) {
648 try {
649 return SameSuperClass.Match.newMatch((EClass) t.get(POSITION_C), (EClass) t.get(POSITION_S1), (EClass) t.get(POSITION_S2));
650 } catch(ClassCastException e) {
651 LOGGER.error("Element(s) in tuple not properly typed!",e);
652 return null;
653 }
654 }
655
656 @Override
657 protected SameSuperClass.Match arrayToMatch(final Object[] match) {
658 try {
659 return SameSuperClass.Match.newMatch((EClass) match[POSITION_C], (EClass) match[POSITION_S1], (EClass) match[POSITION_S2]);
660 } catch(ClassCastException e) {
661 LOGGER.error("Element(s) in array not properly typed!",e);
662 return null;
663 }
664 }
665
666 @Override
667 protected SameSuperClass.Match arrayToMatchMutable(final Object[] match) {
668 try {
669 return SameSuperClass.Match.newMutableMatch((EClass) match[POSITION_C], (EClass) match[POSITION_S1], (EClass) match[POSITION_S2]);
670 } catch(ClassCastException e) {
671 LOGGER.error("Element(s) in array not properly typed!",e);
672 return null;
673 }
674 }
675
676 /**
677 * @return the singleton instance of the query specification of this pattern
678 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
679 *
680 */
681 public static IQuerySpecification<SameSuperClass.Matcher> querySpecification() {
682 return SameSuperClass.instance();
683 }
684 }
685
686 private SameSuperClass() {
687 super(GeneratedPQuery.INSTANCE);
688 }
689
690 /**
691 * @return the singleton instance of the query specification
692 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
693 *
694 */
695 public static SameSuperClass instance() {
696 try{
697 return LazyHolder.INSTANCE;
698 } catch (ExceptionInInitializerError err) {
699 throw processInitializerError(err);
700 }
701 }
702
703 @Override
704 protected SameSuperClass.Matcher instantiate(final ViatraQueryEngine engine) {
705 return SameSuperClass.Matcher.on(engine);
706 }
707
708 @Override
709 public SameSuperClass.Matcher instantiate() {
710 return SameSuperClass.Matcher.create();
711 }
712
713 @Override
714 public SameSuperClass.Match newEmptyMatch() {
715 return SameSuperClass.Match.newEmptyMatch();
716 }
717
718 @Override
719 public SameSuperClass.Match newMatch(final Object... parameters) {
720 return SameSuperClass.Match.newMatch((org.eclipse.emf.ecore.EClass) parameters[0], (org.eclipse.emf.ecore.EClass) parameters[1], (org.eclipse.emf.ecore.EClass) parameters[2]);
721 }
722
723 /**
724 * Inner class allowing the singleton instance of {@link JvmGenericType: queries.SameSuperClass (visibility: PUBLIC, simpleName: SameSuperClass, identifier: queries.SameSuperClass, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created
725 * <b>not</b> at the class load time of the outer class,
726 * but rather at the first call to {@link JvmGenericType: queries.SameSuperClass (visibility: PUBLIC, simpleName: SameSuperClass, identifier: queries.SameSuperClass, deprecated: <unset>) (abstract: false, static: false, final: true, packageName: queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}.
727 *
728 * <p> This workaround is required e.g. to support recursion.
729 *
730 */
731 private static class LazyHolder {
732 private static final SameSuperClass INSTANCE = new SameSuperClass();
733
734 /**
735 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
736 * This initialization order is required to support indirect recursion.
737 *
738 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
739 *
740 */
741 private static final Object STATIC_INITIALIZER = ensureInitialized();
742
743 public static Object ensureInitialized() {
744 INSTANCE.ensureInitializedInternal();
745 return null;
746 }
747 }
748
749 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
750 private static final SameSuperClass.GeneratedPQuery INSTANCE = new GeneratedPQuery();
751
752 private final PParameter parameter_c = new PParameter("c", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT);
753
754 private final PParameter parameter_s1 = new PParameter("s1", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT);
755
756 private final PParameter parameter_s2 = new PParameter("s2", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT);
757
758 private final List<PParameter> parameters = Arrays.asList(parameter_c, parameter_s1, parameter_s2);
759
760 private GeneratedPQuery() {
761 super(PVisibility.PUBLIC);
762 }
763
764 @Override
765 public String getFullyQualifiedName() {
766 return "queries.sameSuperClass";
767 }
768
769 @Override
770 public List<String> getParameterNames() {
771 return Arrays.asList("c","s1","s2");
772 }
773
774 @Override
775 public List<PParameter> getParameters() {
776 return parameters;
777 }
778
779 @Override
780 public Set<PBody> doGetContainedBodies() {
781 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
782 Set<PBody> bodies = new LinkedHashSet<>();
783 {
784 PBody body = new PBody(this);
785 PVariable var_c = body.getOrCreateVariableByName("c");
786 PVariable var_s1 = body.getOrCreateVariableByName("s1");
787 PVariable var_s2 = body.getOrCreateVariableByName("s2");
788 new TypeConstraint(body, Tuples.flatTupleOf(var_c), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
789 new TypeConstraint(body, Tuples.flatTupleOf(var_s1), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
790 new TypeConstraint(body, Tuples.flatTupleOf(var_s2), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
791 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
792 new ExportedParameter(body, var_c, parameter_c),
793 new ExportedParameter(body, var_s1, parameter_s1),
794 new ExportedParameter(body, var_s2, parameter_s2)
795 ));
796 // EClass.eSuperTypes(c, s1)
797 new TypeConstraint(body, Tuples.flatTupleOf(var_c), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
798 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
799 new TypeConstraint(body, Tuples.flatTupleOf(var_c, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass", "eSuperTypes")));
800 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
801 new Equality(body, var__virtual_0_, var_s1);
802 // EClass.eSuperTypes(c, s2)
803 new TypeConstraint(body, Tuples.flatTupleOf(var_c), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
804 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
805 new TypeConstraint(body, Tuples.flatTupleOf(var_c, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass", "eSuperTypes")));
806 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
807 new Equality(body, var__virtual_1_, var_s2);
808 // s1 == s2
809 new Equality(body, var_s1, var_s2);
810 bodies.add(body);
811 }
812 {
813 PAnnotation annotation = new PAnnotation("Constraint");
814 annotation.addAttribute("severity", "error");
815 annotation.addAttribute("message", "error");
816 annotation.addAttribute("key", Arrays.asList(new Object[] {
817 new ParameterReference("c")
818 }));
819 addAnnotation(annotation);
820 }
821 return bodies;
822 }
823 }
824}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java
index 261f32cc..9b426200 100644
--- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java
@@ -11,6 +11,7 @@ import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistan
11import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph; 11import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph;
12import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.CsvFileWriter; 12import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.CsvFileWriter;
13import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.GraphReader; 13import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.GraphReader;
14import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.RepMetricsReader;
14import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; 15import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup;
15import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor; 16import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor;
16import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.validation.ViolationCheck; 17import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.validation.ViolationCheck;
@@ -24,8 +25,8 @@ public class Main {
24 return message; 25 return message;
25 } 26 }
26 27
27 private static String configFolder = "yakinduum/config15/"; 28 private static String configFolder = "yakinduum/config22/";
28 private static String configFileName = configFolder + "info_new_metric.csv"; 29 private static String configFileName = configFolder + "info_old_metric.csv";
29 private static String aggregateViolationMeasureFileName = configFolder + "aggregateInfo.csv"; 30 private static String aggregateViolationMeasureFileName = configFolder + "aggregateInfo.csv";
30 private static String fileReadFolder = "output/Viatra_100/"; 31 private static String fileReadFolder = "output/Viatra_100/";
31 32
@@ -33,29 +34,30 @@ public class Main {
33 34
34 35
35 long begin = System.currentTimeMillis(); 36 long begin = System.currentTimeMillis();
36 String message = runWithPath("yakinduGeneration.vsconfig"); 37 String message = runWithPath("ecore.vsconfig");
37 long elapsed = System.currentTimeMillis() - begin; 38 long elapsed = System.currentTimeMillis() - begin;
38 39
39 if(message != null) { 40 if(message != null) {
41 System.out.println(message);
40 return; 42 return;
41 } 43 }
42 ArrayList<ArrayList<String>> output = new ArrayList<ArrayList<String>>(); 44// ArrayList<ArrayList<String>> output = new ArrayList<ArrayList<String>>();
43 String time = formatTime(elapsed); 45// String time = formatTime(elapsed);
44 ArrayList<String> infoOutput = new ArrayList<String>(); 46// ArrayList<String> infoOutput = new ArrayList<String>();
45 infoOutput.add(time); 47// infoOutput.add(time);
46 output.add(infoOutput); 48// output.add(infoOutput);
47 System.out.println(time); 49// System.out.println(time);
48 CsvFileWriter.write(output, configFileName); 50// CsvFileWriter.write(output, configFileName);
49 51//
50 52//
51 output = new ArrayList<ArrayList<String>>(); 53// output = new ArrayList<ArrayList<String>>();
52 output.add(prepareInfo()); 54// output.add(prepareInfo());
53 CsvFileWriter.append(output, configFileName); 55// CsvFileWriter.append(output, configFileName);
54 56//
55 for(int i = 0; i < 50; i++) { 57// for(int i = 0; i < 50; i++) {
56 generateModel(i+1); 58// generateModel(i+1);
57 } 59// }
58 //aggregateViolationMeasure(50); 60// aggregateViolationMeasure(50);
59 System.out.println("Finished"); 61 System.out.println("Finished");
60 } 62 }
61 63
@@ -86,7 +88,7 @@ public class Main {
86 ArrayList<String> infoOutput = new ArrayList<String>(); 88 ArrayList<String> infoOutput = new ArrayList<String>();
87 infoOutput.add(run+ ""); 89 infoOutput.add(run+ "");
88 90
89 YakinduumModel model = new YakinduumModel("output/Viatra_100/run"+run+"/"+ filename); 91 YakinduumModel model = new YakinduumModel(fileReadFolder+"/run"+run+"/"+ filename);
90 92
91 //parse map of violation counts to two list and add them to the result list 93 //parse map of violation counts to two list and add them to the result list
92 Map<String, Integer> map = ViolationCheck.violationMaps(model.yakinduum); 94 Map<String, Integer> map = ViolationCheck.violationMaps(model.yakinduum);
@@ -110,7 +112,7 @@ public class Main {
110 ArrayList<String> violationNames = null; 112 ArrayList<String> violationNames = null;
111 for(int run = 1; run < size+1; run++) { 113 for(int run = 1; run < size+1; run++) {
112 String filename = run+"_1.xmi"; 114 String filename = run+"_1.xmi";
113 YakinduumModel model = new YakinduumModel("output/Viatra_100/run"+run+"/"+ filename); 115 YakinduumModel model = new YakinduumModel(fileReadFolder+"/run"+run+"/"+ filename);
114 116
115 Map<String, Integer> map = ViolationCheck.violationMaps(model.yakinduum); 117 Map<String, Integer> map = ViolationCheck.violationMaps(model.yakinduum);
116 if(run == 1) { 118 if(run == 1) {
@@ -143,11 +145,11 @@ public class Main {
143 public static ArrayList<String> calculateMetric(int run) { 145 public static ArrayList<String> calculateMetric(int run) {
144 //read model and metric 146 //read model and metric
145 ArrayList<String> output = new ArrayList<String>(); 147 ArrayList<String> output = new ArrayList<String>();
146 GraphReader reader = new GraphReader(YakindummPackage.eINSTANCE); 148 GraphReader reader = new GraphReader(YakindummPackage.eINSTANCE, ".xmi");
147 EMFGraph graph = reader.readModel(fileReadFolder+"/run"+run, run + "_1.xmi"); 149 EMFGraph graph = reader.readModel(fileReadFolder+"/run"+run, run + "_1.xmi");
148 150 MetricSampleGroup metrics = RepMetricsReader.read(Domain.Yakinduum);
149 //KS distance 151 //KS distance
150 KSDistance ks = new KSDistance(Domain.Yakinduum); 152 KSDistance ks = new KSDistance(metrics);
151 153
152 //calculate and put metric data to output array 154 //calculate and put metric data to output array
153 MetricSampleGroup samples = graph.evaluateAllMetricsToSamples(); 155 MetricSampleGroup samples = graph.evaluateAllMetricsToSamples();
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig b/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig
index 14e1a3f7..d2414e87 100644
--- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig
@@ -9,11 +9,11 @@ generate {
9 solver = ViatraSolver 9 solver = ViatraSolver
10 10
11 scope = { 11 scope = {
12 #node = 100 12 #node = 1
13 } 13 }
14 14
15 number = 1 15 number = 1
16 runs = 50 16 runs = 1
17 config = { 17 config = {
18 log-level = none 18 log-level = none
19 } 19 }