aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/SocialNetwork_plugin
diff options
context:
space:
mode:
Diffstat (limited to 'Metrics/Metrics-Calculation/SocialNetwork_plugin')
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/.classpath11
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/.project40
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/1.csv1
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF35
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/Measurement_Runner_yakindu.launch17
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/SocialNetworkGeneration.vsconfig24
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/.gitignore10
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql54
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore8
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore.ecore1023
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore/.gitignore8
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/.gitignore9
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/Ecore.vql33
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.aird183
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.ecore17
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.genmodel21
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/200_nodes.jpgbin0 -> 49128 bytes
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/220_nodes.jpgbin0 -> 51088 bytes
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/260_nodes.jpgbin0 -> 51426 bytes
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/280_nodes.jpgbin0 -> 50852 bytes
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/output.txt300
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/plot_distribution.m11
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/build.properties10
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/mpc_rep/Sql.ecore549
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/na_rep/XSHMLMT.ecore203
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/out_d_rep/rdm.ecore178
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/.DS_Storebin0 -> 10244 bytes
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/mpc_rep/2samplemodel41.githubmodel105
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/.DS_Storebin0 -> 6148 bytes
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/2samplemodel65.githubmodel38
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/.DS_Storebin0 -> 6148 bytes
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/samplemodel62.githubmodel38
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/mpc_rep.csv9
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/mpc_rep/R_2016324.xmi128
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/na_rep.csv9
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/na_rep/R_2017419.xmi138
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/new/mpc_rep/R_2015194.xmi132
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/new/na_rep/R_2017131.xmi149
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/new/out_d_rep/R_2015248.xmi125
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/out_d_rep.csv9
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/out_d_rep/R_2015225.xmi145
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/errors.txt14
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig51
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/Person.java62
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialNetwork.java62
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialnetworkFactory.java51
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialnetworkPackage.java293
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/PersonImpl.java208
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialNetworkImpl.java228
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialnetworkFactoryImpl.java111
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialnetworkPackageImpl.java267
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/util/SocialnetworkAdapterFactory.java138
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/util/SocialnetworkSwitch.java134
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/generator.vqgen1
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/github.vsconfig213
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/ecore.xmi5
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/github.xmi3
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/start.xmi2
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/model/ecore.ecore1023
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/model/socialnetwork.aird183
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/model/socialnetwork.ecore17
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/model/socialnetwork.genmodel21
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/200_nodes.jpgbin0 -> 49128 bytes
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/220_nodes.jpgbin0 -> 51088 bytes
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/260_nodes.jpgbin0 -> 51426 bytes
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/280_nodes.jpgbin0 -> 50852 bytes
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/output.txt300
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/plot_distribution.m11
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/output/.gitignore4
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.properties4
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml25
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/queries/queries/Ecore.vql33
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/ca/mcgill/ecse/socialnetwork/plugin/.gitignore10
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/constraints/ecore/.gitignore8
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/ecore/.gitignore8
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/.gitignore9
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/DirectSupertype.java703
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore.java108
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/LoopInInheritence.java558
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/NonSymmetricOpposite.java718
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Opposite.java704
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/OppositeDifferentClass.java587
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/SuperTypes.java703
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql54
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java203
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Persisitence.java63
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/RunnerTests.java18
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/SocialNetworkModel.java62
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/YakinduumModel.java52
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/100.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/30.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/50.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/80.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/warmup.csv3
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/30.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/50.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/80.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/warmup.csv7
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/100.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/120.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/140.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/30.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/50.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/80.csv22
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/warmup.csv3
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/file.csv4
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig107
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduum/.gitignore4
109 files changed, 12223 insertions, 0 deletions
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/.classpath b/Metrics/Metrics-Calculation/SocialNetwork_plugin/.classpath
new file mode 100644
index 00000000..4f2afbc9
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/.classpath
@@ -0,0 +1,11 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="src" path="encore_gen"/>
4 <classpathentry kind="src" path="queries"/>
5 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
6 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
7 <classpathentry kind="src" path="src"/>
8 <classpathentry kind="src" path="model"/>
9 <classpathentry kind="src" path="src-gen"/>
10 <classpathentry kind="output" path="bin"/>
11</classpath>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/.project b/Metrics/Metrics-Calculation/SocialNetwork_plugin/.project
new file mode 100644
index 00000000..decac49c
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/.project
@@ -0,0 +1,40 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>SocialNetwork_plugin</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.viatra.query.tooling.ui.projectbuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.jdt.core.javabuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 <buildCommand>
24 <name>org.eclipse.pde.ManifestBuilder</name>
25 <arguments>
26 </arguments>
27 </buildCommand>
28 <buildCommand>
29 <name>org.eclipse.pde.SchemaBuilder</name>
30 <arguments>
31 </arguments>
32 </buildCommand>
33 </buildSpec>
34 <natures>
35 <nature>org.eclipse.pde.PluginNature</nature>
36 <nature>org.eclipse.jdt.core.javanature</nature>
37 <nature>org.eclipse.viatra.query.projectnature</nature>
38 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
39 </natures>
40</projectDescription>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/.settings/org.eclipse.jdt.core.prefs b/Metrics/Metrics-Calculation/SocialNetwork_plugin/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..0c68a61d
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/1.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/1.csv
new file mode 100644
index 00000000..b7f73ed2
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/1.csv
@@ -0,0 +1 @@
Time,0 : 0.0
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF b/Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..833b6fd8
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF
@@ -0,0 +1,35 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: %pluginName
4Bundle-SymbolicName: SocialNetwork_plugin;singleton:=true
5Bundle-Version: 1.0.0.qualifier
6Bundle-ClassPath: .
7Bundle-Vendor: %providerName
8Bundle-Localization: plugin
9Export-Package: ca.mcgill.ecse.socialnetwork.plugin,
10 ca.mcgill.ecse.socialnetwork.runner,
11 constraints.ecore,
12 ecore,
13 queries,
14 socialnetwork,
15 socialnetwork.impl,
16 socialnetwork.util
17Require-Bundle: org.eclipse.viatra.query.runtime.rete,
18 org.eclipse.viatra.query.runtime.localsearch,
19 org.eclipse.xtext.xbase.lib,
20 org.eclipse.viatra.query.runtime,
21 org.eclipse.core.runtime,
22 org.eclipse.emf.ecore;visibility:=reexport,
23 org.eclipse.emf.ecore.xmi;bundle-version="2.15.0",
24 hu.bme.mit.inf.dslreasoner.application;bundle-version="1.0.0",
25 org.junit;bundle-version="4.12.0",
26 org.eclipse.collections;bundle-version="9.2.0",
27 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph;bundle-version="1.0.0",
28 ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator;bundle-version="1.0.0",
29 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.validation;bundle-version="0.0.1"
30Bundle-RequiredExecutionEnvironment: JavaSE-1.8
31Bundle-ActivationPolicy: lazy
32Main-Class: ca.mcgill.ecse.socialnetwork.runner.Main
33Automatic-Module-Name: SocialNetwork_plugin
34Import-Package: org.apache.log4j,
35 org.junit;version="4.12.0"
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/Measurement_Runner_yakindu.launch b/Metrics/Metrics-Calculation/SocialNetwork_plugin/Measurement_Runner_yakindu.launch
new file mode 100644
index 00000000..a1c0488e
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/Measurement_Runner_yakindu.launch
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
3<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
4<listEntry value="/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java"/>
5</listAttribute>
6<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
7<listEntry value="1"/>
8</listAttribute>
9<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaAdvancedSourceLookupDirector"/>
10<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;hu.bme.mit.inf.dslreasoner.viatra2logic&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;directory nest=&amp;quot;false&amp;quot; path=&amp;quot;C:\Users\chenp\eclipse-workspace\VIATRA-Generator\Solvers\VIATRA-Solver\hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra\src\hu\bme\mit\inf\dslreasoner\viatrasolver&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.directory&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;directory nest=&amp;quot;false&amp;quot; path=&amp;quot;C:\Users\chenp\eclipse-workspace\VIATRA-Generator\Solvers\VIATRA-Solver\hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra\src\hu\bme\mit\inf\dslreasoner\viatrasolver\logic2viatra&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.directory&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;directory nest=&amp;quot;false&amp;quot; path=&amp;quot;C:\Users\chenp\eclipse-workspace\VIATRA-Generator\Solvers\VIATRA-Solver\hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra\src\hu\bme\mit\inf\dslreasoner\viatrasolver\logic2viatra\rules&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.directory&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
11<booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/>
12<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="ca.mcgill.ecse.socialnetwork.runner.Main"/>
13<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="SocialNetwork_plugin"/>
14<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="github.vsconfig"/>
15<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="SocialNetwork_plugin"/>
16<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx8G&#13;&#10;-Djava.library.path=&quot;D:\Program Files\z3-4.8.8-x64-win\z3-4.8.8-x64-win\bin&quot;"/>
17</launchConfiguration>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/SocialNetworkGeneration.vsconfig b/Metrics/Metrics-Calculation/SocialNetwork_plugin/SocialNetworkGeneration.vsconfig
new file mode 100644
index 00000000..e051c659
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/SocialNetworkGeneration.vsconfig
@@ -0,0 +1,24 @@
1import epackage "model/socialnetwork.ecore"
2import viatra "src/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql"
3
4generate {
5 metamodel = { package socialnetwork }
6 //constraints = { package ca.mcgill.ecse.socialnetwork.plugin }
7 partial-model = { "inputs/280nodes.xmi"}
8
9 solver = ViatraSolver
10
11 scope = {
12 #node = 301
13 }
14
15 number = 1
16 runs = 1
17 config = {
18 log-level = normal
19 }
20
21 debug = "output/debug"
22 output = "output"
23 log = "output/log.txt"
24} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/.gitignore
new file mode 100644
index 00000000..f2558cf5
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/.gitignore
@@ -0,0 +1,10 @@
1/.Friendship.java._trace
2/.NoFriend.java._trace
3/.Queries.java._trace
4/.SelfFriend.java._trace
5/.SingleFriendship.java._trace
6/Friendship.java
7/NoFriend.java
8/Queries.java
9/SelfFriend.java
10/SingleFriendship.java
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql
new file mode 100644
index 00000000..3e7fc68c
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql
@@ -0,0 +1,54 @@
1package ca.mcgill.ecse.socialnetwork.plugin
2
3import epackage "http://ecse.mcgill.ca/socialnetwork"
4
5//@Constraint(message="terminatorAndInformation", severity="error", key={T})
6//pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
7// FunctionalOutput.outgoingLinks(Out,I);
8// FunctionalOutput.terminator(Out,T);
9//} or {
10// InformationLink.to(I,In);
11// FunctionalInput.terminator(In,T);
12//}
13
14@Constraint(message="singleFriendship", severity="error", key={p1})
15pattern singleFriendship(p1: Person) {
16 find friendship(p1, p);
17 neg find friendship(p, p1);
18}
19
20//@Constraint(message="cycle", severity="error", key={p})
21//pattern cycleInParenthood(p: Person) {
22// find isAncestor(p, p);
23//}
24
25@Constraint(message="noFriend", severity="error", key={p})
26pattern noFriend(p: Person){
27 neg find friendship(p, _);
28}
29
30//@Constraint(message="brothhoodParent", severity="error", key={p1,p2})
31//pattern brothhoodParent(p1: Person, p2: Person){
32// Person.parents(p1, parent1);
33// Person.parents(p2, parent2);
34// parent1 == parent2;
35// find isAncestor(p1, p2);
36//}
37@Constraint(message="selfFriend", severity="error", key={p})
38pattern selfFriend(p: Person){
39 Person.friends(p,p);
40}
41
42pattern friendship(p1: Person, p2: Person){
43 Person.friends(p1,p2);
44}
45
46//pattern isAncestor(person : Person, ancestor : Person){
47// Person.parents(person, ancestor);
48//} or {
49// Person.parents(person, parent);
50// find isAncestor(parent, ancestor);
51//}
52
53
54
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore
new file mode 100644
index 00000000..c42ca056
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore
@@ -0,0 +1,8 @@
1/.Ecore_pattern.java._trace
2/.MoreThenFiveSuperTypes.java._trace
3/.DirectSupertype.java._trace
4/.Ecore.java._trace
5/.LoopInInheritence.java._trace
6/.NonSymmetricOpposite.java._trace
7/.Opposite.java._trace
8/.OppositeDifferentClass.java._trace
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore.ecore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore.ecore
new file mode 100644
index 00000000..eaaf3d11
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/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/bin/ecore/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore/.gitignore
new file mode 100644
index 00000000..c42ca056
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore/.gitignore
@@ -0,0 +1,8 @@
1/.Ecore_pattern.java._trace
2/.MoreThenFiveSuperTypes.java._trace
3/.DirectSupertype.java._trace
4/.Ecore.java._trace
5/.LoopInInheritence.java._trace
6/.NonSymmetricOpposite.java._trace
7/.Opposite.java._trace
8/.OppositeDifferentClass.java._trace
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/.gitignore
new file mode 100644
index 00000000..e9d711d4
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/.gitignore
@@ -0,0 +1,9 @@
1/.Ecore_pattern.java._trace
2/.MoreThenFiveSuperTypes.java._trace
3/.DirectSupertype.java._trace
4/.Ecore.java._trace
5/.LoopInInheritence.java._trace
6/.NonSymmetricOpposite.java._trace
7/.Opposite.java._trace
8/.OppositeDifferentClass.java._trace
9/.SuperTypes.java._trace
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/Ecore.vql b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/Ecore.vql
new file mode 100644
index 00000000..9ddb64c9
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/queries/Ecore.vql
@@ -0,0 +1,33 @@
1package queries
2
3import epackage "http://www.eclipse.org/emf/2002/Ecore"
4
5pattern directSupertype(a: EClass, b:EClass) {
6 EClass.eSuperTypes(a,b);
7}
8
9@Constraint(key={a}, severity="error", message="error")
10pattern loopInInheritence(a: EClass) {
11 find directSupertype+(a,a);
12}
13
14pattern opposite(a:EReference, b: EReference) {
15 EReference.eOpposite(a,b);
16}
17@Constraint(key={a}, severity="error", message="error")
18pattern oppositeDifferentClass(a:EReference) {
19 EReference.eOpposite(a,b);
20 EReference.eContainingClass(a,aContaining);
21 EReference.eType(b,bTarget);
22 aContaining != bTarget;
23}
24
25@Constraint(key={a}, severity="error", message="error")
26pattern nonSymmetricOpposite(a:EReference, b:EReference) {
27 find opposite(a,b);
28 neg find opposite(b,a);
29}
30
31pattern superTypes(c1:EClass, c2:EClass){
32 EClass.eSuperTypes(c1,c2);
33}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.aird b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.aird
new file mode 100644
index 00000000..e7e28ecd
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.aird
@@ -0,0 +1,183 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
3 <viewpoint:DAnalysis uid="_TZr30HA1EemKP426GDjFOg" selectedViews="_Ta8cEHA1EemKP426GDjFOg" version="14.1.0.201810161215">
4 <semanticResources>socialnetwork.ecore</semanticResources>
5 <semanticResources>socialnetwork.genmodel</semanticResources>
6 <ownedViews xmi:type="viewpoint:DView" uid="_Ta8cEHA1EemKP426GDjFOg">
7 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
8 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_TbTBZXA1EemKP426GDjFOg" name="socialnetwork" repPath="#_TbTBYHA1EemKP426GDjFOg">
9 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
10 <target xmi:type="ecore:EPackage" href="socialnetwork.ecore#/"/>
11 </ownedRepresentationDescriptors>
12 </ownedViews>
13 </viewpoint:DAnalysis>
14 <diagram:DSemanticDiagram uid="_TbTBYHA1EemKP426GDjFOg" name="socialnetwork">
15 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_TbTBYXA1EemKP426GDjFOg" source="DANNOTATION_CUSTOMIZATION_KEY">
16 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_TbTBYnA1EemKP426GDjFOg">
17 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_ZZkWoHA1EemKP426GDjFOg" sourceArrow="FillDiamond" routingStyle="manhattan">
18 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
19 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_ZZkWoXA1EemKP426GDjFOg" showIcon="false" labelExpression="service:render">
20 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
21 </centerLabelStyleDescription>
22 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_ZZkWonA1EemKP426GDjFOg" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
23 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
24 </endLabelStyleDescription>
25 </computedStyleDescriptions>
26 </data>
27 </ownedAnnotationEntries>
28 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_TbTBZnA1EemKP426GDjFOg" source="GMF_DIAGRAMS">
29 <data xmi:type="notation:Diagram" xmi:id="_TbTBZ3A1EemKP426GDjFOg" type="Sirius" element="_TbTBYHA1EemKP426GDjFOg" measurementUnit="Pixel">
30 <children xmi:type="notation:Node" xmi:id="_Ur9YAHA1EemKP426GDjFOg" type="2003" element="_Ur5GkHA1EemKP426GDjFOg">
31 <children xmi:type="notation:Node" xmi:id="_Ur9YA3A1EemKP426GDjFOg" type="5007"/>
32 <children xmi:type="notation:Node" xmi:id="_Ur9YBHA1EemKP426GDjFOg" type="7004">
33 <children xmi:type="notation:Node" xmi:id="_W_L-4HA1EemKP426GDjFOg" type="3010" element="_W_DcAHA1EemKP426GDjFOg">
34 <styles xmi:type="notation:FontStyle" xmi:id="_W_L-4XA1EemKP426GDjFOg" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
35 <layoutConstraint xmi:type="notation:Location" xmi:id="_W_L-4nA1EemKP426GDjFOg"/>
36 </children>
37 <styles xmi:type="notation:SortingStyle" xmi:id="_Ur9YBXA1EemKP426GDjFOg"/>
38 <styles xmi:type="notation:FilteringStyle" xmi:id="_Ur9YBnA1EemKP426GDjFOg"/>
39 </children>
40 <styles xmi:type="notation:ShapeStyle" xmi:id="_Ur9YAXA1EemKP426GDjFOg" fontName="Segoe UI" fontHeight="8"/>
41 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ur9YAnA1EemKP426GDjFOg" x="285" y="165" width="120" height="100"/>
42 </children>
43 <children xmi:type="notation:Node" xmi:id="_X2ASIHA1EemKP426GDjFOg" type="2003" element="_X14WUHA1EemKP426GDjFOg">
44 <children xmi:type="notation:Node" xmi:id="_X2A5MHA1EemKP426GDjFOg" type="5007"/>
45 <children xmi:type="notation:Node" xmi:id="_X2A5MXA1EemKP426GDjFOg" type="7004">
46 <children xmi:type="notation:Node" xmi:id="_jitw4HA1EemKP426GDjFOg" type="3010" element="_jirUoHA1EemKP426GDjFOg">
47 <styles xmi:type="notation:FontStyle" xmi:id="_jitw4XA1EemKP426GDjFOg" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
48 <layoutConstraint xmi:type="notation:Location" xmi:id="_jitw4nA1EemKP426GDjFOg"/>
49 </children>
50 <styles xmi:type="notation:SortingStyle" xmi:id="_X2A5MnA1EemKP426GDjFOg"/>
51 <styles xmi:type="notation:FilteringStyle" xmi:id="_X2A5M3A1EemKP426GDjFOg"/>
52 </children>
53 <styles xmi:type="notation:ShapeStyle" xmi:id="_X2ASIXA1EemKP426GDjFOg" fontName="Segoe UI" fontHeight="8"/>
54 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_X2ASInA1EemKP426GDjFOg" x="690" y="180" width="120" height="100"/>
55 </children>
56 <styles xmi:type="notation:DiagramStyle" xmi:id="_TbTBaHA1EemKP426GDjFOg"/>
57 <edges xmi:type="notation:Edge" xmi:id="_ZZnZ8HA1EemKP426GDjFOg" type="4001" element="_ZZjvkHA1EemKP426GDjFOg" source="_Ur9YAHA1EemKP426GDjFOg" target="_X2ASIHA1EemKP426GDjFOg">
58 <children xmi:type="notation:Node" xmi:id="_ZZnZ9HA1EemKP426GDjFOg" type="6001">
59 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZZnZ9XA1EemKP426GDjFOg" x="6" y="10"/>
60 </children>
61 <children xmi:type="notation:Node" xmi:id="_ZZnZ9nA1EemKP426GDjFOg" type="6002">
62 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZZnZ93A1EemKP426GDjFOg" x="1" y="10"/>
63 </children>
64 <children xmi:type="notation:Node" xmi:id="_ZZnZ-HA1EemKP426GDjFOg" type="6003">
65 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZZnZ-XA1EemKP426GDjFOg" x="-1" y="10"/>
66 </children>
67 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ZZnZ8XA1EemKP426GDjFOg" routing="Rectilinear"/>
68 <styles xmi:type="notation:FontStyle" xmi:id="_ZZnZ8nA1EemKP426GDjFOg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
69 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZZnZ83A1EemKP426GDjFOg" points="[0, 0, -287, 4]$[143, 0, -144, 4]$[143, -4, -144, 0]$[287, -4, 0, 0]"/>
70 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZZnZ-nA1EemKP426GDjFOg" id="(1.0,0.5)"/>
71 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZZnZ-3A1EemKP426GDjFOg" id="(0.0,0.30612244897959184)"/>
72 </edges>
73 <edges xmi:type="notation:Edge" xmi:id="_f8gfMHA1EemKP426GDjFOg" type="4001" element="_f8eC8HA1EemKP426GDjFOg" source="_X2ASIHA1EemKP426GDjFOg" target="_X2ASIHA1EemKP426GDjFOg">
74 <children xmi:type="notation:Node" xmi:id="_f8gfNHA1EemKP426GDjFOg" type="6001">
75 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f8gfNXA1EemKP426GDjFOg" x="-8" y="7"/>
76 </children>
77 <children xmi:type="notation:Node" xmi:id="_f8hGQHA1EemKP426GDjFOg" type="6002">
78 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f8hGQXA1EemKP426GDjFOg" x="12" y="10"/>
79 </children>
80 <children xmi:type="notation:Node" xmi:id="_f8hGQnA1EemKP426GDjFOg" type="6003">
81 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f8hGQ3A1EemKP426GDjFOg" y="-10"/>
82 </children>
83 <styles xmi:type="notation:ConnectorStyle" xmi:id="_f8gfMXA1EemKP426GDjFOg" routing="Rectilinear"/>
84 <styles xmi:type="notation:FontStyle" xmi:id="_f8gfMnA1EemKP426GDjFOg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
85 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f8gfM3A1EemKP426GDjFOg" points="[4, 1, 0, -21]$[51, 1, 47, -21]$[51, -53, 47, -75]$[-25, -53, -29, -75]$[-25, -8, -29, -30]"/>
86 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f8hGRHA1EemKP426GDjFOg" id="(0.9666666666666667,0.09)"/>
87 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f8hGRXA1EemKP426GDjFOg" id="(1.0,0.30612244897959184)"/>
88 </edges>
89 <edges xmi:type="notation:Edge" xmi:id="_eUOggHA6EemKP426GDjFOg" type="4001" element="_eULdMHA6EemKP426GDjFOg" source="_X2ASIHA1EemKP426GDjFOg" target="_X2ASIHA1EemKP426GDjFOg">
90 <children xmi:type="notation:Node" xmi:id="_eUOghHA6EemKP426GDjFOg" type="6001">
91 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eUOghXA6EemKP426GDjFOg" y="-10"/>
92 </children>
93 <children xmi:type="notation:Node" xmi:id="_eUOghnA6EemKP426GDjFOg" type="6002">
94 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eUOgh3A6EemKP426GDjFOg" y="10"/>
95 </children>
96 <children xmi:type="notation:Node" xmi:id="_eUOgiHA6EemKP426GDjFOg" type="6003">
97 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eUOgiXA6EemKP426GDjFOg" y="10"/>
98 </children>
99 <styles xmi:type="notation:ConnectorStyle" xmi:id="_eUOggXA6EemKP426GDjFOg" routing="Rectilinear"/>
100 <styles xmi:type="notation:FontStyle" xmi:id="_eUOggnA6EemKP426GDjFOg" fontName="Segoe UI" fontHeight="8"/>
101 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eUOgg3A6EemKP426GDjFOg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
102 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eUOginA6EemKP426GDjFOg" id="(0.5,0.5)"/>
103 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eUOgi3A6EemKP426GDjFOg" id="(0.5,0.5)"/>
104 </edges>
105 </data>
106 </ownedAnnotationEntries>
107 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Ur5GkHA1EemKP426GDjFOg" name="SocialNetwork" tooltipText="" outgoingEdges="_ZZjvkHA1EemKP426GDjFOg" width="12" height="10">
108 <target xmi:type="ecore:EClass" href="socialnetwork.ecore#//SocialNetwork"/>
109 <semanticElements xmi:type="ecore:EClass" href="socialnetwork.ecore#//SocialNetwork"/>
110 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_XY_mAHA1EemKP426GDjFOg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
111 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
112 </ownedStyle>
113 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
114 <ownedElements xmi:type="diagram:DNodeListElement" uid="_W_DcAHA1EemKP426GDjFOg" name="name : EString" tooltipText="">
115 <target xmi:type="ecore:EAttribute" href="socialnetwork.ecore#//SocialNetwork/name"/>
116 <semanticElements xmi:type="ecore:EAttribute" href="socialnetwork.ecore#//SocialNetwork/name"/>
117 <ownedStyle xmi:type="diagram:BundledImage" uid="_XZANEHA1EemKP426GDjFOg" labelAlignment="LEFT">
118 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
119 </ownedStyle>
120 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
121 </ownedElements>
122 </ownedDiagramElements>
123 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_X14WUHA1EemKP426GDjFOg" name="Person" tooltipText="" outgoingEdges="_f8eC8HA1EemKP426GDjFOg _eULdMHA6EemKP426GDjFOg" incomingEdges="_ZZjvkHA1EemKP426GDjFOg _f8eC8HA1EemKP426GDjFOg _eULdMHA6EemKP426GDjFOg" width="12" height="10">
124 <target xmi:type="ecore:EClass" href="socialnetwork.ecore#//Person"/>
125 <semanticElements xmi:type="ecore:EClass" href="socialnetwork.ecore#//Person"/>
126 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
127 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
128 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
129 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_kAhuQHA1EemKP426GDjFOg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
130 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
131 </ownedStyle>
132 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
133 <ownedElements xmi:type="diagram:DNodeListElement" uid="_jirUoHA1EemKP426GDjFOg" name="name : EString" tooltipText="">
134 <target xmi:type="ecore:EAttribute" href="socialnetwork.ecore#//Person/name"/>
135 <semanticElements xmi:type="ecore:EAttribute" href="socialnetwork.ecore#//Person/name"/>
136 <ownedStyle xmi:type="diagram:BundledImage" uid="_kAiVUHA1EemKP426GDjFOg" labelAlignment="LEFT">
137 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
138 </ownedStyle>
139 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
140 </ownedElements>
141 </ownedDiagramElements>
142 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ZZjvkHA1EemKP426GDjFOg" name="[0..*] persons" sourceNode="_Ur5GkHA1EemKP426GDjFOg" targetNode="_X14WUHA1EemKP426GDjFOg">
143 <target xmi:type="ecore:EReference" href="socialnetwork.ecore#//SocialNetwork/persons"/>
144 <semanticElements xmi:type="ecore:EReference" href="socialnetwork.ecore#//SocialNetwork/persons"/>
145 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ZZkWo3A1EemKP426GDjFOg" description="_ZZkWoHA1EemKP426GDjFOg" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
146 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ZZkWpHA1EemKP426GDjFOg" showIcon="false">
147 <customFeatures>labelSize</customFeatures>
148 </centerLabelStyle>
149 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_ZZkWpXA1EemKP426GDjFOg" showIcon="false" labelColor="39,76,114">
150 <customFeatures>labelSize</customFeatures>
151 </endLabelStyle>
152 </ownedStyle>
153 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
154 </ownedDiagramElements>
155 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_f8eC8HA1EemKP426GDjFOg" name="[0..*] friends" sourceNode="_X14WUHA1EemKP426GDjFOg" targetNode="_X14WUHA1EemKP426GDjFOg">
156 <target xmi:type="ecore:EReference" href="socialnetwork.ecore#//Person/friends"/>
157 <semanticElements xmi:type="ecore:EReference" href="socialnetwork.ecore#//Person/friends"/>
158 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_erMusHA9EemKP426GDjFOg" routingStyle="manhattan" strokeColor="0,0,0">
159 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
160 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_erMusXA9EemKP426GDjFOg" showIcon="false"/>
161 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_erMusnA9EemKP426GDjFOg" labelSize="6" showIcon="false" labelColor="39,76,114"/>
162 </ownedStyle>
163 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
164 </ownedDiagramElements>
165 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_eULdMHA6EemKP426GDjFOg" sourceNode="_X14WUHA1EemKP426GDjFOg" targetNode="_X14WUHA1EemKP426GDjFOg" beginLabel="[0..*] children" endLabel="[0..2] parents">
166 <target xmi:type="ecore:EReference" href="socialnetwork.ecore#//Person/parents"/>
167 <semanticElements xmi:type="ecore:EReference" href="socialnetwork.ecore#//Person/children"/>
168 <semanticElements xmi:type="ecore:EReference" href="socialnetwork.ecore#//Person/parents"/>
169 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_eUMEQHA6EemKP426GDjFOg" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
170 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
171 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_eUMEQXA6EemKP426GDjFOg" showIcon="false"/>
172 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_eUMEQnA6EemKP426GDjFOg" showIcon="false"/>
173 </ownedStyle>
174 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
175 </ownedDiagramElements>
176 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
177 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_TbTBZHA1EemKP426GDjFOg"/>
178 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
179 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
180 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
181 <target xmi:type="ecore:EPackage" href="socialnetwork.ecore#/"/>
182 </diagram:DSemanticDiagram>
183</xmi:XMI>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.ecore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.ecore
new file mode 100644
index 00000000..cacf9921
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.ecore
@@ -0,0 +1,17 @@
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="socialnetwork" nsURI="http://ecse.mcgill.ca/socialnetwork" nsPrefix="socialnetwork">
4 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"/>
5 <eClassifiers xsi:type="ecore:EClass" name="SocialNetwork">
6 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
7 defaultValueLiteral="SocialNetwork"/>
8 <eStructuralFeatures xsi:type="ecore:EReference" name="persons" upperBound="-1"
9 eType="#//Person" containment="true"/>
10 </eClassifiers>
11 <eClassifiers xsi:type="ecore:EClass" name="Person">
12 <eStructuralFeatures xsi:type="ecore:EReference" name="friends" upperBound="-1"
13 eType="#//Person"/>
14 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
15 defaultValueLiteral="Name"/>
16 </eClassifiers>
17</ecore:EPackage>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.genmodel b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.genmodel
new file mode 100644
index 00000000..c9515653
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/socialnetwork.genmodel
@@ -0,0 +1,21 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<genmodel:GenModel 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" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
4 modelDirectory="/SocialNetwork_plugin/encore_gen" creationIcons="false"
5 editDirectory="/ca.mcgill.ecse.socialnetwork.edit/src-gen" editorDirectory="/ca.mcgill.ecse.socialnetwork.editor/src-gen"
6 modelPluginID="SocialNetwork_plugin" modelName="Socialnetwork" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
7 codeFormatting="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0"
8 copyrightFields="false" operationReflection="true" importOrganizing="true">
9 <foreignModel>socialnetwork.ecore</foreignModel>
10 <testsDirectory xsi:nil="true"/>
11 <genPackages prefix="Socialnetwork" disposableProviderFactory="true" ecorePackage="socialnetwork.ecore#/">
12 <genClasses ecoreClass="socialnetwork.ecore#//SocialNetwork">
13 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute socialnetwork.ecore#//SocialNetwork/name"/>
14 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference socialnetwork.ecore#//SocialNetwork/persons"/>
15 </genClasses>
16 <genClasses ecoreClass="socialnetwork.ecore#//Person">
17 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference socialnetwork.ecore#//Person/friends"/>
18 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute socialnetwork.ecore#//Person/name"/>
19 </genClasses>
20 </genPackages>
21</genmodel:GenModel>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/200_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/200_nodes.jpg
new file mode 100644
index 00000000..a35c291b
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/200_nodes.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/220_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/220_nodes.jpg
new file mode 100644
index 00000000..4d41dff7
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/220_nodes.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/260_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/260_nodes.jpg
new file mode 100644
index 00000000..b16cdfb2
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/260_nodes.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/280_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/280_nodes.jpg
new file mode 100644
index 00000000..16c0ee23
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/280_nodes.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/output.txt b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/output.txt
new file mode 100644
index 00000000..35158e20
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/output.txt
@@ -0,0 +1,300 @@
11
29
37
40
54
66
716
80
92
104
1117
1220
131
145
152
163
1711
186
194
200
212
221
233
245
259
2613
2711
280
291
3010
313
320
331
341
350
3617
370
384
392
400
411
4210
4310
440
4524
469
470
4814
491
5011
512
5217
533
543
553
560
573
581
593
602
612
621
630
643
656
663
6716
683
6910
706
716
726
7311
746
7510
7620
771
784
7913
800
810
823
832
840
8512
860
870
8822
894
900
910
9220
931
9410
959
9611
975
9827
991
1003
1019
1020
10323
10410
1059
10623
1070
1083
1097
1102
1110
1129
1133
1140
11512
11611
1177
1186
1199
1202
1210
1223
1234
1243
1259
1263
1270
1287
1292
1301
1319
1321
13311
1346
1355
13616
1370
13819
13914
1409
14113
1422
1438
1440
1456
1461
1471
1482
1490
1503
15115
1523
1530
1543
15517
1561
15715
1585
1591
16021
1618
1622
1637
1643
16516
16611
1671
1685
1691
1705
1711
1726
1733
17416
1756
17617
1773
1785
1797
1802
1819
1822
1831
18411
1851
1860
1873
1885
1896
1902
1915
1921
1934
1949
1950
19611
1971
19810
19913
2006
2012
2021
2033
2044
2050
2061
2072
20810
20912
2103
2113
2123
2130
2142
2154
2162
21718
2183
2198
2207
2215
2223
22316
2241
2254
2268
22715
2281
22911
23015
2311
2328
2337
2341
2352
2360
2379
2385
2392
2401
2413
2426
2434
2448
2453
24612
2474
24821
2499
2502
2513
2522
2531
2543
25511
2562
2579
2580
25910
2606
2611
2622
2630
2648
2655
2662
2673
2688
2691
27013
2718
2722
2732
27411
2754
27621
2776
2785
2790
2808
2818
28212
2830
2840
2854
2861
28719
2885
2893
2901
2913
29212
2932
2946
29511
2968
2978
2982
29918
3000
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/plot_distribution.m b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/plot_distribution.m
new file mode 100644
index 00000000..4c67a191
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/statistics/plot_distribution.m
@@ -0,0 +1,11 @@
1clear;
2clc;
3
4matrix = load('-ascii', "output.txt");
5hist(matrix,unique(matrix));
6hold on;
7[a,b] = hist(matrix,unique(matrix))
8plot(b, a)
9hold off;
10sum(matrix)
11average = sum(matrix) / length(matrix) \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/build.properties b/Metrics/Metrics-Calculation/SocialNetwork_plugin/build.properties
new file mode 100644
index 00000000..b91f214f
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/build.properties
@@ -0,0 +1,10 @@
1bin.includes = .,\
2 model/,\
3 META-INF/,\
4 plugin.xml,\
5 plugin.properties,\
6 src/
7jars.compile.order = .
8source.. = encore_gen/,\
9 src-gen/
10output.. = bin/
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/mpc_rep/Sql.ecore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/mpc_rep/Sql.ecore
new file mode 100644
index 00000000..65d72135
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/mpc_rep/Sql.ecore
@@ -0,0 +1,549 @@
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="sql" nsURI="http://www.com.jaspersoft.studio.data.Sql" nsPrefix="sql">
4 <eClassifiers xsi:type="ecore:EClass" name="Model">
5 <eStructuralFeatures xsi:type="ecore:EReference" name="wq" eType="#//WithQuery"
6 containment="true"/>
7 <eStructuralFeatures xsi:type="ecore:EReference" name="query" eType="#//SelectQuery"
8 containment="true"/>
9 </eClassifiers>
10 <eClassifiers xsi:type="ecore:EClass" name="WithQuery">
11 <eStructuralFeatures xsi:type="ecore:EAttribute" name="w" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
12 <eStructuralFeatures xsi:type="ecore:EAttribute" name="wname" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
13 <eStructuralFeatures xsi:type="ecore:EReference" name="withCols" eType="#//WithColumns"
14 containment="true"/>
15 <eStructuralFeatures xsi:type="ecore:EReference" name="query" eType="#//SelectQuery"
16 containment="true"/>
17 </eClassifiers>
18 <eClassifiers xsi:type="ecore:EClass" name="WithColumns"/>
19 <eClassifiers xsi:type="ecore:EClass" name="FetchFirst">
20 <eStructuralFeatures xsi:type="ecore:EReference" name="fetchFirst" eType="#//UnsignedValue"
21 containment="true"/>
22 <eStructuralFeatures xsi:type="ecore:EAttribute" name="row" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
23 </eClassifiers>
24 <eClassifiers xsi:type="ecore:EClass" name="Offset">
25 <eStructuralFeatures xsi:type="ecore:EAttribute" name="offset" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
26 </eClassifiers>
27 <eClassifiers xsi:type="ecore:EClass" name="Limit">
28 <eStructuralFeatures xsi:type="ecore:EAttribute" name="l1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
29 <eStructuralFeatures xsi:type="ecore:EAttribute" name="l2" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
30 </eClassifiers>
31 <eClassifiers xsi:type="ecore:EClass" name="SelectQuery"/>
32 <eClassifiers xsi:type="ecore:EClass" name="SelectSubSet">
33 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
34 <eStructuralFeatures xsi:type="ecore:EAttribute" name="all" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
35 <eStructuralFeatures xsi:type="ecore:EReference" name="query" eType="#//Select"
36 containment="true"/>
37 </eClassifiers>
38 <eClassifiers xsi:type="ecore:EClass" name="Select" eSuperTypes="#//SelectQuery">
39 <eStructuralFeatures xsi:type="ecore:EReference" name="op" upperBound="-1" eType="#//SelectSubSet"
40 containment="true"/>
41 <eStructuralFeatures xsi:type="ecore:EAttribute" name="select" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
42 <eStructuralFeatures xsi:type="ecore:EReference" name="cols" eType="#//OrColumn"
43 containment="true"/>
44 <eStructuralFeatures xsi:type="ecore:EReference" name="tbl" eType="#//OrTable"
45 containment="true"/>
46 <eStructuralFeatures xsi:type="ecore:EReference" name="whereExpression" eType="#//OrExpr"
47 containment="true"/>
48 <eStructuralFeatures xsi:type="ecore:EReference" name="groupByEntry" eType="#//OrGroupByColumn"
49 containment="true"/>
50 <eStructuralFeatures xsi:type="ecore:EReference" name="havingEntry" eType="#//OrExpr"
51 containment="true"/>
52 <eStructuralFeatures xsi:type="ecore:EReference" name="orderByEntry" eType="#//OrOrderByColumn"
53 containment="true"/>
54 <eStructuralFeatures xsi:type="ecore:EReference" name="lim" eType="#//Limit" containment="true"/>
55 <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Offset"
56 containment="true"/>
57 <eStructuralFeatures xsi:type="ecore:EReference" name="fetchFirst" eType="#//FetchFirst"
58 containment="true"/>
59 </eClassifiers>
60 <eClassifiers xsi:type="ecore:EClass" name="OrColumn" eSuperTypes="#//PivotForClause">
61 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
62 eType="#//ColumnOrAlias" containment="true"/>
63 </eClassifiers>
64 <eClassifiers xsi:type="ecore:EClass" name="ColumnOrAlias" eSuperTypes="#//OrColumn">
65 <eStructuralFeatures xsi:type="ecore:EReference" name="ce" eType="#//Operands"
66 containment="true"/>
67 <eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
68 <eStructuralFeatures xsi:type="ecore:EReference" name="colAlias" eType="#//DbObjectName"
69 containment="true"/>
70 <eStructuralFeatures xsi:type="ecore:EAttribute" name="allCols" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
71 <eStructuralFeatures xsi:type="ecore:EReference" name="dbAllCols" eType="#//DbObjectNameAll"
72 containment="true"/>
73 </eClassifiers>
74 <eClassifiers xsi:type="ecore:EClass" name="ColumnFull" eSuperTypes="#//PivotForClause"/>
75 <eClassifiers xsi:type="ecore:EClass" name="OrTable">
76 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
77 eType="#//FromTable" containment="true"/>
78 </eClassifiers>
79 <eClassifiers xsi:type="ecore:EClass" name="FromTable" eSuperTypes="#//OrTable">
80 <eStructuralFeatures xsi:type="ecore:EReference" name="table" eType="#//TableOrAlias"
81 containment="true"/>
82 <eStructuralFeatures xsi:type="ecore:EReference" name="fjoin" upperBound="-1"
83 eType="#//FromTableJoin" containment="true"/>
84 </eClassifiers>
85 <eClassifiers xsi:type="ecore:EClass" name="FromTableJoin">
86 <eStructuralFeatures xsi:type="ecore:EAttribute" name="join" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
87 <eStructuralFeatures xsi:type="ecore:EReference" name="onTable" eType="#//TableOrAlias"
88 containment="true"/>
89 <eStructuralFeatures xsi:type="ecore:EReference" name="joinExpr" eType="#//OrExpr"
90 containment="true"/>
91 <eStructuralFeatures xsi:type="ecore:EReference" name="joinCond" eType="#//JoinCondition"
92 containment="true"/>
93 </eClassifiers>
94 <eClassifiers xsi:type="ecore:EClass" name="JoinCondition">
95 <eStructuralFeatures xsi:type="ecore:EReference" name="useCols" eType="#//UsingCols"
96 containment="true"/>
97 </eClassifiers>
98 <eClassifiers xsi:type="ecore:EClass" name="UsingCols" eSuperTypes="#//WithColumns">
99 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
100 eType="#//DbObjectName" containment="true"/>
101 </eClassifiers>
102 <eClassifiers xsi:type="ecore:EClass" name="TableOrAlias">
103 <eStructuralFeatures xsi:type="ecore:EReference" name="tfull" eType="#//TableFull"
104 containment="true"/>
105 <eStructuralFeatures xsi:type="ecore:EReference" name="sq" eType="#//SubQueryOperand"
106 containment="true"/>
107 <eStructuralFeatures xsi:type="ecore:EReference" name="values" eType="#//FromValues"
108 containment="true"/>
109 <eStructuralFeatures xsi:type="ecore:EReference" name="pivot" eType="#//PivotTable"
110 containment="true"/>
111 <eStructuralFeatures xsi:type="ecore:EReference" name="unpivot" eType="#//UnpivotTable"
112 containment="true"/>
113 <eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
114 <eStructuralFeatures xsi:type="ecore:EReference" name="tblAlias" eType="#//DbObjectName"
115 containment="true"/>
116 </eClassifiers>
117 <eClassifiers xsi:type="ecore:EClass" name="FromValues">
118 <eStructuralFeatures xsi:type="ecore:EReference" name="values" eType="#//Values"
119 containment="true"/>
120 <eStructuralFeatures xsi:type="ecore:EReference" name="c" eType="#//FromValuesColumns"
121 containment="true"/>
122 </eClassifiers>
123 <eClassifiers xsi:type="ecore:EClass" name="FromValuesColumns">
124 <eStructuralFeatures xsi:type="ecore:EReference" name="fvCols" eType="#//FromValuesColumnNames"
125 containment="true"/>
126 </eClassifiers>
127 <eClassifiers xsi:type="ecore:EClass" name="FromValuesColumnNames"/>
128 <eClassifiers xsi:type="ecore:EClass" name="ColumnNames" eSuperTypes="#//FromValuesColumnNames">
129 <eStructuralFeatures xsi:type="ecore:EAttribute" name="colName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
130 </eClassifiers>
131 <eClassifiers xsi:type="ecore:EClass" name="Values">
132 <eStructuralFeatures xsi:type="ecore:EReference" name="rows" eType="#//Rows" containment="true"/>
133 </eClassifiers>
134 <eClassifiers xsi:type="ecore:EClass" name="Rows">
135 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
136 eType="#//Row" containment="true"/>
137 </eClassifiers>
138 <eClassifiers xsi:type="ecore:EClass" name="Row" eSuperTypes="#//Rows">
139 <eStructuralFeatures xsi:type="ecore:EReference" name="rowValues" eType="#//RowValues"
140 containment="true"/>
141 </eClassifiers>
142 <eClassifiers xsi:type="ecore:EClass" name="RowValues">
143 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
144 eType="#//RowValue" containment="true"/>
145 </eClassifiers>
146 <eClassifiers xsi:type="ecore:EClass" name="RowValue" eSuperTypes="#//RowValues">
147 <eStructuralFeatures xsi:type="ecore:EAttribute" name="null" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
148 </eClassifiers>
149 <eClassifiers xsi:type="ecore:EClass" name="PivotTable">
150 <eStructuralFeatures xsi:type="ecore:EReference" name="pfun" eType="#//PivotFunctions"
151 containment="true"/>
152 <eStructuralFeatures xsi:type="ecore:EReference" name="pfor" eType="#//PivotForClause"
153 containment="true"/>
154 <eStructuralFeatures xsi:type="ecore:EReference" name="pin" eType="#//PivotInClause"
155 containment="true"/>
156 </eClassifiers>
157 <eClassifiers xsi:type="ecore:EClass" name="PivotFunctions">
158 <eStructuralFeatures xsi:type="ecore:EAttribute" name="abc" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
159 </eClassifiers>
160 <eClassifiers xsi:type="ecore:EClass" name="PivotFunction"/>
161 <eClassifiers xsi:type="ecore:EClass" name="PivotInClause">
162 <eStructuralFeatures xsi:type="ecore:EReference" name="sq" eType="#//SubQueryOperand"
163 containment="true"/>
164 <eStructuralFeatures xsi:type="ecore:EReference" name="args" eType="#//UnpivotInClauseArgs"
165 containment="true"/>
166 <eStructuralFeatures xsi:type="ecore:EAttribute" name="pinany" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
167 </eClassifiers>
168 <eClassifiers xsi:type="ecore:EClass" name="UnpivotTable">
169 <eStructuralFeatures xsi:type="ecore:EReference" name="pcols" eType="#//PivotColumns"
170 containment="true"/>
171 <eStructuralFeatures xsi:type="ecore:EReference" name="pfor" eType="#//PivotForClause"
172 containment="true"/>
173 <eStructuralFeatures xsi:type="ecore:EReference" name="inop" eType="#//UnpivotInClause"
174 containment="true"/>
175 </eClassifiers>
176 <eClassifiers xsi:type="ecore:EClass" name="UnpivotInClause"/>
177 <eClassifiers xsi:type="ecore:EClass" name="UnpivotInClauseArgs"/>
178 <eClassifiers xsi:type="ecore:EClass" name="UnpivotInClauseArg" eSuperTypes="#//UnpivotInClauseArgs">
179 <eStructuralFeatures xsi:type="ecore:EReference" name="pcols" eType="#//PivotColumns"
180 containment="true"/>
181 <eStructuralFeatures xsi:type="ecore:EReference" name="cfuls" eType="#//PivotColumns"
182 containment="true"/>
183 </eClassifiers>
184 <eClassifiers xsi:type="ecore:EClass" name="PivotForClause"/>
185 <eClassifiers xsi:type="ecore:EClass" name="PivotColumns"/>
186 <eClassifiers xsi:type="ecore:EClass" name="Pivots" eSuperTypes="#//PivotColumns"/>
187 <eClassifiers xsi:type="ecore:EClass" name="PivotCol" eSuperTypes="#//PivotFunction #//PivotColumns #//Pivots"/>
188 <eClassifiers xsi:type="ecore:EClass" name="TableFull"/>
189 <eClassifiers xsi:type="ecore:EClass" name="DbObjectNameAll">
190 <eStructuralFeatures xsi:type="ecore:EAttribute" name="dbname" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
191 </eClassifiers>
192 <eClassifiers xsi:type="ecore:EClass" name="DbObjectName" eSuperTypes="#//ColumnFull #//UsingCols #//PivotCol #//TableFull">
193 <eStructuralFeatures xsi:type="ecore:EAttribute" name="dbname" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
194 </eClassifiers>
195 <eClassifiers xsi:type="ecore:EClass" name="OrOrderByColumn">
196 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
197 eType="#//OrderByColumnFull" containment="true"/>
198 </eClassifiers>
199 <eClassifiers xsi:type="ecore:EClass" name="OrderByColumnFull" eSuperTypes="#//OrOrderByColumn">
200 <eStructuralFeatures xsi:type="ecore:EReference" name="colOrder" eType="#//ColumnFull"
201 containment="true"/>
202 <eStructuralFeatures xsi:type="ecore:EAttribute" name="colOrderInt" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
203 <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
204 </eClassifiers>
205 <eClassifiers xsi:type="ecore:EClass" name="OrGroupByColumn">
206 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
207 eType="#//GroupByColumnFull" containment="true"/>
208 </eClassifiers>
209 <eClassifiers xsi:type="ecore:EClass" name="GroupByColumnFull" eSuperTypes="#//OrGroupByColumn">
210 <eStructuralFeatures xsi:type="ecore:EReference" name="colGrBy" eType="#//ColumnFull"
211 containment="true"/>
212 <eStructuralFeatures xsi:type="ecore:EReference" name="gbFunction" eType="#//OpFunction"
213 containment="true"/>
214 <eStructuralFeatures xsi:type="ecore:EAttribute" name="grByInt" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
215 </eClassifiers>
216 <eClassifiers xsi:type="ecore:EClass" name="OrExpr">
217 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
218 eType="#//FullExpression" containment="true"/>
219 </eClassifiers>
220 <eClassifiers xsi:type="ecore:EClass" name="FullExpression" eSuperTypes="#//OrExpr">
221 <eStructuralFeatures xsi:type="ecore:EAttribute" name="c" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
222 <eStructuralFeatures xsi:type="ecore:EReference" name="efrag" eType="#//FullExpression"
223 containment="true"/>
224 <eStructuralFeatures xsi:type="ecore:EAttribute" name="notPrm" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
225 <eStructuralFeatures xsi:type="ecore:EReference" name="expgroup" eType="#//ExprGroup"
226 containment="true"/>
227 <eStructuralFeatures xsi:type="ecore:EReference" name="exp" eType="#//FullExpression"
228 containment="true"/>
229 <eStructuralFeatures xsi:type="ecore:EReference" name="xexp" eType="#//XExpr"
230 containment="true"/>
231 <eStructuralFeatures xsi:type="ecore:EReference" name="in" eType="#//InOper" containment="true"/>
232 <eStructuralFeatures xsi:type="ecore:EReference" name="exists" eType="#//ExistsOper"
233 containment="true"/>
234 <eStructuralFeatures xsi:type="ecore:EReference" name="op1" eType="#//Operands"
235 containment="true"/>
236 <eStructuralFeatures xsi:type="ecore:EAttribute" name="isnull" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
237 <eStructuralFeatures xsi:type="ecore:EReference" name="between" eType="#//Between"
238 containment="true"/>
239 <eStructuralFeatures xsi:type="ecore:EReference" name="like" eType="#//Like" containment="true"/>
240 <eStructuralFeatures xsi:type="ecore:EReference" name="comp" eType="#//Comparison"
241 containment="true"/>
242 </eClassifiers>
243 <eClassifiers xsi:type="ecore:EClass" name="ExprGroup">
244 <eStructuralFeatures xsi:type="ecore:EAttribute" name="isnot" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
245 <eStructuralFeatures xsi:type="ecore:EReference" name="expr" eType="#//OrExpr"
246 containment="true"/>
247 </eClassifiers>
248 <eClassifiers xsi:type="ecore:EClass" name="XExpr">
249 <eStructuralFeatures xsi:type="ecore:EAttribute" name="xf" eType="#//XFunction"/>
250 <eStructuralFeatures xsi:type="ecore:EReference" name="col" eType="#//Operands"
251 containment="true"/>
252 <eStructuralFeatures xsi:type="ecore:EReference" name="prm" eType="#//Prms" containment="true"/>
253 </eClassifiers>
254 <eClassifiers xsi:type="ecore:EEnum" name="XFunction">
255 <eLiterals name="xin" literal="{IN"/>
256 <eLiterals name="xnotin" value="1" literal="{NOTIN"/>
257 <eLiterals name="xeq" value="2" literal="{EQUAL"/>
258 <eLiterals name="xnoteq" value="3" literal="{NOTEQUAL"/>
259 <eLiterals name="xls" value="4" literal="{LESS"/>
260 <eLiterals name="xlsr" value="5" literal="{LESS]"/>
261 <eLiterals name="xgtl" value="6" literal="{[GREATER"/>
262 <eLiterals name="xgt" value="7" literal="{GREATER"/>
263 <eLiterals name="xbwn" value="8" literal="{BETWEEN"/>
264 <eLiterals name="xbwnc" value="9" literal="{[BETWEEN]"/>
265 <eLiterals name="xbwnl" value="10" literal="{[BETWEEN"/>
266 <eLiterals name="xbwnr" value="11" literal="{BETWEEN]"/>
267 </eClassifiers>
268 <eClassifiers xsi:type="ecore:EClass" name="Prms">
269 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
270 eType="#//JRParameter" containment="true"/>
271 </eClassifiers>
272 <eClassifiers xsi:type="ecore:EClass" name="JRParameter" eSuperTypes="#//Prms">
273 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jrprm" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
274 </eClassifiers>
275 <eClassifiers xsi:type="ecore:EClass" name="Comparison">
276 <eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
277 <eStructuralFeatures xsi:type="ecore:EAttribute" name="subOperator" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
278 <eStructuralFeatures xsi:type="ecore:EReference" name="op2" eType="#//Operands"
279 containment="true"/>
280 </eClassifiers>
281 <eClassifiers xsi:type="ecore:EClass" name="Like">
282 <eStructuralFeatures xsi:type="ecore:EAttribute" name="opLike" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
283 <eStructuralFeatures xsi:type="ecore:EReference" name="op2" eType="#//LikeOperand"
284 containment="true"/>
285 </eClassifiers>
286 <eClassifiers xsi:type="ecore:EClass" name="LikeOperand">
287 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op2" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
288 <eStructuralFeatures xsi:type="ecore:EReference" name="fop2" eType="#//OpFunction"
289 containment="true"/>
290 <eStructuralFeatures xsi:type="ecore:EReference" name="fcast" eType="#//OpFunctionCast"
291 containment="true"/>
292 <eStructuralFeatures xsi:type="ecore:EReference" name="fparam" eType="#//POperand"
293 containment="true"/>
294 </eClassifiers>
295 <eClassifiers xsi:type="ecore:EClass" name="Between">
296 <eStructuralFeatures xsi:type="ecore:EAttribute" name="opBetween" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
297 <eStructuralFeatures xsi:type="ecore:EReference" name="op2" eType="#//Operands"
298 containment="true"/>
299 <eStructuralFeatures xsi:type="ecore:EReference" name="op3" eType="#//Operands"
300 containment="true"/>
301 </eClassifiers>
302 <eClassifiers xsi:type="ecore:EClass" name="InOper">
303 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
304 <eStructuralFeatures xsi:type="ecore:EReference" name="subquery" eType="#//SubQueryOperand"
305 containment="true"/>
306 <eStructuralFeatures xsi:type="ecore:EReference" name="opList" eType="#//OperandListGroup"
307 containment="true"/>
308 </eClassifiers>
309 <eClassifiers xsi:type="ecore:EClass" name="ExistsOper">
310 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
311 <eStructuralFeatures xsi:type="ecore:EReference" name="subquery" eType="#//SubQueryOperand"
312 containment="true"/>
313 <eStructuralFeatures xsi:type="ecore:EReference" name="opList" eType="#//OperandListGroup"
314 containment="true"/>
315 </eClassifiers>
316 <eClassifiers xsi:type="ecore:EClass" name="OperandListGroup">
317 <eStructuralFeatures xsi:type="ecore:EReference" name="opGroup" eType="#//OperandList"
318 containment="true"/>
319 </eClassifiers>
320 <eClassifiers xsi:type="ecore:EClass" name="OperandList"/>
321 <eClassifiers xsi:type="ecore:EClass" name="Operands" eSuperTypes="#//OpFunctionArgAgregate">
322 <eStructuralFeatures xsi:type="ecore:EReference" name="op1" eType="#//Operand"
323 containment="true"/>
324 <eStructuralFeatures xsi:type="ecore:EReference" name="left" eType="#//Operands"
325 containment="true"/>
326 <eStructuralFeatures xsi:type="ecore:EReference" name="right" eType="#//Operand"
327 containment="true"/>
328 </eClassifiers>
329 <eClassifiers xsi:type="ecore:EClass" name="Operand">
330 <eStructuralFeatures xsi:type="ecore:EReference" name="column" eType="#//ColumnOperand"
331 containment="true"/>
332 <eStructuralFeatures xsi:type="ecore:EReference" name="xop" eType="#//Operand"
333 containment="true"/>
334 <eStructuralFeatures xsi:type="ecore:EReference" name="subq" eType="#//SubQueryOperand"
335 containment="true"/>
336 <eStructuralFeatures xsi:type="ecore:EReference" name="fcast" eType="#//OpFunctionCast"
337 containment="true"/>
338 <eStructuralFeatures xsi:type="ecore:EReference" name="fext" eType="#//FunctionExtract"
339 containment="true"/>
340 <eStructuralFeatures xsi:type="ecore:EReference" name="func" eType="#//OpFunction"
341 containment="true"/>
342 <eStructuralFeatures xsi:type="ecore:EReference" name="sqlcase" eType="#//SQLCaseOperand"
343 containment="true"/>
344 <eStructuralFeatures xsi:type="ecore:EReference" name="param" eType="#//POperand"
345 containment="true"/>
346 <eStructuralFeatures xsi:type="ecore:EReference" name="eparam" eType="#//ExpOperand"
347 containment="true"/>
348 <eStructuralFeatures xsi:type="ecore:EReference" name="scalar" eType="#//ScalarOperand"
349 containment="true"/>
350 </eClassifiers>
351 <eClassifiers xsi:type="ecore:EClass" name="OpFunction">
352 <eStructuralFeatures xsi:type="ecore:EAttribute" name="fname" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
353 <eStructuralFeatures xsi:type="ecore:EAttribute" name="star" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
354 <eStructuralFeatures xsi:type="ecore:EReference" name="args" eType="#//OpFunctionArg"
355 containment="true"/>
356 <eStructuralFeatures xsi:type="ecore:EReference" name="fan" eType="#//FunctionAnalytical"
357 containment="true"/>
358 </eClassifiers>
359 <eClassifiers xsi:type="ecore:EClass" name="FunctionExtract">
360 <eStructuralFeatures xsi:type="ecore:EAttribute" name="v" eType="#//EXTRACT_VALUES"/>
361 <eStructuralFeatures xsi:type="ecore:EReference" name="operand" eType="#//Operands"
362 containment="true"/>
363 </eClassifiers>
364 <eClassifiers xsi:type="ecore:EClass" name="FunctionAnalytical">
365 <eStructuralFeatures xsi:type="ecore:EReference" name="anClause" eType="#//AnalyticClause"
366 containment="true"/>
367 </eClassifiers>
368 <eClassifiers xsi:type="ecore:EClass" name="AnalyticClause">
369 <eStructuralFeatures xsi:type="ecore:EReference" name="abc" eType="#//QueryPartitionClause"
370 containment="true"/>
371 <eStructuralFeatures xsi:type="ecore:EReference" name="obc" eType="#//OrderByClause"
372 containment="true"/>
373 <eStructuralFeatures xsi:type="ecore:EReference" name="winc" eType="#//WindowingClause"
374 containment="true"/>
375 </eClassifiers>
376 <eClassifiers xsi:type="ecore:EClass" name="WindowingClause"/>
377 <eClassifiers xsi:type="ecore:EClass" name="WindowingClauseBetween" eSuperTypes="#//WindowingClause">
378 <eStructuralFeatures xsi:type="ecore:EReference" name="wcoP" eType="#//WindowingClauseOperandPreceding"
379 containment="true"/>
380 <eStructuralFeatures xsi:type="ecore:EReference" name="wcoF" eType="#//WindowingClauseOperandFollowing"
381 containment="true"/>
382 </eClassifiers>
383 <eClassifiers xsi:type="ecore:EClass" name="WindowingClauseOperandFollowing">
384 <eStructuralFeatures xsi:type="ecore:EReference" name="exp" eType="#//AnalyticExprArg"
385 containment="true"/>
386 </eClassifiers>
387 <eClassifiers xsi:type="ecore:EClass" name="WindowingClauseOperandPreceding" eSuperTypes="#//WindowingClause">
388 <eStructuralFeatures xsi:type="ecore:EReference" name="expr" eType="#//AnalyticExprArg"
389 containment="true"/>
390 </eClassifiers>
391 <eClassifiers xsi:type="ecore:EClass" name="OrderByClause">
392 <eStructuralFeatures xsi:type="ecore:EReference" name="args" eType="#//OrderByClauseArgs"
393 containment="true"/>
394 </eClassifiers>
395 <eClassifiers xsi:type="ecore:EClass" name="OrderByClauseArgs"/>
396 <eClassifiers xsi:type="ecore:EClass" name="OrderByClauseArg" eSuperTypes="#//OrderByClauseArgs">
397 <eStructuralFeatures xsi:type="ecore:EReference" name="col" eType="#//AnalyticExprArg"
398 containment="true"/>
399 </eClassifiers>
400 <eClassifiers xsi:type="ecore:EClass" name="QueryPartitionClause">
401 <eStructuralFeatures xsi:type="ecore:EReference" name="args" eType="#//AnalyticExprArgs"
402 containment="true"/>
403 </eClassifiers>
404 <eClassifiers xsi:type="ecore:EClass" name="AnalyticExprArgs" eSuperTypes="#//QueryPartitionClause"/>
405 <eClassifiers xsi:type="ecore:EClass" name="AnalyticExprArg" eSuperTypes="#//AnalyticExprArgs">
406 <eStructuralFeatures xsi:type="ecore:EReference" name="ce" eType="#//Operands"
407 containment="true"/>
408 <eStructuralFeatures xsi:type="ecore:EReference" name="colAlias" eType="#//DbObjectName"
409 containment="true"/>
410 </eClassifiers>
411 <eClassifiers xsi:type="ecore:EClass" name="OpFunctionArg"/>
412 <eClassifiers xsi:type="ecore:EClass" name="OpFunctionArgOperand" eSuperTypes="#//OpFunctionArg">
413 <eStructuralFeatures xsi:type="ecore:EReference" name="op" eType="#//OpFunctionArgAgregate"
414 containment="true"/>
415 </eClassifiers>
416 <eClassifiers xsi:type="ecore:EClass" name="OpFunctionCast">
417 <eStructuralFeatures xsi:type="ecore:EReference" name="op" eType="#//Operands"
418 containment="true"/>
419 <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
420 <eStructuralFeatures xsi:type="ecore:EAttribute" name="p" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
421 <eStructuralFeatures xsi:type="ecore:EAttribute" name="p2" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
422 </eClassifiers>
423 <eClassifiers xsi:type="ecore:EClass" name="OpFunctionArgAgregate"/>
424 <eClassifiers xsi:type="ecore:EClass" name="POperand">
425 <eStructuralFeatures xsi:type="ecore:EAttribute" name="prm" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
426 </eClassifiers>
427 <eClassifiers xsi:type="ecore:EClass" name="ExpOperand">
428 <eStructuralFeatures xsi:type="ecore:EAttribute" name="prm" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
429 </eClassifiers>
430 <eClassifiers xsi:type="ecore:EClass" name="ColumnOperand">
431 <eStructuralFeatures xsi:type="ecore:EReference" name="cfull" eType="#//ColumnFull"
432 containment="true"/>
433 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ora" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
434 </eClassifiers>
435 <eClassifiers xsi:type="ecore:EClass" name="SubQueryOperand">
436 <eStructuralFeatures xsi:type="ecore:EReference" name="sel" eType="#//SelectQuery"
437 containment="true"/>
438 </eClassifiers>
439 <eClassifiers xsi:type="ecore:EClass" name="ScalarOperand" eSuperTypes="#//RowValue #//OperandList">
440 <eStructuralFeatures xsi:type="ecore:EAttribute" name="sostr" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
441 <eStructuralFeatures xsi:type="ecore:EAttribute" name="sodbl" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal"/>
442 <eStructuralFeatures xsi:type="ecore:EAttribute" name="sodate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
443 <eStructuralFeatures xsi:type="ecore:EAttribute" name="sotime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
444 <eStructuralFeatures xsi:type="ecore:EAttribute" name="sodt" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
445 <eStructuralFeatures xsi:type="ecore:EAttribute" name="soUInt" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
446 <eStructuralFeatures xsi:type="ecore:EAttribute" name="soint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
447 </eClassifiers>
448 <eClassifiers xsi:type="ecore:EClass" name="SQLCaseOperand">
449 <eStructuralFeatures xsi:type="ecore:EReference" name="wop" eType="#//Operands"
450 containment="true"/>
451 <eStructuralFeatures xsi:type="ecore:EReference" name="expr" eType="#//OrExpr"
452 containment="true"/>
453 <eStructuralFeatures xsi:type="ecore:EReference" name="when" eType="#//SQLCaseWhens"
454 containment="true"/>
455 </eClassifiers>
456 <eClassifiers xsi:type="ecore:EClass" name="SQLCaseWhens"/>
457 <eClassifiers xsi:type="ecore:EClass" name="SqlCaseWhen" eSuperTypes="#//SQLCaseWhens">
458 <eStructuralFeatures xsi:type="ecore:EReference" name="wop" eType="#//Operands"
459 containment="true"/>
460 <eStructuralFeatures xsi:type="ecore:EReference" name="expr" eType="#//OrExpr"
461 containment="true"/>
462 <eStructuralFeatures xsi:type="ecore:EReference" name="texp" eType="#//Operands"
463 containment="true"/>
464 <eStructuralFeatures xsi:type="ecore:EReference" name="eexp" eType="#//Operands"
465 containment="true"/>
466 </eClassifiers>
467 <eClassifiers xsi:type="ecore:EEnum" name="EXTRACT_VALUES">
468 <eLiterals name="ms" literal="MICROSECOND"/>
469 <eLiterals name="s" value="1" literal="SECOND"/>
470 <eLiterals name="m" value="2" literal="MINUTE"/>
471 <eLiterals name="h" value="3" literal="HOUR"/>
472 <eLiterals name="day" value="4" literal="DAY"/>
473 <eLiterals name="week" value="5" literal="WEEK"/>
474 <eLiterals name="month" value="6" literal="MONTH"/>
475 <eLiterals name="quart" value="7" literal="QUARTER"/>
476 <eLiterals name="year" value="8" literal="YEAR"/>
477 <eLiterals name="micros" value="9" literal="SECOND_MICROSECOND"/>
478 <eLiterals name="minMicro" value="10" literal="MINUTE_MICROSECOND"/>
479 <eLiterals name="minSec" value="11" literal="MINUTE_SECOND"/>
480 <eLiterals name="hms" value="12" literal="HOUR_MICROSECOND"/>
481 <eLiterals name="hs" value="13" literal="HOUR_SECOND"/>
482 <eLiterals name="hmin" value="14" literal="HOUR_MINUTE"/>
483 <eLiterals name="dms" value="15" literal="DAY_MICROSECOND"/>
484 <eLiterals name="ds" value="16" literal="DAY_SECOND"/>
485 <eLiterals name="daymin" value="17" literal="DAY_MINUTE"/>
486 <eLiterals name="dayh" value="18" literal="DAY_HOUR"/>
487 <eLiterals name="yearMonth" value="19" literal="YEAR_MONTH"/>
488 </eClassifiers>
489 <eClassifiers xsi:type="ecore:EClass" name="IntegerValue">
490 <eStructuralFeatures xsi:type="ecore:EAttribute" name="integer" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
491 </eClassifiers>
492 <eClassifiers xsi:type="ecore:EClass" name="UnsignedValue">
493 <eStructuralFeatures xsi:type="ecore:EAttribute" name="integer" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
494 </eClassifiers>
495 <eClassifiers xsi:type="ecore:EClass" name="Col" eSuperTypes="#//ColumnFull">
496 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
497 eType="#//DbObjectName" containment="true"/>
498 </eClassifiers>
499 <eClassifiers xsi:type="ecore:EClass" name="abc" eSuperTypes="#//FromValuesColumnNames">
500 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
501 eType="#//ColumnNames" containment="true"/>
502 </eClassifiers>
503 <eClassifiers xsi:type="ecore:EClass" name="UnipivotInClause" eSuperTypes="#//UnpivotInClause">
504 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
505 <eStructuralFeatures xsi:type="ecore:EReference" name="args" eType="#//UnpivotInClauseArgs"
506 containment="true"/>
507 </eClassifiers>
508 <eClassifiers xsi:type="ecore:EClass" name="uicargs" eSuperTypes="#//UnpivotInClauseArgs">
509 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
510 eType="#//UnpivotInClauseArg" containment="true"/>
511 </eClassifiers>
512 <eClassifiers xsi:type="ecore:EClass" name="pvcs" eSuperTypes="#//Pivots">
513 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
514 eType="#//PivotCol" containment="true"/>
515 </eClassifiers>
516 <eClassifiers xsi:type="ecore:EClass" name="pcols" eSuperTypes="#//PivotCol">
517 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
518 eType="#//DbObjectName" containment="true"/>
519 </eClassifiers>
520 <eClassifiers xsi:type="ecore:EClass" name="tbls" eSuperTypes="#//TableFull">
521 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
522 eType="#//DbObjectName" containment="true"/>
523 </eClassifiers>
524 <eClassifiers xsi:type="ecore:EClass" name="OpList" eSuperTypes="#//OperandList">
525 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
526 eType="#//ScalarOperand" containment="true"/>
527 </eClassifiers>
528 <eClassifiers xsi:type="ecore:EClass" name="Plus" eSuperTypes="#//Operands"/>
529 <eClassifiers xsi:type="ecore:EClass" name="Minus" eSuperTypes="#//Operands"/>
530 <eClassifiers xsi:type="ecore:EClass" name="Concat" eSuperTypes="#//Operands"/>
531 <eClassifiers xsi:type="ecore:EClass" name="Multiply" eSuperTypes="#//Operands"/>
532 <eClassifiers xsi:type="ecore:EClass" name="Division" eSuperTypes="#//Operands"/>
533 <eClassifiers xsi:type="ecore:EClass" name="OBCArgs" eSuperTypes="#//OrderByClauseArgs">
534 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
535 eType="#//OrderByClauseArg" containment="true"/>
536 </eClassifiers>
537 <eClassifiers xsi:type="ecore:EClass" name="AExpArgs" eSuperTypes="#//AnalyticExprArgs">
538 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
539 eType="#//AnalyticExprArg" containment="true"/>
540 </eClassifiers>
541 <eClassifiers xsi:type="ecore:EClass" name="OpFList" eSuperTypes="#//OpFunctionArg">
542 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
543 eType="#//OpFunctionArgOperand" containment="true"/>
544 </eClassifiers>
545 <eClassifiers xsi:type="ecore:EClass" name="WhenList" eSuperTypes="#//SQLCaseWhens">
546 <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
547 eType="#//SqlCaseWhen" containment="true"/>
548 </eClassifiers>
549</ecore:EPackage>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/na_rep/XSHMLMT.ecore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/na_rep/XSHMLMT.ecore
new file mode 100644
index 00000000..f741662e
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/na_rep/XSHMLMT.ecore
@@ -0,0 +1,203 @@
1<?xml version="1.0" encoding="ASCII"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="shml" nsURI="http://ecnu.models.xshml.xshmlmt/shml/" nsPrefix="shml">
3 <eClassifiers xsi:type="ecore:EClass" name="System">
4 <eOperations name="main">
5 <eAnnotations source="aspect"/>
6 </eOperations>
7 <eOperations name="doprintconfiguration">
8 <eAnnotations source="aspect"/>
9 </eOperations>
10 <eOperations name="dojump">
11 <eAnnotations source="aspect"/>
12 </eOperations>
13 <eOperations name="callscilab">
14 <eAnnotations source="aspect"/>
15 </eOperations>
16 <eOperations name="RealizeInitializeModel">
17 <eAnnotations source="aspect"/>
18 <eParameters name="arguments" upperBound="-1">
19 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
20 </eParameters>
21 </eOperations>
22 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
23 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
24 </eStructuralFeatures>
25 <eStructuralFeatures xsi:type="ecore:EReference" name="tshss" upperBound="-1" eType="//TSHS" containment="true"/>
26 <eStructuralFeatures xsi:type="ecore:EReference" name="globalvariables" upperBound="-1" eType="//Variable" containment="true"/>
27 <eStructuralFeatures xsi:type="ecore:EReference" name="globalclocks" upperBound="-1" eType="//Clock" containment="true"/>
28 <eStructuralFeatures xsi:type="ecore:EReference" name="globalevents" upperBound="-1" eType="//Event" containment="true"/>
29 </eClassifiers>
30 <eClassifiers xsi:type="ecore:EClass" name="TSHS">
31 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
32 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
33 </eStructuralFeatures>
34 <eStructuralFeatures xsi:type="ecore:EReference" name="ownedodes" upperBound="-1" eType="//ODE" containment="true"/>
35 <eStructuralFeatures xsi:type="ecore:EReference" name="ownedstates" upperBound="-1" eType="//State" containment="true"/>
36 <eStructuralFeatures xsi:type="ecore:EReference" name="ownedtransitions" upperBound="-1" eType="//Transition" containment="true"/>
37 <eStructuralFeatures xsi:type="ecore:EReference" name="localvariables" upperBound="-1" eType="//Variable" containment="true"/>
38 <eStructuralFeatures xsi:type="ecore:EReference" name="localclocks" upperBound="-1" eType="//Clock" containment="true"/>
39 <eStructuralFeatures xsi:type="ecore:EReference" name="localevents" upperBound="-1" eType="//Event" containment="true"/>
40 <eStructuralFeatures xsi:type="ecore:EReference" name="initialstate" lowerBound="1" eType="//State"/>
41 <eStructuralFeatures xsi:type="ecore:EReference" name="ownedexpos" upperBound="-1" eType="//ExpoDistribution" containment="true"/>
42 <eStructuralFeatures xsi:type="ecore:EReference" name="ownedactions" upperBound="-1" eType="//Action" containment="true"/>
43 <eStructuralFeatures xsi:type="ecore:EReference" name="ownedguards" upperBound="-1" eType="//Guard" containment="true"/>
44 <eStructuralFeatures xsi:type="ecore:EReference" name="ownedunifs" upperBound="-1" eType="//UnifDistribution" containment="true"/>
45 </eClassifiers>
46 <eClassifiers xsi:type="ecore:EClass" name="Variable">
47 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
48 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
49 </eStructuralFeatures>
50 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value">
51 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
52 </eStructuralFeatures>
53 </eClassifiers>
54 <eClassifiers xsi:type="ecore:EClass" name="Clock">
55 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
56 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
57 </eStructuralFeatures>
58 <eStructuralFeatures xsi:type="ecore:EAttribute" name="time">
59 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
60 </eStructuralFeatures>
61 </eClassifiers>
62 <eClassifiers xsi:type="ecore:EClass" name="Event">
63 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
64 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
65 </eStructuralFeatures>
66 <eStructuralFeatures xsi:type="ecore:EAttribute" name="send">
67 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
68 </eStructuralFeatures>
69 <eStructuralFeatures xsi:type="ecore:EAttribute" name="receive">
70 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
71 </eStructuralFeatures>
72 <eStructuralFeatures xsi:type="ecore:EAttribute" name="active">
73 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
74 </eStructuralFeatures>
75 </eClassifiers>
76 <eClassifiers xsi:type="ecore:EClass" name="Transition" abstract="true">
77 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
78 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
79 </eStructuralFeatures>
80 <eStructuralFeatures xsi:type="ecore:EReference" name="triggerevent" lowerBound="1" eType="//Event"/>
81 <eStructuralFeatures xsi:type="ecore:EReference" name="taction" lowerBound="1" eType="//Action"/>
82 <eStructuralFeatures xsi:type="ecore:EReference" name="evaluateguard" lowerBound="1" eType="//EvaluateGuard"/>
83 <eStructuralFeatures xsi:type="ecore:EReference" name="temporalguard" lowerBound="1" eType="//TemporalGuard"/>
84 </eClassifiers>
85 <eClassifiers xsi:type="ecore:EClass" name="Guard" abstract="true">
86 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
87 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
88 </eStructuralFeatures>
89 </eClassifiers>
90 <eClassifiers xsi:type="ecore:EClass" name="TemporalGuard" eSuperTypes="//Guard">
91 <eOperations name="holdstg">
92 <eAnnotations source="aspect"/>
93 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
94 </eOperations>
95 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tcondition">
96 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
97 </eStructuralFeatures>
98 <eStructuralFeatures xsi:type="ecore:EReference" name="onclock" lowerBound="1" eType="//Clock"/>
99 </eClassifiers>
100 <eClassifiers xsi:type="ecore:EClass" name="EvaluateGuard" eSuperTypes="//Guard">
101 <eOperations name="holdseg">
102 <eAnnotations source="aspect"/>
103 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
104 </eOperations>
105 <eStructuralFeatures xsi:type="ecore:EAttribute" name="vcondition">
106 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
107 </eStructuralFeatures>
108 <eStructuralFeatures xsi:type="ecore:EReference" name="onvariable" lowerBound="1" eType="//Variable"/>
109 </eClassifiers>
110 <eClassifiers xsi:type="ecore:EClass" name="State">
111 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
112 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
113 </eStructuralFeatures>
114 <eStructuralFeatures xsi:type="ecore:EReference" name="slaveode" lowerBound="1" eType="//ODE"/>
115 <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingct" upperBound="-1" eType="//ComTransition" eOpposite="//ComTransition/csrc"/>
116 <eStructuralFeatures xsi:type="ecore:EReference" name="incomingct" upperBound="-1" eType="//ComTransition" eOpposite="//ComTransition/ctgt"/>
117 <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingpt" upperBound="-1" eType="//ProbTransition" eOpposite="//ProbTransition/psrc"/>
118 <eStructuralFeatures xsi:type="ecore:EReference" name="incomingpt" upperBound="-1" eType="//ProbTransition" eOpposite="//ProbTransition/ptgt"/>
119 <eStructuralFeatures xsi:type="ecore:EReference" name="subdiagram" lowerBound="1" eType="//TSHS"/>
120 <eStructuralFeatures xsi:type="ecore:EReference" name="fatherstate" lowerBound="1" eType="//State"/>
121 <eStructuralFeatures xsi:type="ecore:EReference" name="slavelambda" lowerBound="1" eType="//ExpoDistribution"/>
122 <eStructuralFeatures xsi:type="ecore:EReference" name="slaveunif" lowerBound="1" eType="//UnifDistribution"/>
123 </eClassifiers>
124 <eClassifiers xsi:type="ecore:EClass" name="ComTransition" eSuperTypes="//Transition">
125 <eStructuralFeatures xsi:type="ecore:EReference" name="csrc" lowerBound="1" eType="//State" eOpposite="//State/outgoingct"/>
126 <eStructuralFeatures xsi:type="ecore:EReference" name="ctgt" eType="//State" eOpposite="//State/incomingct"/>
127 </eClassifiers>
128 <eClassifiers xsi:type="ecore:EClass" name="ProbTransition" eSuperTypes="//Transition">
129 <eStructuralFeatures xsi:type="ecore:EAttribute" name="probability">
130 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
131 </eStructuralFeatures>
132 <eStructuralFeatures xsi:type="ecore:EReference" name="psrc" lowerBound="1" eType="//State" eOpposite="//State/outgoingpt"/>
133 <eStructuralFeatures xsi:type="ecore:EReference" name="ptgt" lowerBound="1" eType="//State" eOpposite="//State/incomingpt"/>
134 </eClassifiers>
135 <eClassifiers xsi:type="ecore:EClass" name="Function">
136 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
137 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
138 </eStructuralFeatures>
139 <eStructuralFeatures xsi:type="ecore:EReference" name="indevariable" lowerBound="1" eType="//IndeVariable" containment="true"/>
140 <eStructuralFeatures xsi:type="ecore:EReference" name="devariable" lowerBound="1" eType="//DeVariable" containment="true"/>
141 <eStructuralFeatures xsi:type="ecore:EReference" name="fright" lowerBound="1" eType="//Fright" containment="true"/>
142 </eClassifiers>
143 <eClassifiers xsi:type="ecore:EClass" name="IndeVariable">
144 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
145 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
146 </eStructuralFeatures>
147 </eClassifiers>
148 <eClassifiers xsi:type="ecore:EClass" name="DeVariable">
149 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
150 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
151 </eStructuralFeatures>
152 </eClassifiers>
153 <eClassifiers xsi:type="ecore:EClass" name="Fright">
154 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
155 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
156 </eStructuralFeatures>
157 </eClassifiers>
158 <eClassifiers xsi:type="ecore:EClass" name="ODE">
159 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
160 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
161 </eStructuralFeatures>
162 <eStructuralFeatures xsi:type="ecore:EReference" name="condition" lowerBound="1" eType="//Condition" containment="true"/>
163 <eStructuralFeatures xsi:type="ecore:EReference" name="interval" lowerBound="1" eType="//Interval" containment="true"/>
164 <eStructuralFeatures xsi:type="ecore:EReference" name="function" lowerBound="1" eType="//Function" containment="true"/>
165 </eClassifiers>
166 <eClassifiers xsi:type="ecore:EClass" name="Condition">
167 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
168 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
169 </eStructuralFeatures>
170 </eClassifiers>
171 <eClassifiers xsi:type="ecore:EClass" name="Interval">
172 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
173 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
174 </eStructuralFeatures>
175 <eStructuralFeatures xsi:type="ecore:EAttribute" name="left">
176 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
177 </eStructuralFeatures>
178 <eStructuralFeatures xsi:type="ecore:EAttribute" name="right">
179 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
180 </eStructuralFeatures>
181 <eStructuralFeatures xsi:type="ecore:EAttribute" name="subinterval">
182 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
183 </eStructuralFeatures>
184 </eClassifiers>
185 <eClassifiers xsi:type="ecore:EClass" name="ExpoDistribution">
186 <eStructuralFeatures xsi:type="ecore:EAttribute" name="lambda">
187 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
188 </eStructuralFeatures>
189 </eClassifiers>
190 <eClassifiers xsi:type="ecore:EClass" name="Action">
191 <eStructuralFeatures xsi:type="ecore:EAttribute" name="action">
192 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
193 </eStructuralFeatures>
194 </eClassifiers>
195 <eClassifiers xsi:type="ecore:EClass" name="UnifDistribution">
196 <eStructuralFeatures xsi:type="ecore:EAttribute" name="a">
197 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
198 </eStructuralFeatures>
199 <eStructuralFeatures xsi:type="ecore:EAttribute" name="b">
200 <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
201 </eStructuralFeatures>
202 </eClassifiers>
203</ecore:EPackage>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/out_d_rep/rdm.ecore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/out_d_rep/rdm.ecore
new file mode 100644
index 00000000..5c01ab01
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Ecore/out_d_rep/rdm.ecore
@@ -0,0 +1,178 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
3 <ecore:EPackage name="PrimitiveTypes">
4 <eClassifiers xsi:type="ecore:EDataType" name="Integer"/>
5 <eClassifiers xsi:type="ecore:EDataType" name="Long"/>
6 <eClassifiers xsi:type="ecore:EDataType" name="Float"/>
7 <eClassifiers xsi:type="ecore:EDataType" name="Double"/>
8 <eClassifiers xsi:type="ecore:EDataType" name="Boolean"/>
9 <eClassifiers xsi:type="ecore:EDataType" name="String"/>
10 </ecore:EPackage>
11 <ecore:EPackage name="RDM">
12 <eClassifiers xsi:type="ecore:EClass" name="DifferentFrom" eSuperTypes="/1/PredicateSymbol"/>
13 <eClassifiers xsi:type="ecore:EClass" name="SameAs" eSuperTypes="/1/PredicateSymbol"/>
14 <eClassifiers xsi:type="ecore:EClass" name="IndividualVariable" eSuperTypes="/1/Variable">
15 <eStructuralFeatures xsi:type="ecore:EReference" name="classRef" ordered="false" eType="/1/ODM/Class"/>
16 </eClassifiers>
17 <eClassifiers xsi:type="ecore:EClass" name="DataVariable" eSuperTypes="/1/Variable"/>
18 <eClassifiers xsi:type="ecore:EClass" name="Constant" eSuperTypes="/1/Term"/>
19 <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="/1/Term">
20 <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="/1/ODM/Datatype"/>
21 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
22 </eClassifiers>
23 <eClassifiers xsi:type="ecore:EClass" name="Term" abstract="true"/>
24 <eClassifiers xsi:type="ecore:EClass" name="BuiltIn" eSuperTypes="/1/PredicateSymbol">
25 <eStructuralFeatures xsi:type="ecore:EAttribute" name="buildInID" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
26 </eClassifiers>
27 <eClassifiers xsi:type="ecore:EClass" name="PredicateSymbol"/>
28 <eClassifiers xsi:type="ecore:EClass" name="Atom">
29 <eStructuralFeatures xsi:type="ecore:EReference" name="hasPredicateSymbol" ordered="false" lowerBound="1" eType="/1/PredicateSymbol"/>
30 <eStructuralFeatures xsi:type="ecore:EReference" name="terms" upperBound="-1" eType="/1/Term"/>
31 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
32 </eClassifiers>
33 <eClassifiers xsi:type="ecore:EClass" name="Consequent">
34 <eStructuralFeatures xsi:type="ecore:EReference" name="containsAtom" ordered="false" upperBound="-1" eType="/1/Atom"/>
35 </eClassifiers>
36 <eClassifiers xsi:type="ecore:EClass" name="Antecedent">
37 <eStructuralFeatures xsi:type="ecore:EReference" name="containsAtom" ordered="false" upperBound="-1" eType="/1/Atom"/>
38 </eClassifiers>
39 <eClassifiers xsi:type="ecore:EClass" name="Rule" eSuperTypes="/1/ODM/OntologyElement">
40 <eStructuralFeatures xsi:type="ecore:EReference" name="hasAntecedent" ordered="false" lowerBound="1" eType="/1/Antecedent"/>
41 <eStructuralFeatures xsi:type="ecore:EReference" name="hasConsequent" ordered="false" lowerBound="1" eType="/1/Consequent"/>
42 </eClassifiers>
43 <eSubpackages name="ODM">
44 <eClassifiers xsi:type="ecore:EClass" name="MinCardinalityRestriction" eSuperTypes="/1/ODM/Restriction">
45 <eStructuralFeatures xsi:type="ecore:EReference" name="minCardinality" ordered="false" lowerBound="1" eType="/1/ODM/TypedLiteral"/>
46 </eClassifiers>
47 <eClassifiers xsi:type="ecore:EClass" name="MaxCardinalityRestriction" eSuperTypes="/1/ODM/Restriction">
48 <eStructuralFeatures xsi:type="ecore:EReference" name="maxCardinality" ordered="false" lowerBound="1" eType="/1/ODM/TypedLiteral"/>
49 </eClassifiers>
50 <eClassifiers xsi:type="ecore:EClass" name="CardinalityRestriction" eSuperTypes="/1/ODM/Restriction">
51 <eStructuralFeatures xsi:type="ecore:EReference" name="cardinality" ordered="false" lowerBound="1" eType="/1/ODM/TypedLiteral"/>
52 </eClassifiers>
53 <eClassifiers xsi:type="ecore:EClass" name="TransitiveProperty" eSuperTypes="/1/ODM/ObjectProperty"/>
54 <eClassifiers xsi:type="ecore:EClass" name="SymmetricProperty" eSuperTypes="/1/ODM/ObjectProperty"/>
55 <eClassifiers xsi:type="ecore:EClass" name="InverseFunctionalProperty" eSuperTypes="/1/ODM/ObjectProperty"/>
56 <eClassifiers xsi:type="ecore:EClass" name="FunctionalProperty" eSuperTypes="/1/ODM/Property"/>
57 <eClassifiers xsi:type="ecore:EClass" name="PlainLiteral" eSuperTypes="/1/ODM/Literal">
58 <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
59 </eClassifiers>
60 <eClassifiers xsi:type="ecore:EClass" name="TypedLiteral" eSuperTypes="/1/ODM/Literal">
61 <eStructuralFeatures xsi:type="ecore:EAttribute" name="theType" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
62 </eClassifiers>
63 <eClassifiers xsi:type="ecore:EClass" name="Literal" abstract="true" eSuperTypes="/1/ODM/Datatype">
64 <eStructuralFeatures xsi:type="ecore:EAttribute" name="lexicalForm" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
65 </eClassifiers>
66 <eClassifiers xsi:type="ecore:EClass" name="Datatype" abstract="true" eSuperTypes="/1/ODM/OntologyElement"/>
67 <eClassifiers xsi:type="ecore:EClass" name="DataRange" eSuperTypes="/1/ODM/Class">
68 <eStructuralFeatures xsi:type="ecore:EReference" name="datatype" ordered="false" eType="/1/ODM/Datatype"/>
69 <eStructuralFeatures xsi:type="ecore:EReference" name="oneOf" ordered="false" upperBound="-1" eType="/1/ODM/Literal"/>
70 </eClassifiers>
71 <eClassifiers xsi:type="ecore:EClass" name="AllValuesFromRestriction" eSuperTypes="/1/ODM/Restriction">
72 <eStructuralFeatures xsi:type="ecore:EReference" name="allValuesFromRange" ordered="false" eType="/1/ODM/DataRange"/>
73 <eStructuralFeatures xsi:type="ecore:EReference" name="allValuesFromClass" ordered="false" eType="/1/ODM/Class"/>
74 </eClassifiers>
75 <eClassifiers xsi:type="ecore:EClass" name="SomeValuesFromRestriction" eSuperTypes="/1/ODM/Restriction">
76 <eStructuralFeatures xsi:type="ecore:EReference" name="someValuesFromClass" ordered="false" eType="/1/ODM/Class"/>
77 <eStructuralFeatures xsi:type="ecore:EReference" name="someValuesFromRange" ordered="false" eType="/1/ODM/DataRange"/>
78 </eClassifiers>
79 <eClassifiers xsi:type="ecore:EClass" name="OntologyPropertyValue" eSuperTypes="/1/ODM/OntologyProperty"/>
80 <eClassifiers xsi:type="ecore:EClass" name="URI" eSuperTypes="/1/ODM/Annotation"/>
81 <eClassifiers xsi:type="ecore:EClass" name="Annotation" abstract="true"/>
82 <eClassifiers xsi:type="ecore:EClass" name="AnnotationPropertyValue">
83 <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false" lowerBound="1" eType="/1/ODM/Annotation"/>
84 <eStructuralFeatures xsi:type="ecore:EReference" name="subject" ordered="false" lowerBound="1" eType="/1/ODM/AnnotatableElement"/>
85 <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1" eType="/1/ODM/AnnotationProperty"/>
86 </eClassifiers>
87 <eClassifiers xsi:type="ecore:EClass" name="EnumeratedDatatype" eSuperTypes="/1/ODM/Datatype">
88 <eStructuralFeatures xsi:type="ecore:EReference" name="collectionOf" ordered="false" upperBound="-1" eType="/1/ODM/DataValue"/>
89 </eClassifiers>
90 <eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="/1/ODM/Datatype"/>
91 <eClassifiers xsi:type="ecore:EClass" name="HasValueRestriction" eSuperTypes="/1/ODM/Restriction">
92 <eStructuralFeatures xsi:type="ecore:EReference" name="hasLiteralValue" ordered="false" eType="/1/ODM/Literal"/>
93 <eStructuralFeatures xsi:type="ecore:EReference" name="hasValue" ordered="false" eType="/1/ODM/Individual"/>
94 </eClassifiers>
95 <eClassifiers xsi:type="ecore:EClass" name="Restriction" abstract="true" eSuperTypes="/1/ODM/Class">
96 <eStructuralFeatures xsi:type="ecore:EReference" name="onProperty" ordered="false" upperBound="-1" eType="/1/ODM/Property"/>
97 <eStructuralFeatures xsi:type="ecore:EReference" name="toDatatype" ordered="false" eType="/1/ODM/Datatype"/>
98 </eClassifiers>
99 <eClassifiers xsi:type="ecore:EClass" name="AllDiferent" eSuperTypes="/1/ODM/Class">
100 <eStructuralFeatures xsi:type="ecore:EReference" name="distinctMembers" ordered="false" upperBound="-1" eType="/1/ODM/Individual"/>
101 </eClassifiers>
102 <eClassifiers xsi:type="ecore:EClass" name="DataValue" eSuperTypes="/1/Constant /1/ODM/Annotation">
103 <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1" eType="/1/ODM/Datatype"/>
104 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
105 </eClassifiers>
106 <eClassifiers xsi:type="ecore:EClass" name="DatatypePropertyValue" eSuperTypes="/1/ODM/PropertyValue">
107 <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false" lowerBound="1" eType="/1/ODM/DataValue"/>
108 </eClassifiers>
109 <eClassifiers xsi:type="ecore:EClass" name="ObjectPropertyValue" eSuperTypes="/1/ODM/PropertyValue">
110 <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false" lowerBound="1" eType="/1/ODM/Individual"/>
111 </eClassifiers>
112 <eClassifiers xsi:type="ecore:EClass" name="PropertyValue" abstract="true">
113 <eStructuralFeatures xsi:type="ecore:EReference" name="subject" ordered="false" lowerBound="1" eType="/1/ODM/Individual"/>
114 </eClassifiers>
115 <eClassifiers xsi:type="ecore:EClass" name="UnionClass" eSuperTypes="/1/ODM/Class">
116 <eStructuralFeatures xsi:type="ecore:EReference" name="unionOf" ordered="false" upperBound="-1" eType="/1/ODM/Class"/>
117 </eClassifiers>
118 <eClassifiers xsi:type="ecore:EClass" name="IntersectionClass" eSuperTypes="/1/ODM/Class">
119 <eStructuralFeatures xsi:type="ecore:EReference" name="intersectionOf" ordered="false" upperBound="-1" eType="/1/ODM/Class"/>
120 </eClassifiers>
121 <eClassifiers xsi:type="ecore:EClass" name="ComplementClass" eSuperTypes="/1/ODM/Class">
122 <eStructuralFeatures xsi:type="ecore:EReference" name="complementOf" ordered="false" lowerBound="1" eType="/1/ODM/Class"/>
123 </eClassifiers>
124 <eClassifiers xsi:type="ecore:EClass" name="EnumeratedClass" eSuperTypes="/1/ODM/Class">
125 <eStructuralFeatures xsi:type="ecore:EReference" name="oneOf" ordered="false" upperBound="-1" eType="/1/ODM/Individual"/>
126 </eClassifiers>
127 <eClassifiers xsi:type="ecore:EClass" name="Namespace">
128 <eStructuralFeatures xsi:type="ecore:EReference" name="members" ordered="false" upperBound="-1" eType="/1/ODM/NamedElement" containment="true"/>
129 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
130 <eStructuralFeatures xsi:type="ecore:EAttribute" name="uri" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
131 </eClassifiers>
132 <eClassifiers xsi:type="ecore:EClass" name="DatatypeProperty" eSuperTypes="/1/ODM/Property">
133 <eStructuralFeatures xsi:type="ecore:EReference" name="range" ordered="false" upperBound="-1" eType="/1/ODM/DataRange"/>
134 </eClassifiers>
135 <eClassifiers xsi:type="ecore:EClass" name="ObjectProperty" eSuperTypes="/1/ODM/Property">
136 <eStructuralFeatures xsi:type="ecore:EReference" name="range" ordered="false" upperBound="-1" eType="/1/ODM/Class"/>
137 <eStructuralFeatures xsi:type="ecore:EReference" name="inverseOf" ordered="false" upperBound="-1" eType="/1/ODM/ObjectProperty"/>
138 <eStructuralFeatures xsi:type="ecore:EAttribute" name="transitive" ordered="false" unique="false" lowerBound="1" eType="/0/Boolean"/>
139 <eStructuralFeatures xsi:type="ecore:EAttribute" name="symmetric" ordered="false" unique="false" lowerBound="1" eType="/0/Boolean"/>
140 <eStructuralFeatures xsi:type="ecore:EAttribute" name="inverseFunctional" ordered="false" unique="false" lowerBound="1" eType="/0/Boolean"/>
141 <eStructuralFeatures xsi:type="ecore:EAttribute" name="complex" ordered="false" unique="false" lowerBound="1" eType="/0/Boolean"/>
142 </eClassifiers>
143 <eClassifiers xsi:type="ecore:EClass" name="Individual" eSuperTypes="/1/Constant /1/ODM/Annotation /1/ODM/Class">
144 <eStructuralFeatures xsi:type="ecore:EReference" name="sameAs" ordered="false" upperBound="-1" eType="/1/ODM/Individual"/>
145 <eStructuralFeatures xsi:type="ecore:EReference" name="differentFrom" ordered="false" upperBound="-1" eType="/1/ODM/Individual"/>
146 <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1" eType="/1/ODM/Class"/>
147 </eClassifiers>
148 <eClassifiers xsi:type="ecore:EClass" name="Class" eSuperTypes="/1/PredicateSymbol /1/ODM/OntologyElement">
149 <eStructuralFeatures xsi:type="ecore:EReference" name="disjointWith" ordered="false" upperBound="-1" eType="/1/ODM/Class"/>
150 <eStructuralFeatures xsi:type="ecore:EReference" name="subClassOf" ordered="false" upperBound="-1" eType="/1/ODM/Class"/>
151 <eStructuralFeatures xsi:type="ecore:EReference" name="equivalentClass" ordered="false" upperBound="-1" eType="/1/ODM/Class"/>
152 </eClassifiers>
153 <eClassifiers xsi:type="ecore:EClass" name="Property" abstract="true" eSuperTypes="/1/PredicateSymbol /1/ODM/OntologyElement">
154 <eStructuralFeatures xsi:type="ecore:EReference" name="domain" ordered="false" upperBound="-1" eType="/1/ODM/Class"/>
155 <eStructuralFeatures xsi:type="ecore:EReference" name="equivalentProperty" ordered="false" upperBound="-1" eType="/1/ODM/Property"/>
156 <eStructuralFeatures xsi:type="ecore:EReference" name="subPropertyOf" ordered="false" upperBound="-1" eType="/1/ODM/Property"/>
157 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deprecated" ordered="false" unique="false" lowerBound="1" eType="/0/Boolean"/>
158 <eStructuralFeatures xsi:type="ecore:EAttribute" name="functional" ordered="false" unique="false" lowerBound="1" eType="/0/Boolean"/>
159 </eClassifiers>
160 <eClassifiers xsi:type="ecore:EClass" name="AnnotationProperty" eSuperTypes="/1/ODM/OntologyElement"/>
161 <eClassifiers xsi:type="ecore:EClass" name="OntologyProperty" abstract="true" eSuperTypes="/1/ODM/OntologyElement"/>
162 <eClassifiers xsi:type="ecore:EClass" name="OntologyElement" eSuperTypes="/1/ODM/NamedElement /1/ODM/AnnotatableElement"/>
163 <eClassifiers xsi:type="ecore:EClass" name="Ontology" eSuperTypes="/1/ODM/AnnotatableElement">
164 <eStructuralFeatures xsi:type="ecore:EReference" name="imports" ordered="false" upperBound="-1" eType="/1/ODM/Ontology"/>
165 <eStructuralFeatures xsi:type="ecore:EReference" name="priorVersion" ordered="false" eType="/1/ODM/Ontology"/>
166 <eStructuralFeatures xsi:type="ecore:EReference" name="elements" ordered="false" upperBound="-1" eType="/1/ODM/NamedElement" containment="true"/>
167 <eStructuralFeatures xsi:type="ecore:EReference" name="incompatibleWith" ordered="false" upperBound="-1" eType="/1/ODM/Ontology"/>
168 <eStructuralFeatures xsi:type="ecore:EReference" name="reference" ordered="false" upperBound="-1" eType="/1/ODM/OntologyPropertyValue"/>
169 </eClassifiers>
170 <eClassifiers xsi:type="ecore:EClass" name="AnnotatableElement" abstract="true"/>
171 <eClassifiers xsi:type="ecore:EClass" name="NamedElement">
172 <eStructuralFeatures xsi:type="ecore:EAttribute" name="uri" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
173 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
174 <eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
175 </eClassifiers>
176 </eSubpackages>
177 </ecore:EPackage>
178</xmi:XMI>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/.DS_Store b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/.DS_Store
new file mode 100644
index 00000000..85929cb0
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/.DS_Store
Binary files differ
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/mpc_rep/2samplemodel41.githubmodel b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/mpc_rep/2samplemodel41.githubmodel
new file mode 100644
index 00000000..f4a3233c
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/mpc_rep/2samplemodel41.githubmodel
@@ -0,0 +1,105 @@
1<?xml version="1.0" encoding="ASCII"?>
2<github:Project xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:github="sure.ghtorrent.github" creatd_at="2013-05-14T03:07:04.000-0400" updated_at="2016-11-02T06:05:30.000-0400" url="https://github.com/vert-x/mod-rxvertx">
3 <issue created_at="2015-08-14T02:12:18.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/42"/>
4 <issue created_at="2015-06-22T09:29:32.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/41"/>
5 <issue created_at="2015-06-16T15:27:39.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/40"/>
6 <issue created_at="2015-06-16T15:19:14.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/39"/>
7 <issue created_at="2015-04-08T09:17:37.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/36"/>
8 <issue created_at="2015-03-02T15:41:55.000-0500" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/34"/>
9 <issue created_at="2014-11-21T17:36:28.000-0500" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/29"/>
10 <issue created_at="2014-11-19T09:48:31.000-0500" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/26"/>
11 <issue created_at="2014-06-06T13:52:26.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/18"/>
12 <issue created_at="2013-12-07T04:02:36.000-0500" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/10"/>
13 <issue created_at="2016-01-24T04:58:48.000-0500" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/43">
14 <pullrequest url="https://api.github.com/repos/vert-x/mod-rxvertx/pulls/43"/>
15 </issue>
16 <issue created_at="2015-06-16T15:27:39.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/40">
17 <pullrequest url="https://api.github.com/repos/vert-x/mod-rxvertx/pulls/40"/>
18 </issue>
19 <issue created_at="2015-03-06T11:23:22.000-0500" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/35">
20 <pullrequest commit="//@commits.42" url="https://api.github.com/repos/vert-x/mod-rxvertx/pulls/35"/>
21 </issue>
22 <issue created_at="2014-11-21T17:40:46.000-0500" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/30">
23 <pullrequest url="https://api.github.com/repos/vert-x/mod-rxvertx/pulls/30"/>
24 </issue>
25 <issue created_at="2014-08-28T07:38:52.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/21">
26 <pullrequest url="https://api.github.com/repos/vert-x/mod-rxvertx/pulls/21"/>
27 </issue>
28 <issue created_at="2014-06-19T15:01:09.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/19">
29 <pullrequest commit="//@commits.46" url="https://api.github.com/repos/vert-x/mod-rxvertx/pulls/19"/>
30 </issue>
31 <issue created_at="2014-05-11T00:43:58.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/17">
32 <pullrequest commit="//@commits.47" url="https://api.github.com/repos/vert-x/mod-rxvertx/pulls/17"/>
33 </issue>
34 <issue created_at="2014-05-09T05:21:01.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/15">
35 <pullrequest commit="//@commits.51" url="https://api.github.com/repos/vert-x/mod-rxvertx/pulls/15"/>
36 </issue>
37 <issue created_at="2013-07-07T20:58:26.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/3">
38 <pullrequest commit="//@commits.20" url="https://api.github.com/repos/vert-x/mod-rxvertx/pulls/3"/>
39 </issue>
40 <issue created_at="2013-06-26T11:44:08.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/2">
41 <pullrequest url="https://api.github.com/repos/vert-x/mod-rxvertx/pulls/2"/>
42 </issue>
43 <issue created_at="2013-06-16T00:13:08.000-0400" url="https://api.github.com/repos/vert-x/mod-rxvertx/issues/1">
44 <pullrequest commit="//@commits.24" url="https://api.github.com/repos/vert-x/mod-rxvertx/pulls/1"/>
45 </issue>
46 <projectMembers url="https://api.github.com/users/petermd" name="petermd"/>
47 <projectMembers url="https://api.github.com/users/purplefox" name="purplefox"/>
48 <projectMembers url="https://api.github.com/users/sharathp" name="sharathp"/>
49 <projectMembers url="https://api.github.com/users/squaredfinancialit" name="squaredfinancialit"/>
50 <projectMembers url="https://api.github.com/users/ddossot" name="ddossot"/>
51 <projectMembers url="https://api.github.com/users/tavisrudd" name="tavisrudd"/>
52 <projectMembers url="https://api.github.com/users/vihangd" name="vihangd"/>
53 <commits committer="//@projectMembers.0" parents="//@commits.1" created_at="2013-12-02T05:47:09.000-0500" sha="ed99912edfd9f6f9e908a5325d2ab07d6e65e869" parents_sha="9a90507caa12d77bb7fc97514c9016e8c9d41676"/>
54 <commits committer="//@projectMembers.0" parents="//@commits.2 //@commits.5" created_at="2013-12-01T20:08:01.000-0500" sha="9a90507caa12d77bb7fc97514c9016e8c9d41676" parents_sha="dddb6bbe532afaf0983b9b2affea87d700c788fc ad41e6a602de2e145d1ba2b0da9bd046fb3e2467"/>
55 <commits committer="//@projectMembers.0" parents="//@commits.3" created_at="2013-12-01T20:06:25.000-0500" sha="dddb6bbe532afaf0983b9b2affea87d700c788fc" parents_sha="e704894753ef8f06f144071c493ae5ee0f077f33"/>
56 <commits committer="//@projectMembers.0" parents="//@commits.4" created_at="2013-12-01T20:05:38.000-0500" sha="e704894753ef8f06f144071c493ae5ee0f077f33" parents_sha="f6b983b4b88731f38fe1080a4235d2e6091107b0"/>
57 <commits committer="//@projectMembers.0" parents="//@commits.6" created_at="2013-12-01T20:05:12.000-0500" sha="f6b983b4b88731f38fe1080a4235d2e6091107b0" parents_sha="9298780fca8e25a33f49867f3025890fa7c7d7f2"/>
58 <commits committer="//@projectMembers.1" parents="//@commits.6" created_at="2013-12-01T05:58:35.000-0500" sha="ad41e6a602de2e145d1ba2b0da9bd046fb3e2467" parents_sha="9298780fca8e25a33f49867f3025890fa7c7d7f2"/>
59 <commits committer="//@projectMembers.0" parents="//@commits.7" created_at="2013-11-27T05:39:40.000-0500" sha="9298780fca8e25a33f49867f3025890fa7c7d7f2" parents_sha="6cd3659869c4b786e55640d2d137b12d18fb49a7"/>
60 <commits committer="//@projectMembers.0" parents="//@commits.8" created_at="2013-11-27T05:28:59.000-0500" sha="6cd3659869c4b786e55640d2d137b12d18fb49a7" parents_sha="937af378cf31503b77d0ce6ab011e5d022d57265"/>
61 <commits committer="//@projectMembers.0" parents="//@commits.9" created_at="2013-11-27T05:26:59.000-0500" sha="937af378cf31503b77d0ce6ab011e5d022d57265" parents_sha="f777d37b7fa1091c278848166dd7635728ac2a2f"/>
62 <commits committer="//@projectMembers.0" parents="//@commits.10" created_at="2013-11-19T08:26:58.000-0500" sha="f777d37b7fa1091c278848166dd7635728ac2a2f" parents_sha="bd3e62a14633df39d7124577126f5087b989db73"/>
63 <commits committer="//@projectMembers.0" parents="//@commits.11" created_at="2013-11-19T07:59:40.000-0500" sha="bd3e62a14633df39d7124577126f5087b989db73" parents_sha="b61d0a341119990de69b9fe4a8bfd468c6bddfef"/>
64 <commits committer="//@projectMembers.0" parents="//@commits.12" created_at="2013-11-19T07:55:41.000-0500" sha="b61d0a341119990de69b9fe4a8bfd468c6bddfef" parents_sha="3c98cc0a6e45fd558b1f808c76613c3eb2b0b936"/>
65 <commits committer="//@projectMembers.0" parents="//@commits.13" created_at="2013-11-19T07:54:46.000-0500" sha="3c98cc0a6e45fd558b1f808c76613c3eb2b0b936" parents_sha="049801ae6cedb220c2dfdf0fdaf4b6ba9339e1ad"/>
66 <commits committer="//@projectMembers.0" parents="//@commits.14" created_at="2013-11-14T19:17:38.000-0500" sha="049801ae6cedb220c2dfdf0fdaf4b6ba9339e1ad" parents_sha="80b5503fa7d92d6fc9d75ec9e0637e144b4b79e2"/>
67 <commits committer="//@projectMembers.0" parents="//@commits.15" created_at="2013-11-14T18:18:38.000-0500" sha="80b5503fa7d92d6fc9d75ec9e0637e144b4b79e2" parents_sha="063311036a271c4f51aab1e16cb01a273af40d59"/>
68 <commits committer="//@projectMembers.0" parents="//@commits.16" created_at="2013-11-14T18:18:12.000-0500" sha="063311036a271c4f51aab1e16cb01a273af40d59" parents_sha="d6a755666b19fb84f3ed3322abf4799e4e103401"/>
69 <commits committer="//@projectMembers.0" parents="//@commits.17" created_at="2013-11-07T22:29:23.000-0500" sha="d6a755666b19fb84f3ed3322abf4799e4e103401" parents_sha="1c07c332a76eb90b653c5a09e558fd0a1ded853a"/>
70 <commits committer="//@projectMembers.0" parents="//@commits.18" created_at="2013-08-03T19:29:42.000-0400" sha="1c07c332a76eb90b653c5a09e558fd0a1ded853a" parents_sha="2335b065397316f33f731f32904561f0565df822"/>
71 <commits committer="//@projectMembers.0" parents="//@commits.19 //@commits.20" created_at="2013-07-18T10:43:04.000-0400" sha="2335b065397316f33f731f32904561f0565df822" parents_sha="dcc26065160056d933cdf76281cdad6b3b287b0a 2bf992bcc00fec604758228eb73303a33184b188"/>
72 <commits committer="//@projectMembers.1" parents="//@commits.21" created_at="2013-07-09T08:56:55.000-0400" sha="dcc26065160056d933cdf76281cdad6b3b287b0a" parents_sha="846c3196db3a62e342ec84ac67edb172d37a8527"/>
73 <commits committer="//@projectMembers.2" parents="//@commits.24" pullrequest="//@issue.18/@pullrequest" created_at="2013-07-07T20:53:18.000-0400" sha="2bf992bcc00fec604758228eb73303a33184b188" parents_sha="5b8c63daa5c13c42dc8d46c0df099289abc8f3a3"/>
74 <commits committer="//@projectMembers.1" parents="//@commits.22" created_at="2013-06-28T07:59:05.000-0400" sha="846c3196db3a62e342ec84ac67edb172d37a8527" parents_sha="dd7f5a22e9e653d44906f17a8d2c8fe48213cc12"/>
75 <commits committer="//@projectMembers.1" parents="//@commits.23" created_at="2013-06-28T07:42:26.000-0400" sha="dd7f5a22e9e653d44906f17a8d2c8fe48213cc12" parents_sha="19558d07c7961aaf357828601d0efef0cf4e308e"/>
76 <commits committer="//@projectMembers.1" parents="//@commits.26" created_at="2013-06-28T07:34:41.000-0400" sha="19558d07c7961aaf357828601d0efef0cf4e308e" parents_sha="c7b0726d521b12a314d59d8a3fa6fa48415793d1"/>
77 <commits committer="//@projectMembers.2" parents="//@commits.25" pullrequest="//@issue.20/@pullrequest" created_at="2013-06-26T11:32:27.000-0400" sha="5b8c63daa5c13c42dc8d46c0df099289abc8f3a3" parents_sha="8668d48ce79bce03e04acc58dbff9bf578247f52"/>
78 <commits committer="//@projectMembers.2" parents="//@commits.26" created_at="2013-06-16T00:12:20.000-0400" sha="8668d48ce79bce03e04acc58dbff9bf578247f52" parents_sha="c7b0726d521b12a314d59d8a3fa6fa48415793d1"/>
79 <commits committer="//@projectMembers.1" parents="//@commits.27" created_at="2013-06-15T04:30:10.000-0400" sha="c7b0726d521b12a314d59d8a3fa6fa48415793d1" parents_sha="f9ddb55396f9ff2b14a8f8e66f15e31dd45ba07a"/>
80 <commits committer="//@projectMembers.1" parents="//@commits.28" created_at="2013-06-14T11:54:17.000-0400" sha="f9ddb55396f9ff2b14a8f8e66f15e31dd45ba07a" parents_sha="30413422c03344dc3683c0cfdefda2ede0891dbc"/>
81 <commits committer="//@projectMembers.0" parents="//@commits.29" created_at="2013-05-21T06:27:09.000-0400" sha="30413422c03344dc3683c0cfdefda2ede0891dbc" parents_sha="19f65f97a3cbdb466548e8c39310ed565d51991d"/>
82 <commits committer="//@projectMembers.0" parents="//@commits.30" created_at="2013-05-21T06:21:13.000-0400" sha="19f65f97a3cbdb466548e8c39310ed565d51991d" parents_sha="bf725977ceb0530cb439822cc3ec507595d0673b"/>
83 <commits committer="//@projectMembers.0" parents="//@commits.31" created_at="2013-05-21T06:19:38.000-0400" sha="bf725977ceb0530cb439822cc3ec507595d0673b" parents_sha="7da36f0b8423d24ad0c0fd82bb9a296bcd2731d4"/>
84 <commits committer="//@projectMembers.1" parents="//@commits.32" created_at="2013-05-21T05:18:23.000-0400" sha="7da36f0b8423d24ad0c0fd82bb9a296bcd2731d4" parents_sha="9d9ec8a1a0de65698deed0b7ce1e36e74960e410"/>
85 <commits committer="//@projectMembers.1" parents="//@commits.33" created_at="2013-05-21T05:16:17.000-0400" sha="9d9ec8a1a0de65698deed0b7ce1e36e74960e410" parents_sha="167cd263f39437ac197d0d75336b0e24cb590efa"/>
86 <commits committer="//@projectMembers.1" parents="//@commits.34" created_at="2013-05-20T09:24:04.000-0400" sha="167cd263f39437ac197d0d75336b0e24cb590efa" parents_sha="0ccd822e51126740fad7c7f7191127b99de663b6"/>
87 <commits committer="//@projectMembers.1" parents="//@commits.35" created_at="2013-05-20T06:21:45.000-0400" sha="0ccd822e51126740fad7c7f7191127b99de663b6" parents_sha="19036c7a96b1f71bc697a2f1a6def218267a0242"/>
88 <commits committer="//@projectMembers.1" parents="//@commits.36" created_at="2013-05-17T07:32:23.000-0400" sha="19036c7a96b1f71bc697a2f1a6def218267a0242" parents_sha="1f22c21855b7b161521f242ff1115ae8d8ab9313"/>
89 <commits committer="//@projectMembers.1" parents="//@commits.37" created_at="2013-05-16T16:30:51.000-0400" sha="1f22c21855b7b161521f242ff1115ae8d8ab9313" parents_sha="dd0f1a68e52e54b3ee10f3f429278369dd0975e6"/>
90 <commits committer="//@projectMembers.1" parents="//@commits.38" created_at="2013-05-15T05:04:15.000-0400" sha="dd0f1a68e52e54b3ee10f3f429278369dd0975e6" parents_sha="c9f01eaff5abcdce46788e9ed105829b2a063b40"/>
91 <commits committer="//@projectMembers.1" parents="//@commits.39" created_at="2013-05-14T13:07:02.000-0400" sha="c9f01eaff5abcdce46788e9ed105829b2a063b40" parents_sha="52f479adb604f6e5a373260a3acbe374afc52f25"/>
92 <commits committer="//@projectMembers.1" parents="//@commits.40" created_at="2013-05-14T08:48:12.000-0400" sha="52f479adb604f6e5a373260a3acbe374afc52f25" parents_sha="5d9e6dc68ff8f7de070bdfa3f897b1554caf2166"/>
93 <commits committer="//@projectMembers.1" created_at="2013-05-14T08:26:22.000-0400" sha="5d9e6dc68ff8f7de070bdfa3f897b1554caf2166" parents_sha="46109bd2797b2e80758056728ab371ec4339b5b5 0873fda3c6bd19363319a1f5d248ad60d24316e6"/>
94 <commits committer="//@projectMembers.3" created_at="2015-03-06T11:19:17.000-0500" sha="d22ad4be7c6bdab5d442155fa5fe4d79a0a60856" parents_sha="0de3f78d04a04612ab0f128eff9b6657ccf6d1b1"/>
95 <commits committer="//@projectMembers.3" pullrequest="//@issue.12/@pullrequest" created_at="2015-03-18T16:21:13.000-0400" sha="33a9c426bd04eba72cc3be3921c583beff2261b9" parents_sha="d22ad4be7c6bdab5d442155fa5fe4d79a0a60856"/>
96 <commits committer="//@projectMembers.4" created_at="2014-06-19T14:54:24.000-0400" sha="d34d78848522df8a43509ec206f18e8300cfa9ee" parents_sha="80562e9d30ecce390bd58a2077841a708bd2095f"/>
97 <commits committer="//@projectMembers.4" created_at="2014-06-19T14:56:28.000-0400" sha="a6ebd5a7acfcea32f09ff6dee5b020cefa11ad22" parents_sha="d34d78848522df8a43509ec206f18e8300cfa9ee"/>
98 <commits committer="//@projectMembers.4" created_at="2014-06-19T14:56:31.000-0400" sha="b3eed2ef580ee66c47f41e10b4da0257115ae684" parents_sha="a6ebd5a7acfcea32f09ff6dee5b020cefa11ad22"/>
99 <commits committer="//@projectMembers.4" pullrequest="//@issue.15/@pullrequest" created_at="2014-06-19T14:56:31.000-0400" sha="781c5e3d674b2e987b7affb3d6f3c24a3c54675a" parents_sha="b3eed2ef580ee66c47f41e10b4da0257115ae684"/>
100 <commits committer="//@projectMembers.5" pullrequest="//@issue.16/@pullrequest" created_at="2014-05-11T00:43:45.000-0400" sha="80562e9d30ecce390bd58a2077841a708bd2095f" parents_sha="8311666daccb78568071a8d835c8d5798f0808de"/>
101 <commits committer="//@projectMembers.0" created_at="2014-03-15T20:56:49.000-0400" sha="01a536a72c1b062da11b9ebf0610b5a628008163" parents_sha="ed99912edfd9f6f9e908a5325d2ab07d6e65e869"/>
102 <commits committer="//@projectMembers.0" created_at="2014-03-15T21:00:03.000-0400" sha="210c0ec94da299867167c1b8eaf58bb8f2342140" parents_sha="01a536a72c1b062da11b9ebf0610b5a628008163"/>
103 <commits committer="//@projectMembers.0" created_at="2014-03-18T11:52:38.000-0400" sha="8b511989e21d5fdd6be893c7320719d8a99c4834" parents_sha="210c0ec94da299867167c1b8eaf58bb8f2342140"/>
104 <commits committer="//@projectMembers.6" pullrequest="//@issue.17/@pullrequest" created_at="2014-05-09T05:07:45.000-0400" sha="e4131b497ffabbb03d71ac577d75add5c00caa41" parents_sha="8b511989e21d5fdd6be893c7320719d8a99c4834"/>
105</github:Project>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/.DS_Store b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/.DS_Store
new file mode 100644
index 00000000..5008ddfc
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/.DS_Store
Binary files differ
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/2samplemodel65.githubmodel b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/2samplemodel65.githubmodel
new file mode 100644
index 00000000..c78f0175
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/2samplemodel65.githubmodel
@@ -0,0 +1,38 @@
1<?xml version="1.0" encoding="ASCII"?>
2<github:Project xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:github="sure.ghtorrent.github" creatd_at="2012-01-15T22:30:37.000-0500" updated_at="2013-05-10T16:37:30.000-0400" url="https://github.com/i8ramin/fb-menu">
3 <issue created_at="2013-08-05T20:37:26.000-0400" url="https://api.github.com/repos/i8ramin/fb-menu/issues/9"/>
4 <issue created_at="2012-10-24T03:46:19.000-0400" url="https://api.github.com/repos/i8ramin/fb-menu/issues/5">
5 <pullrequest url="https://api.github.com/repos/i8ramin/fb-menu/pulls/5"/>
6 <issueevent user="//@projectMembers.0" action="CLOSED" created_at="2012-10-24T10:12:29.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
7 </issue>
8 <issue created_at="2012-10-23T14:15:11.000-0400" url="https://api.github.com/repos/i8ramin/fb-menu/issues/4">
9 <pullrequest url="https://api.github.com/repos/i8ramin/fb-menu/pulls/4"/>
10 <issueevent user="//@projectMembers.0" action="CLOSED" created_at="2012-10-23T15:02:06.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
11 <issueevent user="//@projectMembers.0" action="MERGED" created_at="2012-10-23T15:02:06.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
12 <issueevent user="//@projectMembers.0" action="REFERENCED" created_at="2012-10-23T15:02:06.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
13 </issue>
14 <issue created_at="2012-10-19T20:17:40.000-0400" url="https://api.github.com/repos/i8ramin/fb-menu/issues/3">
15 <pullrequest url="https://api.github.com/repos/i8ramin/fb-menu/pulls/3"/>
16 <issueevent user="//@projectMembers.0" action="CLOSED" created_at="2012-10-23T13:55:51.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
17 <issueevent user="//@projectMembers.0" action="MERGED" created_at="2012-10-23T13:55:51.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
18 <issueevent user="//@projectMembers.0" action="REFERENCED" created_at="2012-10-23T13:55:51.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
19 </issue>
20 <issue created_at="2012-10-08T18:07:12.000-0400" url="https://api.github.com/repos/i8ramin/fb-menu/issues/2">
21 <pullrequest commit="//@commits.9" url="https://api.github.com/repos/i8ramin/fb-menu/pulls/2"/>
22 <issueevent user="//@projectMembers.0" action="CLOSED" created_at="2012-10-09T16:31:04.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
23 <issueevent user="//@projectMembers.0" action="MERGED" created_at="2012-10-09T16:31:04.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
24 <issueevent user="//@projectMembers.0" action="REFERENCED" created_at="2012-10-09T16:31:04.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
25 </issue>
26 <projectMembers url="https://api.github.com/users/i8ramin" name="i8ramin"/>
27 <projectMembers url="https://api.github.com/users/jpbellona" name="jpbellona"/>
28 <commits committer="//@projectMembers.0" parents="//@commits.1" created_at="2012-04-22T13:06:09.000-0400" sha="edac411699e093ae17bb8e252801d169cf63386b" parents_sha="0c5479209926ba6e76531191c5cb0c49f124c573"/>
29 <commits committer="//@projectMembers.0" parents="//@commits.2" created_at="2012-01-16T00:05:29.000-0500" sha="0c5479209926ba6e76531191c5cb0c49f124c573" parents_sha="501c513efa4c4b58229004c9804320af218bc9c6"/>
30 <commits committer="//@projectMembers.0" parents="//@commits.3" created_at="2012-01-15T23:47:46.000-0500" sha="501c513efa4c4b58229004c9804320af218bc9c6" parents_sha="bc83b9b4e0bcf2e1d4fcc7f9129bba2976c05d66"/>
31 <commits committer="//@projectMembers.0" parents="//@commits.4" created_at="2012-01-15T23:26:24.000-0500" sha="bc83b9b4e0bcf2e1d4fcc7f9129bba2976c05d66" parents_sha="294bc004162f404b49ea3e336b1e17c16354c85f"/>
32 <commits committer="//@projectMembers.0" parents="//@commits.5" created_at="2012-01-15T23:17:32.000-0500" sha="294bc004162f404b49ea3e336b1e17c16354c85f" parents_sha="8a3b5f6c8e052638e97e42fd2a1e49141fe8b862"/>
33 <commits committer="//@projectMembers.0" parents="//@commits.6" created_at="2012-01-15T23:08:00.000-0500" sha="8a3b5f6c8e052638e97e42fd2a1e49141fe8b862" parents_sha="a84b34c420016181971a2512c38afcc5215c2b5a"/>
34 <commits committer="//@projectMembers.0" parents="//@commits.7" created_at="2012-01-15T23:00:14.000-0500" sha="a84b34c420016181971a2512c38afcc5215c2b5a" parents_sha="32a6f8d140ac6db5ee37a89082804ef57cbb12bb"/>
35 <commits committer="//@projectMembers.0" parents="//@commits.8" created_at="2012-01-15T22:48:36.000-0500" sha="32a6f8d140ac6db5ee37a89082804ef57cbb12bb" parents_sha="74aefd366c55ae8de122e20794a00b8c49b584cb"/>
36 <commits committer="//@projectMembers.0" created_at="2012-01-15T22:31:19.000-0500" sha="74aefd366c55ae8de122e20794a00b8c49b584cb" parents_sha=""/>
37 <commits committer="//@projectMembers.1" pullrequest="//@issue.4/@pullrequest" created_at="2012-10-08T18:05:07.000-0400" sha="dfd5c4d9818c405cc262870515c6e5d8f71ba4a9" parents_sha="edac411699e093ae17bb8e252801d169cf63386b"/>
38</github:Project>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/.DS_Store b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/.DS_Store
new file mode 100644
index 00000000..5008ddfc
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/.DS_Store
Binary files differ
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/samplemodel62.githubmodel b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/samplemodel62.githubmodel
new file mode 100644
index 00000000..c78f0175
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/samplemodel62.githubmodel
@@ -0,0 +1,38 @@
1<?xml version="1.0" encoding="ASCII"?>
2<github:Project xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:github="sure.ghtorrent.github" creatd_at="2012-01-15T22:30:37.000-0500" updated_at="2013-05-10T16:37:30.000-0400" url="https://github.com/i8ramin/fb-menu">
3 <issue created_at="2013-08-05T20:37:26.000-0400" url="https://api.github.com/repos/i8ramin/fb-menu/issues/9"/>
4 <issue created_at="2012-10-24T03:46:19.000-0400" url="https://api.github.com/repos/i8ramin/fb-menu/issues/5">
5 <pullrequest url="https://api.github.com/repos/i8ramin/fb-menu/pulls/5"/>
6 <issueevent user="//@projectMembers.0" action="CLOSED" created_at="2012-10-24T10:12:29.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
7 </issue>
8 <issue created_at="2012-10-23T14:15:11.000-0400" url="https://api.github.com/repos/i8ramin/fb-menu/issues/4">
9 <pullrequest url="https://api.github.com/repos/i8ramin/fb-menu/pulls/4"/>
10 <issueevent user="//@projectMembers.0" action="CLOSED" created_at="2012-10-23T15:02:06.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
11 <issueevent user="//@projectMembers.0" action="MERGED" created_at="2012-10-23T15:02:06.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
12 <issueevent user="//@projectMembers.0" action="REFERENCED" created_at="2012-10-23T15:02:06.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
13 </issue>
14 <issue created_at="2012-10-19T20:17:40.000-0400" url="https://api.github.com/repos/i8ramin/fb-menu/issues/3">
15 <pullrequest url="https://api.github.com/repos/i8ramin/fb-menu/pulls/3"/>
16 <issueevent user="//@projectMembers.0" action="CLOSED" created_at="2012-10-23T13:55:51.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
17 <issueevent user="//@projectMembers.0" action="MERGED" created_at="2012-10-23T13:55:51.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
18 <issueevent user="//@projectMembers.0" action="REFERENCED" created_at="2012-10-23T13:55:51.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
19 </issue>
20 <issue created_at="2012-10-08T18:07:12.000-0400" url="https://api.github.com/repos/i8ramin/fb-menu/issues/2">
21 <pullrequest commit="//@commits.9" url="https://api.github.com/repos/i8ramin/fb-menu/pulls/2"/>
22 <issueevent user="//@projectMembers.0" action="CLOSED" created_at="2012-10-09T16:31:04.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
23 <issueevent user="//@projectMembers.0" action="MERGED" created_at="2012-10-09T16:31:04.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
24 <issueevent user="//@projectMembers.0" action="REFERENCED" created_at="2012-10-09T16:31:04.000-0400" actor_url="https://api.github.com/users/i8ramin"/>
25 </issue>
26 <projectMembers url="https://api.github.com/users/i8ramin" name="i8ramin"/>
27 <projectMembers url="https://api.github.com/users/jpbellona" name="jpbellona"/>
28 <commits committer="//@projectMembers.0" parents="//@commits.1" created_at="2012-04-22T13:06:09.000-0400" sha="edac411699e093ae17bb8e252801d169cf63386b" parents_sha="0c5479209926ba6e76531191c5cb0c49f124c573"/>
29 <commits committer="//@projectMembers.0" parents="//@commits.2" created_at="2012-01-16T00:05:29.000-0500" sha="0c5479209926ba6e76531191c5cb0c49f124c573" parents_sha="501c513efa4c4b58229004c9804320af218bc9c6"/>
30 <commits committer="//@projectMembers.0" parents="//@commits.3" created_at="2012-01-15T23:47:46.000-0500" sha="501c513efa4c4b58229004c9804320af218bc9c6" parents_sha="bc83b9b4e0bcf2e1d4fcc7f9129bba2976c05d66"/>
31 <commits committer="//@projectMembers.0" parents="//@commits.4" created_at="2012-01-15T23:26:24.000-0500" sha="bc83b9b4e0bcf2e1d4fcc7f9129bba2976c05d66" parents_sha="294bc004162f404b49ea3e336b1e17c16354c85f"/>
32 <commits committer="//@projectMembers.0" parents="//@commits.5" created_at="2012-01-15T23:17:32.000-0500" sha="294bc004162f404b49ea3e336b1e17c16354c85f" parents_sha="8a3b5f6c8e052638e97e42fd2a1e49141fe8b862"/>
33 <commits committer="//@projectMembers.0" parents="//@commits.6" created_at="2012-01-15T23:08:00.000-0500" sha="8a3b5f6c8e052638e97e42fd2a1e49141fe8b862" parents_sha="a84b34c420016181971a2512c38afcc5215c2b5a"/>
34 <commits committer="//@projectMembers.0" parents="//@commits.7" created_at="2012-01-15T23:00:14.000-0500" sha="a84b34c420016181971a2512c38afcc5215c2b5a" parents_sha="32a6f8d140ac6db5ee37a89082804ef57cbb12bb"/>
35 <commits committer="//@projectMembers.0" parents="//@commits.8" created_at="2012-01-15T22:48:36.000-0500" sha="32a6f8d140ac6db5ee37a89082804ef57cbb12bb" parents_sha="74aefd366c55ae8de122e20794a00b8c49b584cb"/>
36 <commits committer="//@projectMembers.0" created_at="2012-01-15T22:31:19.000-0500" sha="74aefd366c55ae8de122e20794a00b8c49b584cb" parents_sha=""/>
37 <commits committer="//@projectMembers.1" pullrequest="//@issue.4/@pullrequest" created_at="2012-10-08T18:05:07.000-0400" sha="dfd5c4d9818c405cc262870515c6e5d8f71ba4a9" parents_sha="edac411699e093ae17bb8e252801d169cf63386b"/>
38</github:Project>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/mpc_rep.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/mpc_rep.csv
new file mode 100644
index 00000000..fc39ac54
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/mpc_rep.csv
@@ -0,0 +1,9 @@
1Meta Mode,yakindumm
2Number of Edge types,6
3Number Of Nodes,67
4OutDegreeValue,1,2,3,4,6,8,9
5OutDegreeCount,4,45,9,1,1,2,5
6NAValue,1,2,3,4,5,6
7NACount,1,3,4,42,15,2
8MPCValue,0.00000,0.21600,0.45000,0.76800,0.80000,0.89751,0.90000,0.91349,0.92410,0.93061,0.93728,0.96000,0.97500,1.00000
9MPCCount,1,2,1,1,3,1,42,2,2,7,1,2,1,1
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/mpc_rep/R_2016324.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/mpc_rep/R_2016324.xmi
new file mode 100644
index 00000000..493a1731
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/mpc_rep/R_2016324.xmi
@@ -0,0 +1,128 @@
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.2/@outgoingTransitions.0 //@regions.0/@vertices.1/@outgoingTransitions.0">
5 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.0"/>
6 <regions>
7 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.2">
8 <regions>
9 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
10 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.1"/>
11 </vertices>
12 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.0/@outgoingTransitions.0">
13 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.3"/>
14 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.2"/>
15 </vertices>
16 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.1">
17 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.3"/>
18 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
19 </vertices>
20 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.2/@outgoingTransitions.0">
21 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.2"/>
22 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
23 </vertices>
24 </regions>
25 </vertices>
26 <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.11/@outgoingTransitions.1 //@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.2/@outgoingTransitions.2">
27 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.12"/>
28 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.11"/>
29 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
30 </vertices>
31 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.4/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.7/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.13/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.7/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.13/@outgoingTransitions.1">
32 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.13"/>
33 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.7"/>
34 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
35 </vertices>
36 <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.10/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.6/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.5/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.6/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.2/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.1">
37 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
38 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.10"/>
39 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.6"/>
40 </vertices>
41 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.8/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.9/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.8/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.9/@outgoingTransitions.1">
42 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.8"/>
43 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
44 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.9"/>
45 </vertices>
46 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
47 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
48 </vertices>
49 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.2">
50 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
51 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
52 </vertices>
53 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.2/@outgoingTransitions.1">
54 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
55 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
56 </vertices>
57 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.4/@outgoingTransitions.0">
58 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
59 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
60 </vertices>
61 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.4/@outgoingTransitions.2">
62 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
63 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
64 </vertices>
65 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.1">
66 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
67 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
68 </vertices>
69 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.1">
70 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
71 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
72 </vertices>
73 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.0">
74 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
75 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
76 </vertices>
77 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.2/@outgoingTransitions.0">
78 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
79 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.2"/>
80 </vertices>
81 </regions>
82 </vertices>
83 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
84 <outgoingTransitions target="//@regions.0/@vertices.0"/>
85 </vertices>
86 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State">
87 <outgoingTransitions target="//@regions.0/@vertices.0"/>
88 <regions>
89 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry" incomingTransitions="//@regions.0/@vertices.0/@outgoingTransitions.0">
90 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.1"/>
91 </vertices>
92 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.0/@outgoingTransitions.0">
93 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
94 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
95 </vertices>
96 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.9/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.9/@outgoingTransitions.1">
97 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.8"/>
98 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.10"/>
99 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.4"/>
100 </vertices>
101 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.8/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.1/@outgoingTransitions.1 //@regions.0/@vertices.2/@regions.0/@vertices.7/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.8/@outgoingTransitions.1">
102 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.7"/>
103 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.9"/>
104 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.10"/>
105 </vertices>
106 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.2/@outgoingTransitions.2">
107 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
108 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.5"/>
109 </vertices>
110 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.4/@outgoingTransitions.1"/>
111 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.7/@outgoingTransitions.1"/>
112 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.3/@outgoingTransitions.0">
113 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
114 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.6"/>
115 </vertices>
116 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.2/@outgoingTransitions.0">
117 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
118 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
119 </vertices>
120 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.3/@outgoingTransitions.1">
121 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
122 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
123 </vertices>
124 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.3/@outgoingTransitions.2 //@regions.0/@vertices.2/@regions.0/@vertices.2/@outgoingTransitions.1"/>
125 </regions>
126 </vertices>
127 </regions>
128</hu.bme.mit.inf.yakindumm:Statechart>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/na_rep.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/na_rep.csv
new file mode 100644
index 00000000..43d411e4
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/na_rep.csv
@@ -0,0 +1,9 @@
1Meta Mode,yakindumm
2Number of Edge types,6
3Number Of Nodes,98
4OutDegreeValue,1,2,3,4,5,6,10,15
5OutDegreeCount,7,61,17,2,3,2,5,1
6NAValue,1,2,3,4,5,6
7NACount,1,4,6,62,23,2
8MPCValue,0.00000,0.14062,0.19835,0.38400,0.45000,0.80000,0.86667,0.90000,0.90888,0.91429,0.93061,0.93223,0.94815,0.98400,1.00000
9MPCCount,1,1,1,1,1,6,1,61,2,4,14,2,1,1,1
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/na_rep/R_2017419.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/na_rep/R_2017419.xmi
new file mode 100644
index 00000000..369760bf
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/na_rep/R_2017419.xmi
@@ -0,0 +1,138 @@
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 //@regions.0/@vertices.5/@outgoingTransitions.0">
5 <regions>
6 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.2/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.8/@outgoingTransitions.2 //@regions.0/@vertices.0/@regions.0/@vertices.5/@outgoingTransitions.2 //@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.2 //@regions.0/@vertices.0/@regions.0/@vertices.8/@outgoingTransitions.3">
7 <outgoingTransitions target="//@regions.0/@vertices.1"/>
8 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
9 </vertices>
10 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.4/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.3/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.0/@outgoingTransitions.1">
11 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.5"/>
12 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.4"/>
13 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
14 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.3"/>
15 </vertices>
16 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
17 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
18 </vertices>
19 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.3">
20 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
21 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
22 </vertices>
23 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.1">
24 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
25 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.1"/>
26 </vertices>
27 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.6/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.7/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.6/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.7/@outgoingTransitions.0">
28 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.6"/>
29 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.7"/>
30 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
31 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.8"/>
32 </vertices>
33 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.5/@outgoingTransitions.0">
34 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.5"/>
35 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.5"/>
36 </vertices>
37 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.5/@outgoingTransitions.1">
38 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.5"/>
39 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.5"/>
40 </vertices>
41 <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.9/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.5/@outgoingTransitions.3 //@regions.0/@vertices.0/@regions.0/@vertices.10/@outgoingTransitions.1 //@regions.0/@vertices.0/@regions.0/@vertices.9/@outgoingTransitions.1">
42 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.10"/>
43 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.9"/>
44 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
45 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.0"/>
46 </vertices>
47 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.8/@outgoingTransitions.1">
48 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.8"/>
49 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.8"/>
50 </vertices>
51 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.0/@regions.0/@vertices.8/@outgoingTransitions.0">
52 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.8"/>
53 <outgoingTransitions target="//@regions.0/@vertices.0/@regions.0/@vertices.8"/>
54 </vertices>
55 </regions>
56 </vertices>
57 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.0/@regions.0/@vertices.0/@outgoingTransitions.0 //@regions.0/@vertices.4/@outgoingTransitions.1">
58 <outgoingTransitions target="//@regions.0/@vertices.0"/>
59 <regions>
60 <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">
61 <outgoingTransitions target="//@regions.0/@vertices.3"/>
62 </vertices>
63 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.1/@regions.0/@vertices.5/@outgoingTransitions.1">
64 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.3"/>
65 <outgoingTransitions target="//@regions.0/@vertices.3"/>
66 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.5"/>
67 </vertices>
68 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.5/@outgoingTransitions.0 //@regions.0/@vertices.1/@regions.0/@vertices.6/@outgoingTransitions.0"/>
69 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.1/@regions.0/@vertices.6/@outgoingTransitions.1">
70 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.7"/>
71 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.6"/>
72 </vertices>
73 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
74 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.1"/>
75 </vertices>
76 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.1/@outgoingTransitions.2">
77 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2"/>
78 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.1"/>
79 </vertices>
80 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.3/@outgoingTransitions.1">
81 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.2"/>
82 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.3"/>
83 </vertices>
84 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.3/@outgoingTransitions.0">
85 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.0"/>
86 <outgoingTransitions target="//@regions.0/@vertices.1/@regions.0/@vertices.0"/>
87 </vertices>
88 </regions>
89 </vertices>
90 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.3/@outgoingTransitions.1 //@regions.0/@vertices.3/@outgoingTransitions.0">
91 <outgoingTransitions target="//@regions.0/@vertices.0"/>
92 <regions>
93 <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.7/@outgoingTransitions.1">
94 <outgoingTransitions target="//@regions.0/@vertices.4"/>
95 </vertices>
96 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.5/@outgoingTransitions.1">
97 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
98 <outgoingTransitions target="//@regions.0/@vertices.4"/>
99 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.5"/>
100 </vertices>
101 <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.5/@outgoingTransitions.0"/>
102 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.6/@outgoingTransitions.1">
103 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.6"/>
104 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.7"/>
105 </vertices>
106 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
107 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.1"/>
108 </vertices>
109 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.1/@outgoingTransitions.2">
110 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
111 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.1"/>
112 </vertices>
113 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.3/@outgoingTransitions.0">
114 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
115 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
116 </vertices>
117 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.3/@outgoingTransitions.1">
118 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.0"/>
119 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.0"/>
120 </vertices>
121 </regions>
122 </vertices>
123 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.1/@regions.0/@vertices.0/@outgoingTransitions.0 //@regions.0/@vertices.1/@regions.0/@vertices.1/@outgoingTransitions.1">
124 <outgoingTransitions target="//@regions.0/@vertices.2"/>
125 <outgoingTransitions target="//@regions.0/@vertices.2"/>
126 </vertices>
127 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.0/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.1/@outgoingTransitions.1">
128 <outgoingTransitions target="//@regions.0/@vertices.1"/>
129 <outgoingTransitions target="//@regions.0/@vertices.1"/>
130 </vertices>
131 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.6/@outgoingTransitions.0">
132 <outgoingTransitions target="//@regions.0/@vertices.0"/>
133 </vertices>
134 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
135 <outgoingTransitions target="//@regions.0/@vertices.5"/>
136 </vertices>
137 </regions>
138</hu.bme.mit.inf.yakindumm:Statechart>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/new/mpc_rep/R_2015194.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/new/mpc_rep/R_2015194.xmi
new file mode 100644
index 00000000..25ff5ce0
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/new/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/Yakindumm/new/na_rep/R_2017131.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/new/na_rep/R_2017131.xmi
new file mode 100644
index 00000000..39780f72
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/new/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/Yakindumm/new/out_d_rep/R_2015248.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/new/out_d_rep/R_2015248.xmi
new file mode 100644
index 00000000..e7fe8114
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/new/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/data/Yakindumm/out_d_rep.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/out_d_rep.csv
new file mode 100644
index 00000000..17965018
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/out_d_rep.csv
@@ -0,0 +1,9 @@
1Meta Mode,yakindumm
2Number of Edge types,6
3Number Of Nodes,88
4OutDegreeValue,1,2,3,4,5,6,8,10,11,13
5OutDegreeCount,6,57,12,3,1,2,2,3,1,1
6NAValue,1,2,3,4,5,6
7NACount,1,3,6,56,20,2
8MPCValue,0.00000,0.15918,0.18333,0.38400,0.76800,0.80000,0.88889,0.90000,0.90888,0.91349,0.91429,0.93061,0.93223,0.93728,1.00000
9MPCCount,1,1,1,1,1,5,2,56,1,2,3,10,1,1,2
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/out_d_rep/R_2015225.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/out_d_rep/R_2015225.xmi
new file mode 100644
index 00000000..21fee5a9
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Yakindumm/out_d_rep/R_2015225.xmi
@@ -0,0 +1,145 @@
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.0/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.3/@outgoingTransitions.2 //@regions.0/@vertices.2/@outgoingTransitions.0 //@regions.0/@vertices.3/@outgoingTransitions.0">
8 <outgoingTransitions target="//@regions.0/@vertices.2"/>
9 <outgoingTransitions target="//@regions.0/@vertices.3"/>
10 </vertices>
11 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@outgoingTransitions.0">
12 <outgoingTransitions target="//@regions.0/@vertices.1"/>
13 <regions>
14 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.0/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.0/@outgoingTransitions.2">
15 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.0"/>
16 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.1"/>
17 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.0"/>
18 </vertices>
19 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.10/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.9/@outgoingTransitions.1 //@regions.0/@vertices.2/@regions.0/@vertices.0/@outgoingTransitions.1 //@regions.0/@vertices.2/@regions.0/@vertices.10/@outgoingTransitions.1 //@regions.0/@vertices.2/@regions.0/@vertices.9/@outgoingTransitions.0">
20 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.9"/>
21 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
22 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.10"/>
23 </vertices>
24 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.1/@outgoingTransitions.1 //@regions.0/@vertices.2/@regions.0/@vertices.7/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.7/@outgoingTransitions.1 //@regions.0/@vertices.2/@regions.0/@vertices.8/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.8/@outgoingTransitions.1">
25 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.8"/>
26 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
27 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.7"/>
28 </vertices>
29 <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.5/@outgoingTransitions.0 //@regions.0/@vertices.2/@regions.0/@vertices.6/@outgoingTransitions.1 //@regions.0/@vertices.2/@regions.0/@vertices.2/@outgoingTransitions.1 //@regions.0/@vertices.2/@regions.0/@vertices.5/@outgoingTransitions.1">
30 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.6"/>
31 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.5"/>
32 <outgoingTransitions target="//@regions.0/@vertices.1"/>
33 </vertices>
34 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
35 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.0"/>
36 </vertices>
37 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.3/@outgoingTransitions.1">
38 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
39 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
40 </vertices>
41 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.3/@outgoingTransitions.0">
42 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
43 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.3"/>
44 </vertices>
45 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.2/@outgoingTransitions.2">
46 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
47 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
48 </vertices>
49 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.2/@outgoingTransitions.0">
50 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
51 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.2"/>
52 </vertices>
53 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.1/@outgoingTransitions.0">
54 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.1"/>
55 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.1"/>
56 </vertices>
57 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.2/@regions.0/@vertices.1/@outgoingTransitions.2">
58 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.1"/>
59 <outgoingTransitions target="//@regions.0/@vertices.2/@regions.0/@vertices.1"/>
60 </vertices>
61 </regions>
62 </vertices>
63 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.1/@outgoingTransitions.1 //@regions.0/@vertices.6/@outgoingTransitions.0">
64 <outgoingTransitions target="//@regions.0/@vertices.1"/>
65 <outgoingTransitions target="//@regions.0/@vertices.5"/>
66 <regions>
67 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
68 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.1"/>
69 </vertices>
70 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.3/@regions.0/@vertices.0/@outgoingTransitions.0">
71 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.2"/>
72 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.3"/>
73 </vertices>
74 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.3/@regions.0/@vertices.6/@outgoingTransitions.0 //@regions.0/@vertices.3/@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.3/@regions.0/@vertices.5/@outgoingTransitions.0 //@regions.0/@vertices.3/@regions.0/@vertices.5/@outgoingTransitions.1">
75 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.4"/>
76 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.6"/>
77 </vertices>
78 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.3/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.3/@regions.0/@vertices.8/@outgoingTransitions.0 //@regions.0/@vertices.3/@regions.0/@vertices.1/@outgoingTransitions.1 //@regions.0/@vertices.3/@regions.0/@vertices.4/@outgoingTransitions.1">
79 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.8"/>
80 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.5"/>
81 </vertices>
82 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.3/@regions.0/@vertices.2/@outgoingTransitions.0">
83 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.3"/>
84 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.3"/>
85 </vertices>
86 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.3/@regions.0/@vertices.3/@outgoingTransitions.1">
87 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.2"/>
88 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.2"/>
89 </vertices>
90 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.3/@regions.0/@vertices.2/@outgoingTransitions.1">
91 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.2"/>
92 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.7"/>
93 </vertices>
94 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.5/@outgoingTransitions.1 //@regions.0/@vertices.3/@regions.0/@vertices.6/@outgoingTransitions.1"/>
95 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.3/@regions.0/@vertices.3/@outgoingTransitions.0">
96 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.3"/>
97 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.9"/>
98 </vertices>
99 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.3/@regions.0/@vertices.8/@outgoingTransitions.1 //@regions.0/@vertices.5/@outgoingTransitions.2"/>
100 </regions>
101 </vertices>
102 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.5/@outgoingTransitions.0">
103 <outgoingTransitions target="//@regions.0/@vertices.6"/>
104 <regions>
105 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Entry">
106 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.1"/>
107 </vertices>
108 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.4/@regions.0/@vertices.0/@outgoingTransitions.0">
109 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.3"/>
110 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.2"/>
111 </vertices>
112 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.4/@regions.0/@vertices.4/@outgoingTransitions.0 //@regions.0/@vertices.4/@regions.0/@vertices.1/@outgoingTransitions.1">
113 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.4"/>
114 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.8"/>
115 </vertices>
116 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.4/@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.4/@regions.0/@vertices.6/@outgoingTransitions.0">
117 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.9"/>
118 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.6"/>
119 </vertices>
120 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.4/@regions.0/@vertices.2/@outgoingTransitions.0">
121 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.2"/>
122 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.5"/>
123 </vertices>
124 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.4/@regions.0/@vertices.4/@outgoingTransitions.1 //@regions.0/@vertices.6/@outgoingTransitions.2"/>
125 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.4/@regions.0/@vertices.3/@outgoingTransitions.1">
126 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.3"/>
127 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.7"/>
128 </vertices>
129 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.4/@regions.0/@vertices.6/@outgoingTransitions.1 //@regions.0/@vertices.6/@outgoingTransitions.1"/>
130 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.4/@regions.0/@vertices.2/@outgoingTransitions.1"/>
131 <vertices xsi:type="hu.bme.mit.inf.yakindumm:State" incomingTransitions="//@regions.0/@vertices.4/@regions.0/@vertices.3/@outgoingTransitions.0"/>
132 </regions>
133 </vertices>
134 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.3/@outgoingTransitions.1">
135 <outgoingTransitions target="//@regions.0/@vertices.4"/>
136 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.7"/>
137 <outgoingTransitions target="//@regions.0/@vertices.3/@regions.0/@vertices.9"/>
138 </vertices>
139 <vertices xsi:type="hu.bme.mit.inf.yakindumm:Choice" incomingTransitions="//@regions.0/@vertices.4/@outgoingTransitions.0">
140 <outgoingTransitions target="//@regions.0/@vertices.3"/>
141 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.7"/>
142 <outgoingTransitions target="//@regions.0/@vertices.4/@regions.0/@vertices.5"/>
143 </vertices>
144 </regions>
145</hu.bme.mit.inf.yakindumm:Statechart>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/errors.txt b/Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/errors.txt
new file mode 100644
index 00000000..cbbf6c0f
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/errors.txt
@@ -0,0 +1,14 @@
1Error occured (NullPointerException):
2 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.lambda$23(ViatraReasoner.java:447)
3 org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_doubleArrow(ObjectExtensions.java:140)
4 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.lambda$1(ViatraReasoner.java:451)
5 org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_doubleArrow(ObjectExtensions.java:140)
6 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:531)
7 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:329)
8 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:141)
9 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:382)
10 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:122)
11 hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor.executeScript(StandaloneScriptExecutor.java:155)
12 hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor.executeScript(StandaloneScriptExecutor.java:147)
13 ca.mcgill.ecse.socialnetwork.runner.Main.runWithPath(Main.java:24)
14 ca.mcgill.ecse.socialnetwork.runner.Main.main(Main.java:40)
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig b/Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig
new file mode 100644
index 00000000..9d3dd0e9
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig
@@ -0,0 +1,51 @@
1import viatra "./queries/queries/Ecore.vql"
2import epackage "http://www.eclipse.org/emf/2002/Ecore"
3
4// Copy this for different model sizes
5generate {
6 metamodel = {package ecore excluding{EClassifier.instanceClass, EClassifier.defaultValue,
7 EEnumLiteral.instance, EStructuralFeature.defaultValue, EStructuralFeature.changeable,
8 EStructuralFeature.derived, ENamedElement.name, EClass.interface, EClass.abstract, EClassifier.instanceTypeName,
9 EClassifier.instanceClassName, EPackage.nsPrefix, EPackage.nsURI, EAnnotation.source,
10 EAttribute.iD, EDataType.serializable, EEnumLiteral.literal, EEnumLiteral.value,
11 EReference.resolveProxies, EReference.container, EReference.containment, EStringToStringMapEntry.key,
12 EStringToStringMapEntry.value, EStructuralFeature.defaultValueLiteral, EStructuralFeature.transient,
13 EStructuralFeature.unsettable, EStructuralFeature.volatile, ETypedElement.lowerBound,
14 ETypedElement.many, ETypedElement.ordered, ETypedElement.required, ETypedElement.unique,ETypedElement.upperBound,
15 // cannot generate eFactoryInstance
16 EPackage.eFactoryInstance,
17 //Derived edges
18 EClass.eAllSuperTypes, EClass.eAllAttributes, EClass.eAllReferences, EClass.eAllContainments, EClass.eAllGenericSuperTypes,
19 EClass. eAllOperations, EClass.eAllStructuralFeatures, EClass.eAttributes, EClass.eIDAttribute, EClass.eReferences,
20 EAttribute.eAttributeType, EGenericType.eRawType, EReference.eReferenceType,
21 //Generic Types
22 EClass.eGenericSuperTypes, ETypedElement.eGenericType, EOperation.eGenericExceptions, EObject, EAnnotation.references, EAnnotation.contents
23
24 }}
25 partial-model = { "inputs/ecore.xmi"}
26 constraints = { package queries }
27
28
29 solver = ViatraSolver
30
31 //median run time
32 scope = {
33 #node = 30 // (warm-up: 10) 30, 50, 80, 100, 120 ....
34 }
35
36 number = 1
37 runs = 1
38 config = {
39 log-level = none,
40 runtime = 300, // the runtime is in seconds, want to set is to 5 mins
41 "optional-wf" = "false",
42 "realistic-guidance" = "Composite",
43 "allow-must-violations" = "false",
44 "domain" = "Ecore",
45 "scopePropagator" = "typeHierarchy"
46 }
47
48 debug = "debug"
49 statistics = "statistics/Ecore/warmup.csv" //give different set up different filenames
50 output = "output/Ecore/run_time/"
51}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/Person.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/Person.java
new file mode 100644
index 00000000..b1e0a041
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/Person.java
@@ -0,0 +1,62 @@
1/**
2 */
3package socialnetwork;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Person</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link socialnetwork.Person#getFriends <em>Friends</em>}</li>
19 * <li>{@link socialnetwork.Person#getName <em>Name</em>}</li>
20 * </ul>
21 *
22 * @see socialnetwork.SocialnetworkPackage#getPerson()
23 * @model
24 * @generated
25 */
26public interface Person extends EObject {
27 /**
28 * Returns the value of the '<em><b>Friends</b></em>' reference list.
29 * The list contents are of type {@link socialnetwork.Person}.
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @return the value of the '<em>Friends</em>' reference list.
33 * @see socialnetwork.SocialnetworkPackage#getPerson_Friends()
34 * @model
35 * @generated
36 */
37 EList<Person> getFriends();
38
39 /**
40 * Returns the value of the '<em><b>Name</b></em>' attribute.
41 * The default value is <code>"Name"</code>.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @return the value of the '<em>Name</em>' attribute.
45 * @see #setName(String)
46 * @see socialnetwork.SocialnetworkPackage#getPerson_Name()
47 * @model default="Name"
48 * @generated
49 */
50 String getName();
51
52 /**
53 * Sets the value of the '{@link socialnetwork.Person#getName <em>Name</em>}' attribute.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @param value the new value of the '<em>Name</em>' attribute.
57 * @see #getName()
58 * @generated
59 */
60 void setName(String value);
61
62} // Person
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialNetwork.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialNetwork.java
new file mode 100644
index 00000000..4653f6dd
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialNetwork.java
@@ -0,0 +1,62 @@
1/**
2 */
3package socialnetwork;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Social Network</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link socialnetwork.SocialNetwork#getName <em>Name</em>}</li>
19 * <li>{@link socialnetwork.SocialNetwork#getPersons <em>Persons</em>}</li>
20 * </ul>
21 *
22 * @see socialnetwork.SocialnetworkPackage#getSocialNetwork()
23 * @model
24 * @generated
25 */
26public interface SocialNetwork extends EObject {
27 /**
28 * Returns the value of the '<em><b>Name</b></em>' attribute.
29 * The default value is <code>"SocialNetwork"</code>.
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @return the value of the '<em>Name</em>' attribute.
33 * @see #setName(String)
34 * @see socialnetwork.SocialnetworkPackage#getSocialNetwork_Name()
35 * @model default="SocialNetwork"
36 * @generated
37 */
38 String getName();
39
40 /**
41 * Sets the value of the '{@link socialnetwork.SocialNetwork#getName <em>Name</em>}' attribute.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @param value the new value of the '<em>Name</em>' attribute.
45 * @see #getName()
46 * @generated
47 */
48 void setName(String value);
49
50 /**
51 * Returns the value of the '<em><b>Persons</b></em>' containment reference list.
52 * The list contents are of type {@link socialnetwork.Person}.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return the value of the '<em>Persons</em>' containment reference list.
56 * @see socialnetwork.SocialnetworkPackage#getSocialNetwork_Persons()
57 * @model containment="true"
58 * @generated
59 */
60 EList<Person> getPersons();
61
62} // SocialNetwork
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialnetworkFactory.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialnetworkFactory.java
new file mode 100644
index 00000000..cf7a4250
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialnetworkFactory.java
@@ -0,0 +1,51 @@
1/**
2 */
3package socialnetwork;
4
5import org.eclipse.emf.ecore.EFactory;
6
7/**
8 * <!-- begin-user-doc -->
9 * The <b>Factory</b> for the model.
10 * It provides a create method for each non-abstract class of the model.
11 * <!-- end-user-doc -->
12 * @see socialnetwork.SocialnetworkPackage
13 * @generated
14 */
15public interface SocialnetworkFactory extends EFactory {
16 /**
17 * The singleton instance of the factory.
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 SocialnetworkFactory eINSTANCE = socialnetwork.impl.SocialnetworkFactoryImpl.init();
23
24 /**
25 * Returns a new object of class '<em>Social Network</em>'.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return a new object of class '<em>Social Network</em>'.
29 * @generated
30 */
31 SocialNetwork createSocialNetwork();
32
33 /**
34 * Returns a new object of class '<em>Person</em>'.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @return a new object of class '<em>Person</em>'.
38 * @generated
39 */
40 Person createPerson();
41
42 /**
43 * Returns the package supported by this factory.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @return the package supported by this factory.
47 * @generated
48 */
49 SocialnetworkPackage getSocialnetworkPackage();
50
51} //SocialnetworkFactory
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialnetworkPackage.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialnetworkPackage.java
new file mode 100644
index 00000000..f215f469
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/SocialnetworkPackage.java
@@ -0,0 +1,293 @@
1/**
2 */
3package socialnetwork;
4
5import org.eclipse.emf.ecore.EAttribute;
6import org.eclipse.emf.ecore.EClass;
7import org.eclipse.emf.ecore.EPackage;
8import org.eclipse.emf.ecore.EReference;
9
10/**
11 * <!-- begin-user-doc -->
12 * The <b>Package</b> for the model.
13 * It contains accessors for the meta objects to represent
14 * <ul>
15 * <li>each class,</li>
16 * <li>each feature of each class,</li>
17 * <li>each operation of each class,</li>
18 * <li>each enum,</li>
19 * <li>and each data type</li>
20 * </ul>
21 * <!-- end-user-doc -->
22 * @see socialnetwork.SocialnetworkFactory
23 * @model kind="package"
24 * annotation="http://www.eclipse.org/emf/2002/Ecore"
25 * @generated
26 */
27public interface SocialnetworkPackage extends EPackage {
28 /**
29 * The package name.
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @generated
33 */
34 String eNAME = "socialnetwork";
35
36 /**
37 * The package namespace URI.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @generated
41 */
42 String eNS_URI = "http://ecse.mcgill.ca/socialnetwork";
43
44 /**
45 * The package namespace name.
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @generated
49 */
50 String eNS_PREFIX = "socialnetwork";
51
52 /**
53 * The singleton instance of the package.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @generated
57 */
58 SocialnetworkPackage eINSTANCE = socialnetwork.impl.SocialnetworkPackageImpl.init();
59
60 /**
61 * The meta object id for the '{@link socialnetwork.impl.SocialNetworkImpl <em>Social Network</em>}' class.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @see socialnetwork.impl.SocialNetworkImpl
65 * @see socialnetwork.impl.SocialnetworkPackageImpl#getSocialNetwork()
66 * @generated
67 */
68 int SOCIAL_NETWORK = 0;
69
70 /**
71 * The feature id for the '<em><b>Name</b></em>' attribute.
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @generated
75 * @ordered
76 */
77 int SOCIAL_NETWORK__NAME = 0;
78
79 /**
80 * The feature id for the '<em><b>Persons</b></em>' containment reference list.
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 * @ordered
85 */
86 int SOCIAL_NETWORK__PERSONS = 1;
87
88 /**
89 * The number of structural features of the '<em>Social Network</em>' class.
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 * @ordered
94 */
95 int SOCIAL_NETWORK_FEATURE_COUNT = 2;
96
97 /**
98 * The number of operations of the '<em>Social Network</em>' class.
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 * @ordered
103 */
104 int SOCIAL_NETWORK_OPERATION_COUNT = 0;
105
106 /**
107 * The meta object id for the '{@link socialnetwork.impl.PersonImpl <em>Person</em>}' class.
108 * <!-- begin-user-doc -->
109 * <!-- end-user-doc -->
110 * @see socialnetwork.impl.PersonImpl
111 * @see socialnetwork.impl.SocialnetworkPackageImpl#getPerson()
112 * @generated
113 */
114 int PERSON = 1;
115
116 /**
117 * The feature id for the '<em><b>Friends</b></em>' reference list.
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @generated
121 * @ordered
122 */
123 int PERSON__FRIENDS = 0;
124
125 /**
126 * The feature id for the '<em><b>Name</b></em>' attribute.
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @generated
130 * @ordered
131 */
132 int PERSON__NAME = 1;
133
134 /**
135 * The number of structural features of the '<em>Person</em>' class.
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 * @ordered
140 */
141 int PERSON_FEATURE_COUNT = 2;
142
143 /**
144 * The number of operations of the '<em>Person</em>' class.
145 * <!-- begin-user-doc -->
146 * <!-- end-user-doc -->
147 * @generated
148 * @ordered
149 */
150 int PERSON_OPERATION_COUNT = 0;
151
152 /**
153 * Returns the meta object for class '{@link socialnetwork.SocialNetwork <em>Social Network</em>}'.
154 * <!-- begin-user-doc -->
155 * <!-- end-user-doc -->
156 * @return the meta object for class '<em>Social Network</em>'.
157 * @see socialnetwork.SocialNetwork
158 * @generated
159 */
160 EClass getSocialNetwork();
161
162 /**
163 * Returns the meta object for the attribute '{@link socialnetwork.SocialNetwork#getName <em>Name</em>}'.
164 * <!-- begin-user-doc -->
165 * <!-- end-user-doc -->
166 * @return the meta object for the attribute '<em>Name</em>'.
167 * @see socialnetwork.SocialNetwork#getName()
168 * @see #getSocialNetwork()
169 * @generated
170 */
171 EAttribute getSocialNetwork_Name();
172
173 /**
174 * Returns the meta object for the containment reference list '{@link socialnetwork.SocialNetwork#getPersons <em>Persons</em>}'.
175 * <!-- begin-user-doc -->
176 * <!-- end-user-doc -->
177 * @return the meta object for the containment reference list '<em>Persons</em>'.
178 * @see socialnetwork.SocialNetwork#getPersons()
179 * @see #getSocialNetwork()
180 * @generated
181 */
182 EReference getSocialNetwork_Persons();
183
184 /**
185 * Returns the meta object for class '{@link socialnetwork.Person <em>Person</em>}'.
186 * <!-- begin-user-doc -->
187 * <!-- end-user-doc -->
188 * @return the meta object for class '<em>Person</em>'.
189 * @see socialnetwork.Person
190 * @generated
191 */
192 EClass getPerson();
193
194 /**
195 * Returns the meta object for the reference list '{@link socialnetwork.Person#getFriends <em>Friends</em>}'.
196 * <!-- begin-user-doc -->
197 * <!-- end-user-doc -->
198 * @return the meta object for the reference list '<em>Friends</em>'.
199 * @see socialnetwork.Person#getFriends()
200 * @see #getPerson()
201 * @generated
202 */
203 EReference getPerson_Friends();
204
205 /**
206 * Returns the meta object for the attribute '{@link socialnetwork.Person#getName <em>Name</em>}'.
207 * <!-- begin-user-doc -->
208 * <!-- end-user-doc -->
209 * @return the meta object for the attribute '<em>Name</em>'.
210 * @see socialnetwork.Person#getName()
211 * @see #getPerson()
212 * @generated
213 */
214 EAttribute getPerson_Name();
215
216 /**
217 * Returns the factory that creates the instances of the model.
218 * <!-- begin-user-doc -->
219 * <!-- end-user-doc -->
220 * @return the factory that creates the instances of the model.
221 * @generated
222 */
223 SocialnetworkFactory getSocialnetworkFactory();
224
225 /**
226 * <!-- begin-user-doc -->
227 * Defines literals for the meta objects that represent
228 * <ul>
229 * <li>each class,</li>
230 * <li>each feature of each class,</li>
231 * <li>each operation of each class,</li>
232 * <li>each enum,</li>
233 * <li>and each data type</li>
234 * </ul>
235 * <!-- end-user-doc -->
236 * @generated
237 */
238 interface Literals {
239 /**
240 * The meta object literal for the '{@link socialnetwork.impl.SocialNetworkImpl <em>Social Network</em>}' class.
241 * <!-- begin-user-doc -->
242 * <!-- end-user-doc -->
243 * @see socialnetwork.impl.SocialNetworkImpl
244 * @see socialnetwork.impl.SocialnetworkPackageImpl#getSocialNetwork()
245 * @generated
246 */
247 EClass SOCIAL_NETWORK = eINSTANCE.getSocialNetwork();
248
249 /**
250 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
251 * <!-- begin-user-doc -->
252 * <!-- end-user-doc -->
253 * @generated
254 */
255 EAttribute SOCIAL_NETWORK__NAME = eINSTANCE.getSocialNetwork_Name();
256
257 /**
258 * The meta object literal for the '<em><b>Persons</b></em>' containment reference list feature.
259 * <!-- begin-user-doc -->
260 * <!-- end-user-doc -->
261 * @generated
262 */
263 EReference SOCIAL_NETWORK__PERSONS = eINSTANCE.getSocialNetwork_Persons();
264
265 /**
266 * The meta object literal for the '{@link socialnetwork.impl.PersonImpl <em>Person</em>}' class.
267 * <!-- begin-user-doc -->
268 * <!-- end-user-doc -->
269 * @see socialnetwork.impl.PersonImpl
270 * @see socialnetwork.impl.SocialnetworkPackageImpl#getPerson()
271 * @generated
272 */
273 EClass PERSON = eINSTANCE.getPerson();
274
275 /**
276 * The meta object literal for the '<em><b>Friends</b></em>' reference list feature.
277 * <!-- begin-user-doc -->
278 * <!-- end-user-doc -->
279 * @generated
280 */
281 EReference PERSON__FRIENDS = eINSTANCE.getPerson_Friends();
282
283 /**
284 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
285 * <!-- begin-user-doc -->
286 * <!-- end-user-doc -->
287 * @generated
288 */
289 EAttribute PERSON__NAME = eINSTANCE.getPerson_Name();
290
291 }
292
293} //SocialnetworkPackage
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/PersonImpl.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/PersonImpl.java
new file mode 100644
index 00000000..d8bab731
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/PersonImpl.java
@@ -0,0 +1,208 @@
1/**
2 */
3package socialnetwork.impl;
4
5import java.util.Collection;
6
7import org.eclipse.emf.common.notify.Notification;
8
9import org.eclipse.emf.common.util.EList;
10
11import org.eclipse.emf.ecore.EClass;
12
13import org.eclipse.emf.ecore.impl.ENotificationImpl;
14import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
15
16import org.eclipse.emf.ecore.util.EObjectResolvingEList;
17
18import socialnetwork.Person;
19import socialnetwork.SocialnetworkPackage;
20
21/**
22 * <!-- begin-user-doc -->
23 * An implementation of the model object '<em><b>Person</b></em>'.
24 * <!-- end-user-doc -->
25 * <p>
26 * The following features are implemented:
27 * </p>
28 * <ul>
29 * <li>{@link socialnetwork.impl.PersonImpl#getFriends <em>Friends</em>}</li>
30 * <li>{@link socialnetwork.impl.PersonImpl#getName <em>Name</em>}</li>
31 * </ul>
32 *
33 * @generated
34 */
35public class PersonImpl extends MinimalEObjectImpl.Container implements Person {
36 /**
37 * The cached value of the '{@link #getFriends() <em>Friends</em>}' reference list.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @see #getFriends()
41 * @generated
42 * @ordered
43 */
44 protected EList<Person> friends;
45
46 /**
47 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @see #getName()
51 * @generated
52 * @ordered
53 */
54 protected static final String NAME_EDEFAULT = "Name";
55
56 /**
57 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @see #getName()
61 * @generated
62 * @ordered
63 */
64 protected String name = NAME_EDEFAULT;
65
66 /**
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @generated
70 */
71 protected PersonImpl() {
72 super();
73 }
74
75 /**
76 * <!-- begin-user-doc -->
77 * <!-- end-user-doc -->
78 * @generated
79 */
80 @Override
81 protected EClass eStaticClass() {
82 return SocialnetworkPackage.Literals.PERSON;
83 }
84
85 /**
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @generated
89 */
90 @Override
91 public EList<Person> getFriends() {
92 if (friends == null) {
93 friends = new EObjectResolvingEList<Person>(Person.class, this, SocialnetworkPackage.PERSON__FRIENDS);
94 }
95 return friends;
96 }
97
98 /**
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 @Override
104 public String getName() {
105 return name;
106 }
107
108 /**
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @generated
112 */
113 @Override
114 public void setName(String newName) {
115 String oldName = name;
116 name = newName;
117 if (eNotificationRequired())
118 eNotify(new ENotificationImpl(this, Notification.SET, SocialnetworkPackage.PERSON__NAME, oldName, name));
119 }
120
121 /**
122 * <!-- begin-user-doc -->
123 * <!-- end-user-doc -->
124 * @generated
125 */
126 @Override
127 public Object eGet(int featureID, boolean resolve, boolean coreType) {
128 switch (featureID) {
129 case SocialnetworkPackage.PERSON__FRIENDS:
130 return getFriends();
131 case SocialnetworkPackage.PERSON__NAME:
132 return getName();
133 }
134 return super.eGet(featureID, resolve, coreType);
135 }
136
137 /**
138 * <!-- begin-user-doc -->
139 * <!-- end-user-doc -->
140 * @generated
141 */
142 @SuppressWarnings("unchecked")
143 @Override
144 public void eSet(int featureID, Object newValue) {
145 switch (featureID) {
146 case SocialnetworkPackage.PERSON__FRIENDS:
147 getFriends().clear();
148 getFriends().addAll((Collection<? extends Person>) newValue);
149 return;
150 case SocialnetworkPackage.PERSON__NAME:
151 setName((String) newValue);
152 return;
153 }
154 super.eSet(featureID, newValue);
155 }
156
157 /**
158 * <!-- begin-user-doc -->
159 * <!-- end-user-doc -->
160 * @generated
161 */
162 @Override
163 public void eUnset(int featureID) {
164 switch (featureID) {
165 case SocialnetworkPackage.PERSON__FRIENDS:
166 getFriends().clear();
167 return;
168 case SocialnetworkPackage.PERSON__NAME:
169 setName(NAME_EDEFAULT);
170 return;
171 }
172 super.eUnset(featureID);
173 }
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 @Override
181 public boolean eIsSet(int featureID) {
182 switch (featureID) {
183 case SocialnetworkPackage.PERSON__FRIENDS:
184 return friends != null && !friends.isEmpty();
185 case SocialnetworkPackage.PERSON__NAME:
186 return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
187 }
188 return super.eIsSet(featureID);
189 }
190
191 /**
192 * <!-- begin-user-doc -->
193 * <!-- end-user-doc -->
194 * @generated
195 */
196 @Override
197 public String toString() {
198 if (eIsProxy())
199 return super.toString();
200
201 StringBuilder result = new StringBuilder(super.toString());
202 result.append(" (name: ");
203 result.append(name);
204 result.append(')');
205 return result.toString();
206 }
207
208} //PersonImpl
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialNetworkImpl.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialNetworkImpl.java
new file mode 100644
index 00000000..cb28b749
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialNetworkImpl.java
@@ -0,0 +1,228 @@
1/**
2 */
3package socialnetwork.impl;
4
5import java.util.Collection;
6
7import org.eclipse.emf.common.notify.Notification;
8import org.eclipse.emf.common.notify.NotificationChain;
9
10import org.eclipse.emf.common.util.EList;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
17
18import org.eclipse.emf.ecore.util.EObjectContainmentEList;
19import org.eclipse.emf.ecore.util.InternalEList;
20
21import socialnetwork.Person;
22import socialnetwork.SocialNetwork;
23import socialnetwork.SocialnetworkPackage;
24
25/**
26 * <!-- begin-user-doc -->
27 * An implementation of the model object '<em><b>Social Network</b></em>'.
28 * <!-- end-user-doc -->
29 * <p>
30 * The following features are implemented:
31 * </p>
32 * <ul>
33 * <li>{@link socialnetwork.impl.SocialNetworkImpl#getName <em>Name</em>}</li>
34 * <li>{@link socialnetwork.impl.SocialNetworkImpl#getPersons <em>Persons</em>}</li>
35 * </ul>
36 *
37 * @generated
38 */
39public class SocialNetworkImpl extends MinimalEObjectImpl.Container implements SocialNetwork {
40 /**
41 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @see #getName()
45 * @generated
46 * @ordered
47 */
48 protected static final String NAME_EDEFAULT = "SocialNetwork";
49
50 /**
51 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @see #getName()
55 * @generated
56 * @ordered
57 */
58 protected String name = NAME_EDEFAULT;
59
60 /**
61 * The cached value of the '{@link #getPersons() <em>Persons</em>}' containment reference list.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @see #getPersons()
65 * @generated
66 * @ordered
67 */
68 protected EList<Person> persons;
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 protected SocialNetworkImpl() {
76 super();
77 }
78
79 /**
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @generated
83 */
84 @Override
85 protected EClass eStaticClass() {
86 return SocialnetworkPackage.Literals.SOCIAL_NETWORK;
87 }
88
89 /**
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 */
94 @Override
95 public String getName() {
96 return name;
97 }
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 @Override
105 public void setName(String newName) {
106 String oldName = name;
107 name = newName;
108 if (eNotificationRequired())
109 eNotify(new ENotificationImpl(this, Notification.SET, SocialnetworkPackage.SOCIAL_NETWORK__NAME, oldName,
110 name));
111 }
112
113 /**
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @generated
117 */
118 @Override
119 public EList<Person> getPersons() {
120 if (persons == null) {
121 persons = new EObjectContainmentEList<Person>(Person.class, this,
122 SocialnetworkPackage.SOCIAL_NETWORK__PERSONS);
123 }
124 return persons;
125 }
126
127 /**
128 * <!-- begin-user-doc -->
129 * <!-- end-user-doc -->
130 * @generated
131 */
132 @Override
133 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
134 switch (featureID) {
135 case SocialnetworkPackage.SOCIAL_NETWORK__PERSONS:
136 return ((InternalEList<?>) getPersons()).basicRemove(otherEnd, msgs);
137 }
138 return super.eInverseRemove(otherEnd, featureID, msgs);
139 }
140
141 /**
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @generated
145 */
146 @Override
147 public Object eGet(int featureID, boolean resolve, boolean coreType) {
148 switch (featureID) {
149 case SocialnetworkPackage.SOCIAL_NETWORK__NAME:
150 return getName();
151 case SocialnetworkPackage.SOCIAL_NETWORK__PERSONS:
152 return getPersons();
153 }
154 return super.eGet(featureID, resolve, coreType);
155 }
156
157 /**
158 * <!-- begin-user-doc -->
159 * <!-- end-user-doc -->
160 * @generated
161 */
162 @SuppressWarnings("unchecked")
163 @Override
164 public void eSet(int featureID, Object newValue) {
165 switch (featureID) {
166 case SocialnetworkPackage.SOCIAL_NETWORK__NAME:
167 setName((String) newValue);
168 return;
169 case SocialnetworkPackage.SOCIAL_NETWORK__PERSONS:
170 getPersons().clear();
171 getPersons().addAll((Collection<? extends Person>) newValue);
172 return;
173 }
174 super.eSet(featureID, newValue);
175 }
176
177 /**
178 * <!-- begin-user-doc -->
179 * <!-- end-user-doc -->
180 * @generated
181 */
182 @Override
183 public void eUnset(int featureID) {
184 switch (featureID) {
185 case SocialnetworkPackage.SOCIAL_NETWORK__NAME:
186 setName(NAME_EDEFAULT);
187 return;
188 case SocialnetworkPackage.SOCIAL_NETWORK__PERSONS:
189 getPersons().clear();
190 return;
191 }
192 super.eUnset(featureID);
193 }
194
195 /**
196 * <!-- begin-user-doc -->
197 * <!-- end-user-doc -->
198 * @generated
199 */
200 @Override
201 public boolean eIsSet(int featureID) {
202 switch (featureID) {
203 case SocialnetworkPackage.SOCIAL_NETWORK__NAME:
204 return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
205 case SocialnetworkPackage.SOCIAL_NETWORK__PERSONS:
206 return persons != null && !persons.isEmpty();
207 }
208 return super.eIsSet(featureID);
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public String toString() {
218 if (eIsProxy())
219 return super.toString();
220
221 StringBuilder result = new StringBuilder(super.toString());
222 result.append(" (name: ");
223 result.append(name);
224 result.append(')');
225 return result.toString();
226 }
227
228} //SocialNetworkImpl
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialnetworkFactoryImpl.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialnetworkFactoryImpl.java
new file mode 100644
index 00000000..87fa3a87
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialnetworkFactoryImpl.java
@@ -0,0 +1,111 @@
1/**
2 */
3package socialnetwork.impl;
4
5import org.eclipse.emf.ecore.EClass;
6import org.eclipse.emf.ecore.EObject;
7import org.eclipse.emf.ecore.EPackage;
8
9import org.eclipse.emf.ecore.impl.EFactoryImpl;
10
11import org.eclipse.emf.ecore.plugin.EcorePlugin;
12
13import socialnetwork.*;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model <b>Factory</b>.
18 * <!-- end-user-doc -->
19 * @generated
20 */
21public class SocialnetworkFactoryImpl extends EFactoryImpl implements SocialnetworkFactory {
22 /**
23 * Creates the default factory implementation.
24 * <!-- begin-user-doc -->
25 * <!-- end-user-doc -->
26 * @generated
27 */
28 public static SocialnetworkFactory init() {
29 try {
30 SocialnetworkFactory theSocialnetworkFactory = (SocialnetworkFactory) EPackage.Registry.INSTANCE
31 .getEFactory(SocialnetworkPackage.eNS_URI);
32 if (theSocialnetworkFactory != null) {
33 return theSocialnetworkFactory;
34 }
35 } catch (Exception exception) {
36 EcorePlugin.INSTANCE.log(exception);
37 }
38 return new SocialnetworkFactoryImpl();
39 }
40
41 /**
42 * Creates an instance of the factory.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @generated
46 */
47 public SocialnetworkFactoryImpl() {
48 super();
49 }
50
51 /**
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 @Override
57 public EObject create(EClass eClass) {
58 switch (eClass.getClassifierID()) {
59 case SocialnetworkPackage.SOCIAL_NETWORK:
60 return createSocialNetwork();
61 case SocialnetworkPackage.PERSON:
62 return createPerson();
63 default:
64 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
65 }
66 }
67
68 /**
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @generated
72 */
73 @Override
74 public SocialNetwork createSocialNetwork() {
75 SocialNetworkImpl socialNetwork = new SocialNetworkImpl();
76 return socialNetwork;
77 }
78
79 /**
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @generated
83 */
84 @Override
85 public Person createPerson() {
86 PersonImpl person = new PersonImpl();
87 return person;
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 @Override
96 public SocialnetworkPackage getSocialnetworkPackage() {
97 return (SocialnetworkPackage) getEPackage();
98 }
99
100 /**
101 * <!-- begin-user-doc -->
102 * <!-- end-user-doc -->
103 * @deprecated
104 * @generated
105 */
106 @Deprecated
107 public static SocialnetworkPackage getPackage() {
108 return SocialnetworkPackage.eINSTANCE;
109 }
110
111} //SocialnetworkFactoryImpl
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialnetworkPackageImpl.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialnetworkPackageImpl.java
new file mode 100644
index 00000000..7588df50
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/impl/SocialnetworkPackageImpl.java
@@ -0,0 +1,267 @@
1/**
2 */
3package socialnetwork.impl;
4
5import org.eclipse.emf.ecore.EAttribute;
6import org.eclipse.emf.ecore.EClass;
7import org.eclipse.emf.ecore.EPackage;
8import org.eclipse.emf.ecore.EReference;
9
10import org.eclipse.emf.ecore.impl.EPackageImpl;
11
12import socialnetwork.Person;
13import socialnetwork.SocialNetwork;
14import socialnetwork.SocialnetworkFactory;
15import socialnetwork.SocialnetworkPackage;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model <b>Package</b>.
20 * <!-- end-user-doc -->
21 * @generated
22 */
23public class SocialnetworkPackageImpl extends EPackageImpl implements SocialnetworkPackage {
24 /**
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 private EClass socialNetworkEClass = null;
30
31 /**
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @generated
35 */
36 private EClass personEClass = null;
37
38 /**
39 * Creates an instance of the model <b>Package</b>, registered with
40 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
41 * package URI value.
42 * <p>Note: the correct way to create the package is via the static
43 * factory method {@link #init init()}, which also performs
44 * initialization of the package, or returns the registered package,
45 * if one already exists.
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @see org.eclipse.emf.ecore.EPackage.Registry
49 * @see socialnetwork.SocialnetworkPackage#eNS_URI
50 * @see #init()
51 * @generated
52 */
53 private SocialnetworkPackageImpl() {
54 super(eNS_URI, SocialnetworkFactory.eINSTANCE);
55 }
56
57 /**
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @generated
61 */
62 private static boolean isInited = false;
63
64 /**
65 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
66 *
67 * <p>This method is used to initialize {@link SocialnetworkPackage#eINSTANCE} when that field is accessed.
68 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @see #eNS_URI
72 * @see #createPackageContents()
73 * @see #initializePackageContents()
74 * @generated
75 */
76 public static SocialnetworkPackage init() {
77 if (isInited)
78 return (SocialnetworkPackage) EPackage.Registry.INSTANCE.getEPackage(SocialnetworkPackage.eNS_URI);
79
80 // Obtain or create and register package
81 Object registeredSocialnetworkPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
82 SocialnetworkPackageImpl theSocialnetworkPackage = registeredSocialnetworkPackage instanceof SocialnetworkPackageImpl
83 ? (SocialnetworkPackageImpl) registeredSocialnetworkPackage
84 : new SocialnetworkPackageImpl();
85
86 isInited = true;
87
88 // Create package meta-data objects
89 theSocialnetworkPackage.createPackageContents();
90
91 // Initialize created meta-data
92 theSocialnetworkPackage.initializePackageContents();
93
94 // Mark meta-data to indicate it can't be changed
95 theSocialnetworkPackage.freeze();
96
97 // Update the registry and return the package
98 EPackage.Registry.INSTANCE.put(SocialnetworkPackage.eNS_URI, theSocialnetworkPackage);
99 return theSocialnetworkPackage;
100 }
101
102 /**
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @generated
106 */
107 @Override
108 public EClass getSocialNetwork() {
109 return socialNetworkEClass;
110 }
111
112 /**
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @generated
116 */
117 @Override
118 public EAttribute getSocialNetwork_Name() {
119 return (EAttribute) socialNetworkEClass.getEStructuralFeatures().get(0);
120 }
121
122 /**
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @generated
126 */
127 @Override
128 public EReference getSocialNetwork_Persons() {
129 return (EReference) socialNetworkEClass.getEStructuralFeatures().get(1);
130 }
131
132 /**
133 * <!-- begin-user-doc -->
134 * <!-- end-user-doc -->
135 * @generated
136 */
137 @Override
138 public EClass getPerson() {
139 return personEClass;
140 }
141
142 /**
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 @Override
148 public EReference getPerson_Friends() {
149 return (EReference) personEClass.getEStructuralFeatures().get(0);
150 }
151
152 /**
153 * <!-- begin-user-doc -->
154 * <!-- end-user-doc -->
155 * @generated
156 */
157 @Override
158 public EAttribute getPerson_Name() {
159 return (EAttribute) personEClass.getEStructuralFeatures().get(1);
160 }
161
162 /**
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @generated
166 */
167 @Override
168 public SocialnetworkFactory getSocialnetworkFactory() {
169 return (SocialnetworkFactory) getEFactoryInstance();
170 }
171
172 /**
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @generated
176 */
177 private boolean isCreated = false;
178
179 /**
180 * Creates the meta-model objects for the package. This method is
181 * guarded to have no affect on any invocation but its first.
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @generated
185 */
186 public void createPackageContents() {
187 if (isCreated)
188 return;
189 isCreated = true;
190
191 // Create classes and their features
192 socialNetworkEClass = createEClass(SOCIAL_NETWORK);
193 createEAttribute(socialNetworkEClass, SOCIAL_NETWORK__NAME);
194 createEReference(socialNetworkEClass, SOCIAL_NETWORK__PERSONS);
195
196 personEClass = createEClass(PERSON);
197 createEReference(personEClass, PERSON__FRIENDS);
198 createEAttribute(personEClass, PERSON__NAME);
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 private boolean isInitialized = false;
207
208 /**
209 * Complete the initialization of the package and its meta-model. This
210 * method is guarded to have no affect on any invocation but its first.
211 * <!-- begin-user-doc -->
212 * <!-- end-user-doc -->
213 * @generated
214 */
215 public void initializePackageContents() {
216 if (isInitialized)
217 return;
218 isInitialized = true;
219
220 // Initialize package
221 setName(eNAME);
222 setNsPrefix(eNS_PREFIX);
223 setNsURI(eNS_URI);
224
225 // Create type parameters
226
227 // Set bounds for type parameters
228
229 // Add supertypes to classes
230
231 // Initialize classes, features, and operations; add parameters
232 initEClass(socialNetworkEClass, SocialNetwork.class, "SocialNetwork", !IS_ABSTRACT, !IS_INTERFACE,
233 IS_GENERATED_INSTANCE_CLASS);
234 initEAttribute(getSocialNetwork_Name(), ecorePackage.getEString(), "name", "SocialNetwork", 0, 1,
235 SocialNetwork.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
236 !IS_DERIVED, IS_ORDERED);
237 initEReference(getSocialNetwork_Persons(), this.getPerson(), null, "persons", null, 0, -1, SocialNetwork.class,
238 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
239 IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
240
241 initEClass(personEClass, Person.class, "Person", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
242 initEReference(getPerson_Friends(), this.getPerson(), null, "friends", null, 0, -1, Person.class, !IS_TRANSIENT,
243 !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
244 IS_ORDERED);
245 initEAttribute(getPerson_Name(), ecorePackage.getEString(), "name", "Name", 0, 1, Person.class, !IS_TRANSIENT,
246 !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
247
248 // Create resource
249 createResource(eNS_URI);
250
251 // Create annotations
252 // http://www.eclipse.org/emf/2002/Ecore
253 createEcoreAnnotations();
254 }
255
256 /**
257 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
258 * <!-- begin-user-doc -->
259 * <!-- end-user-doc -->
260 * @generated
261 */
262 protected void createEcoreAnnotations() {
263 String source = "http://www.eclipse.org/emf/2002/Ecore";
264 addAnnotation(this, source, new String[] {});
265 }
266
267} //SocialnetworkPackageImpl
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/util/SocialnetworkAdapterFactory.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/util/SocialnetworkAdapterFactory.java
new file mode 100644
index 00000000..0dd30975
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/util/SocialnetworkAdapterFactory.java
@@ -0,0 +1,138 @@
1/**
2 */
3package socialnetwork.util;
4
5import org.eclipse.emf.common.notify.Adapter;
6import org.eclipse.emf.common.notify.Notifier;
7
8import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
9
10import org.eclipse.emf.ecore.EObject;
11
12import socialnetwork.*;
13
14/**
15 * <!-- begin-user-doc -->
16 * The <b>Adapter Factory</b> for the model.
17 * It provides an adapter <code>createXXX</code> method for each class of the model.
18 * <!-- end-user-doc -->
19 * @see socialnetwork.SocialnetworkPackage
20 * @generated
21 */
22public class SocialnetworkAdapterFactory extends AdapterFactoryImpl {
23 /**
24 * The cached model package.
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 protected static SocialnetworkPackage modelPackage;
30
31 /**
32 * Creates an instance of the adapter factory.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @generated
36 */
37 public SocialnetworkAdapterFactory() {
38 if (modelPackage == null) {
39 modelPackage = SocialnetworkPackage.eINSTANCE;
40 }
41 }
42
43 /**
44 * Returns whether this factory is applicable for the type of the object.
45 * <!-- begin-user-doc -->
46 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
47 * <!-- end-user-doc -->
48 * @return whether this factory is applicable for the type of the object.
49 * @generated
50 */
51 @Override
52 public boolean isFactoryForType(Object object) {
53 if (object == modelPackage) {
54 return true;
55 }
56 if (object instanceof EObject) {
57 return ((EObject) object).eClass().getEPackage() == modelPackage;
58 }
59 return false;
60 }
61
62 /**
63 * The switch that delegates to the <code>createXXX</code> methods.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 protected SocialnetworkSwitch<Adapter> modelSwitch = new SocialnetworkSwitch<Adapter>() {
69 @Override
70 public Adapter caseSocialNetwork(SocialNetwork object) {
71 return createSocialNetworkAdapter();
72 }
73
74 @Override
75 public Adapter casePerson(Person object) {
76 return createPersonAdapter();
77 }
78
79 @Override
80 public Adapter defaultCase(EObject object) {
81 return createEObjectAdapter();
82 }
83 };
84
85 /**
86 * Creates an adapter for the <code>target</code>.
87 * <!-- begin-user-doc -->
88 * <!-- end-user-doc -->
89 * @param target the object to adapt.
90 * @return the adapter for the <code>target</code>.
91 * @generated
92 */
93 @Override
94 public Adapter createAdapter(Notifier target) {
95 return modelSwitch.doSwitch((EObject) target);
96 }
97
98 /**
99 * Creates a new adapter for an object of class '{@link socialnetwork.SocialNetwork <em>Social Network</em>}'.
100 * <!-- begin-user-doc -->
101 * This default implementation returns null so that we can easily ignore cases;
102 * it's useful to ignore a case when inheritance will catch all the cases anyway.
103 * <!-- end-user-doc -->
104 * @return the new adapter.
105 * @see socialnetwork.SocialNetwork
106 * @generated
107 */
108 public Adapter createSocialNetworkAdapter() {
109 return null;
110 }
111
112 /**
113 * Creates a new adapter for an object of class '{@link socialnetwork.Person <em>Person</em>}'.
114 * <!-- begin-user-doc -->
115 * This default implementation returns null so that we can easily ignore cases;
116 * it's useful to ignore a case when inheritance will catch all the cases anyway.
117 * <!-- end-user-doc -->
118 * @return the new adapter.
119 * @see socialnetwork.Person
120 * @generated
121 */
122 public Adapter createPersonAdapter() {
123 return null;
124 }
125
126 /**
127 * Creates a new adapter for the default case.
128 * <!-- begin-user-doc -->
129 * This default implementation returns null.
130 * <!-- end-user-doc -->
131 * @return the new adapter.
132 * @generated
133 */
134 public Adapter createEObjectAdapter() {
135 return null;
136 }
137
138} //SocialnetworkAdapterFactory
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/util/SocialnetworkSwitch.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/util/SocialnetworkSwitch.java
new file mode 100644
index 00000000..00d7955c
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/encore_gen/socialnetwork/util/SocialnetworkSwitch.java
@@ -0,0 +1,134 @@
1/**
2 */
3package socialnetwork.util;
4
5import org.eclipse.emf.ecore.EObject;
6import org.eclipse.emf.ecore.EPackage;
7
8import org.eclipse.emf.ecore.util.Switch;
9
10import socialnetwork.*;
11
12/**
13 * <!-- begin-user-doc -->
14 * The <b>Switch</b> for the model's inheritance hierarchy.
15 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
16 * to invoke the <code>caseXXX</code> method for each class of the model,
17 * starting with the actual class of the object
18 * and proceeding up the inheritance hierarchy
19 * until a non-null result is returned,
20 * which is the result of the switch.
21 * <!-- end-user-doc -->
22 * @see socialnetwork.SocialnetworkPackage
23 * @generated
24 */
25public class SocialnetworkSwitch<T> extends Switch<T> {
26 /**
27 * The cached model package
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 protected static SocialnetworkPackage modelPackage;
33
34 /**
35 * Creates an instance of the switch.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 public SocialnetworkSwitch() {
41 if (modelPackage == null) {
42 modelPackage = SocialnetworkPackage.eINSTANCE;
43 }
44 }
45
46 /**
47 * Checks whether this is a switch for the given package.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @param ePackage the package in question.
51 * @return whether this is a switch for the given package.
52 * @generated
53 */
54 @Override
55 protected boolean isSwitchFor(EPackage ePackage) {
56 return ePackage == modelPackage;
57 }
58
59 /**
60 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @return the first non-null result returned by a <code>caseXXX</code> call.
64 * @generated
65 */
66 @Override
67 protected T doSwitch(int classifierID, EObject theEObject) {
68 switch (classifierID) {
69 case SocialnetworkPackage.SOCIAL_NETWORK: {
70 SocialNetwork socialNetwork = (SocialNetwork) theEObject;
71 T result = caseSocialNetwork(socialNetwork);
72 if (result == null)
73 result = defaultCase(theEObject);
74 return result;
75 }
76 case SocialnetworkPackage.PERSON: {
77 Person person = (Person) theEObject;
78 T result = casePerson(person);
79 if (result == null)
80 result = defaultCase(theEObject);
81 return result;
82 }
83 default:
84 return defaultCase(theEObject);
85 }
86 }
87
88 /**
89 * Returns the result of interpreting the object as an instance of '<em>Social Network</em>'.
90 * <!-- begin-user-doc -->
91 * This implementation returns null;
92 * returning a non-null result will terminate the switch.
93 * <!-- end-user-doc -->
94 * @param object the target of the switch.
95 * @return the result of interpreting the object as an instance of '<em>Social Network</em>'.
96 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
97 * @generated
98 */
99 public T caseSocialNetwork(SocialNetwork object) {
100 return null;
101 }
102
103 /**
104 * Returns the result of interpreting the object as an instance of '<em>Person</em>'.
105 * <!-- begin-user-doc -->
106 * This implementation returns null;
107 * returning a non-null result will terminate the switch.
108 * <!-- end-user-doc -->
109 * @param object the target of the switch.
110 * @return the result of interpreting the object as an instance of '<em>Person</em>'.
111 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
112 * @generated
113 */
114 public T casePerson(Person object) {
115 return null;
116 }
117
118 /**
119 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
120 * <!-- begin-user-doc -->
121 * This implementation returns null;
122 * returning a non-null result will terminate the switch, but this is the last case anyway.
123 * <!-- end-user-doc -->
124 * @param object the target of the switch.
125 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
126 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
127 * @generated
128 */
129 @Override
130 public T defaultCase(EObject object) {
131 return null;
132 }
133
134} //SocialnetworkSwitch
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/generator.vqgen b/Metrics/Metrics-Calculation/SocialNetwork_plugin/generator.vqgen
new file mode 100644
index 00000000..902285d1
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/generator.vqgen
@@ -0,0 +1 @@
genmodel "platform:/resource/SocialNetwork_plugin/model/socialnetwork.genmodel" \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/github.vsconfig b/Metrics/Metrics-Calculation/SocialNetwork_plugin/github.vsconfig
new file mode 100644
index 00000000..e9f9a8d5
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/github.vsconfig
@@ -0,0 +1,213 @@
1import epackage "../../../Domains/github-graph/model/github.ecore"
2import viatra "../../../Domains/github-graph/queries/queries/github.vql"
3
4generate {
5 metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url,
6 Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at,
7 IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}}
8 partial-model = { "inputs/github.xmi"}
9 constraints = { package queries }
10
11
12 solver = ViatraSolver
13
14 scope = {
15 #node = 30
16 }
17
18 number = 1
19 runs = 5
20 config = {
21 log-level = none,
22 runtime = 300,
23 "optional-wf" = "false",
24 "realistic-guidance" = "Composite",
25 "allow-must-violations" = "false",
26 "domain" = "Github",
27 "scopePropagator" = "typeHierarchy"
28 }
29
30 debug = "debug"
31 statistics = "statistics/Github/warmup.csv"
32 output = "output/Github/Composite"
33}
34
35// generate {
36// metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url,
37// Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at,
38// IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}}
39// partial-model = { "inputs/github.xmi"}
40// constraints = { package queries }
41
42
43// solver = ViatraSolver
44
45// scope = {
46// #node = 30
47// }
48
49// number = 1
50// runs = 20
51// config = {
52// log-level = none,
53// runtime = 300,
54// "optional-wf" = "true",
55// "realistic-guidance" = "Composite",
56// "allow-must-violations" = "true",
57// "domain" = "Github"
58// }
59
60// debug = "debug"
61// statistics = "statistics/Github/30.csv"
62// output = "output/Github/Composite"
63// }
64
65// generate {
66// metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url,
67// Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at,
68// IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}}
69// partial-model = { "inputs/github.xmi"}
70// constraints = { package queries }
71
72
73// solver = ViatraSolver
74
75// scope = {
76// #node = 50
77// }
78
79// number = 1
80// runs = 20
81// config = {
82// log-level = none,
83// runtime = 300,
84// "optional-wf" = "true",
85// "realistic-guidance" = "Composite",
86// "allow-must-violations" = "true",
87// "domain" = "Github"
88// }
89
90// debug = "debug"
91// statistics = "statistics/Github/50.csv"
92// output = "output/Github/Composite"
93// }
94
95// generate {
96// metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url,
97// Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at,
98// IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}}
99// partial-model = { "inputs/github.xmi"}
100// constraints = { package queries }
101
102
103// solver = ViatraSolver
104
105// scope = {
106// #node = 80
107// }
108
109// number = 1
110// runs = 20
111// config = {
112// log-level = none,
113// runtime = 300,
114// "optional-wf" = "true",
115// "realistic-guidance" = "Composite",
116// "allow-must-violations" = "true",
117// "domain" = "Github"
118// }
119
120// debug = "debug"
121// statistics = "statistics/Github/80.csv"
122// output = "output/Github/Composite"
123// }
124
125// generate {
126// metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url,
127// Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at,
128// IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}}
129// partial-model = { "inputs/github.xmi"}
130// constraints = { package queries }
131
132
133// solver = ViatraSolver
134
135// scope = {
136// #node = 100
137// }
138
139// number = 1
140// runs = 20
141// config = {
142// log-level = none,
143// runtime = 300,
144// "optional-wf" = "true",
145// "realistic-guidance" = "Composite",
146// "allow-must-violations" = "true",
147// "domain" = "Github"
148// }
149
150// debug = "debug"
151// statistics = "statistics/Github/100.csv"
152// output = "output/Github/Composite"
153// }
154
155// generate {
156// metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url,
157// Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at,
158// IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}}
159// partial-model = { "inputs/github.xmi"}
160// constraints = { package queries }
161
162
163// solver = ViatraSolver
164
165// scope = {
166// #node = 120
167// }
168
169// number = 1
170// runs = 20
171// config = {
172// log-level = none,
173// runtime = 300,
174// "optional-wf" = "true",
175// "realistic-guidance" = "Composite",
176// "allow-must-violations" = "true",
177// "domain" = "Github"
178// }
179
180// debug = "debug"
181// statistics = "statistics/Github/120.csv"
182// output = "output/Github/Composite"
183// }
184
185// generate {
186// metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url,
187// Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at,
188// IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}}
189// partial-model = { "inputs/github.xmi"}
190// constraints = { package queries }
191
192
193// solver = ViatraSolver
194
195// scope = {
196// #node = 140
197// }
198
199// number = 1
200// runs = 20
201// config = {
202// log-level = none,
203// runtime = 300,
204// "optional-wf" = "true",
205// "realistic-guidance" = "Composite",
206// "allow-must-violations" = "true",
207// "domain" = "Github"
208// }
209
210// debug = "debug"
211// statistics = "statistics/Github/140.csv"
212// output = "output/Github/Composite"
213// } \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/ecore.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/ecore.xmi
new file mode 100644
index 00000000..c5721309
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/ecore.xmi
@@ -0,0 +1,5 @@
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">
4
5</ecore:EPackage>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/github.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/github.xmi
new file mode 100644
index 00000000..ad497607
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/github.xmi
@@ -0,0 +1,3 @@
1<?xml version="1.0" encoding="ASCII"?>
2<github:Project xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:github="sure.ghtorrent.github">
3</github:Project>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/start.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/start.xmi
new file mode 100644
index 00000000..f9a2a185
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/start.xmi
@@ -0,0 +1,2 @@
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" xsi:schemaLocation="hu.bme.mit.inf.yakindumm ../VIATRA-Generator/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.ecore"/>
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/model/socialnetwork.aird b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/socialnetwork.aird
new file mode 100644
index 00000000..e7e28ecd
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/socialnetwork.aird
@@ -0,0 +1,183 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
3 <viewpoint:DAnalysis uid="_TZr30HA1EemKP426GDjFOg" selectedViews="_Ta8cEHA1EemKP426GDjFOg" version="14.1.0.201810161215">
4 <semanticResources>socialnetwork.ecore</semanticResources>
5 <semanticResources>socialnetwork.genmodel</semanticResources>
6 <ownedViews xmi:type="viewpoint:DView" uid="_Ta8cEHA1EemKP426GDjFOg">
7 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
8 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_TbTBZXA1EemKP426GDjFOg" name="socialnetwork" repPath="#_TbTBYHA1EemKP426GDjFOg">
9 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
10 <target xmi:type="ecore:EPackage" href="socialnetwork.ecore#/"/>
11 </ownedRepresentationDescriptors>
12 </ownedViews>
13 </viewpoint:DAnalysis>
14 <diagram:DSemanticDiagram uid="_TbTBYHA1EemKP426GDjFOg" name="socialnetwork">
15 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_TbTBYXA1EemKP426GDjFOg" source="DANNOTATION_CUSTOMIZATION_KEY">
16 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_TbTBYnA1EemKP426GDjFOg">
17 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_ZZkWoHA1EemKP426GDjFOg" sourceArrow="FillDiamond" routingStyle="manhattan">
18 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
19 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_ZZkWoXA1EemKP426GDjFOg" showIcon="false" labelExpression="service:render">
20 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
21 </centerLabelStyleDescription>
22 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_ZZkWonA1EemKP426GDjFOg" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
23 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
24 </endLabelStyleDescription>
25 </computedStyleDescriptions>
26 </data>
27 </ownedAnnotationEntries>
28 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_TbTBZnA1EemKP426GDjFOg" source="GMF_DIAGRAMS">
29 <data xmi:type="notation:Diagram" xmi:id="_TbTBZ3A1EemKP426GDjFOg" type="Sirius" element="_TbTBYHA1EemKP426GDjFOg" measurementUnit="Pixel">
30 <children xmi:type="notation:Node" xmi:id="_Ur9YAHA1EemKP426GDjFOg" type="2003" element="_Ur5GkHA1EemKP426GDjFOg">
31 <children xmi:type="notation:Node" xmi:id="_Ur9YA3A1EemKP426GDjFOg" type="5007"/>
32 <children xmi:type="notation:Node" xmi:id="_Ur9YBHA1EemKP426GDjFOg" type="7004">
33 <children xmi:type="notation:Node" xmi:id="_W_L-4HA1EemKP426GDjFOg" type="3010" element="_W_DcAHA1EemKP426GDjFOg">
34 <styles xmi:type="notation:FontStyle" xmi:id="_W_L-4XA1EemKP426GDjFOg" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
35 <layoutConstraint xmi:type="notation:Location" xmi:id="_W_L-4nA1EemKP426GDjFOg"/>
36 </children>
37 <styles xmi:type="notation:SortingStyle" xmi:id="_Ur9YBXA1EemKP426GDjFOg"/>
38 <styles xmi:type="notation:FilteringStyle" xmi:id="_Ur9YBnA1EemKP426GDjFOg"/>
39 </children>
40 <styles xmi:type="notation:ShapeStyle" xmi:id="_Ur9YAXA1EemKP426GDjFOg" fontName="Segoe UI" fontHeight="8"/>
41 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ur9YAnA1EemKP426GDjFOg" x="285" y="165" width="120" height="100"/>
42 </children>
43 <children xmi:type="notation:Node" xmi:id="_X2ASIHA1EemKP426GDjFOg" type="2003" element="_X14WUHA1EemKP426GDjFOg">
44 <children xmi:type="notation:Node" xmi:id="_X2A5MHA1EemKP426GDjFOg" type="5007"/>
45 <children xmi:type="notation:Node" xmi:id="_X2A5MXA1EemKP426GDjFOg" type="7004">
46 <children xmi:type="notation:Node" xmi:id="_jitw4HA1EemKP426GDjFOg" type="3010" element="_jirUoHA1EemKP426GDjFOg">
47 <styles xmi:type="notation:FontStyle" xmi:id="_jitw4XA1EemKP426GDjFOg" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
48 <layoutConstraint xmi:type="notation:Location" xmi:id="_jitw4nA1EemKP426GDjFOg"/>
49 </children>
50 <styles xmi:type="notation:SortingStyle" xmi:id="_X2A5MnA1EemKP426GDjFOg"/>
51 <styles xmi:type="notation:FilteringStyle" xmi:id="_X2A5M3A1EemKP426GDjFOg"/>
52 </children>
53 <styles xmi:type="notation:ShapeStyle" xmi:id="_X2ASIXA1EemKP426GDjFOg" fontName="Segoe UI" fontHeight="8"/>
54 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_X2ASInA1EemKP426GDjFOg" x="690" y="180" width="120" height="100"/>
55 </children>
56 <styles xmi:type="notation:DiagramStyle" xmi:id="_TbTBaHA1EemKP426GDjFOg"/>
57 <edges xmi:type="notation:Edge" xmi:id="_ZZnZ8HA1EemKP426GDjFOg" type="4001" element="_ZZjvkHA1EemKP426GDjFOg" source="_Ur9YAHA1EemKP426GDjFOg" target="_X2ASIHA1EemKP426GDjFOg">
58 <children xmi:type="notation:Node" xmi:id="_ZZnZ9HA1EemKP426GDjFOg" type="6001">
59 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZZnZ9XA1EemKP426GDjFOg" x="6" y="10"/>
60 </children>
61 <children xmi:type="notation:Node" xmi:id="_ZZnZ9nA1EemKP426GDjFOg" type="6002">
62 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZZnZ93A1EemKP426GDjFOg" x="1" y="10"/>
63 </children>
64 <children xmi:type="notation:Node" xmi:id="_ZZnZ-HA1EemKP426GDjFOg" type="6003">
65 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZZnZ-XA1EemKP426GDjFOg" x="-1" y="10"/>
66 </children>
67 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ZZnZ8XA1EemKP426GDjFOg" routing="Rectilinear"/>
68 <styles xmi:type="notation:FontStyle" xmi:id="_ZZnZ8nA1EemKP426GDjFOg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
69 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZZnZ83A1EemKP426GDjFOg" points="[0, 0, -287, 4]$[143, 0, -144, 4]$[143, -4, -144, 0]$[287, -4, 0, 0]"/>
70 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZZnZ-nA1EemKP426GDjFOg" id="(1.0,0.5)"/>
71 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZZnZ-3A1EemKP426GDjFOg" id="(0.0,0.30612244897959184)"/>
72 </edges>
73 <edges xmi:type="notation:Edge" xmi:id="_f8gfMHA1EemKP426GDjFOg" type="4001" element="_f8eC8HA1EemKP426GDjFOg" source="_X2ASIHA1EemKP426GDjFOg" target="_X2ASIHA1EemKP426GDjFOg">
74 <children xmi:type="notation:Node" xmi:id="_f8gfNHA1EemKP426GDjFOg" type="6001">
75 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f8gfNXA1EemKP426GDjFOg" x="-8" y="7"/>
76 </children>
77 <children xmi:type="notation:Node" xmi:id="_f8hGQHA1EemKP426GDjFOg" type="6002">
78 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f8hGQXA1EemKP426GDjFOg" x="12" y="10"/>
79 </children>
80 <children xmi:type="notation:Node" xmi:id="_f8hGQnA1EemKP426GDjFOg" type="6003">
81 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f8hGQ3A1EemKP426GDjFOg" y="-10"/>
82 </children>
83 <styles xmi:type="notation:ConnectorStyle" xmi:id="_f8gfMXA1EemKP426GDjFOg" routing="Rectilinear"/>
84 <styles xmi:type="notation:FontStyle" xmi:id="_f8gfMnA1EemKP426GDjFOg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
85 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f8gfM3A1EemKP426GDjFOg" points="[4, 1, 0, -21]$[51, 1, 47, -21]$[51, -53, 47, -75]$[-25, -53, -29, -75]$[-25, -8, -29, -30]"/>
86 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f8hGRHA1EemKP426GDjFOg" id="(0.9666666666666667,0.09)"/>
87 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f8hGRXA1EemKP426GDjFOg" id="(1.0,0.30612244897959184)"/>
88 </edges>
89 <edges xmi:type="notation:Edge" xmi:id="_eUOggHA6EemKP426GDjFOg" type="4001" element="_eULdMHA6EemKP426GDjFOg" source="_X2ASIHA1EemKP426GDjFOg" target="_X2ASIHA1EemKP426GDjFOg">
90 <children xmi:type="notation:Node" xmi:id="_eUOghHA6EemKP426GDjFOg" type="6001">
91 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eUOghXA6EemKP426GDjFOg" y="-10"/>
92 </children>
93 <children xmi:type="notation:Node" xmi:id="_eUOghnA6EemKP426GDjFOg" type="6002">
94 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eUOgh3A6EemKP426GDjFOg" y="10"/>
95 </children>
96 <children xmi:type="notation:Node" xmi:id="_eUOgiHA6EemKP426GDjFOg" type="6003">
97 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eUOgiXA6EemKP426GDjFOg" y="10"/>
98 </children>
99 <styles xmi:type="notation:ConnectorStyle" xmi:id="_eUOggXA6EemKP426GDjFOg" routing="Rectilinear"/>
100 <styles xmi:type="notation:FontStyle" xmi:id="_eUOggnA6EemKP426GDjFOg" fontName="Segoe UI" fontHeight="8"/>
101 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eUOgg3A6EemKP426GDjFOg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
102 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eUOginA6EemKP426GDjFOg" id="(0.5,0.5)"/>
103 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eUOgi3A6EemKP426GDjFOg" id="(0.5,0.5)"/>
104 </edges>
105 </data>
106 </ownedAnnotationEntries>
107 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Ur5GkHA1EemKP426GDjFOg" name="SocialNetwork" tooltipText="" outgoingEdges="_ZZjvkHA1EemKP426GDjFOg" width="12" height="10">
108 <target xmi:type="ecore:EClass" href="socialnetwork.ecore#//SocialNetwork"/>
109 <semanticElements xmi:type="ecore:EClass" href="socialnetwork.ecore#//SocialNetwork"/>
110 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_XY_mAHA1EemKP426GDjFOg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
111 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
112 </ownedStyle>
113 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
114 <ownedElements xmi:type="diagram:DNodeListElement" uid="_W_DcAHA1EemKP426GDjFOg" name="name : EString" tooltipText="">
115 <target xmi:type="ecore:EAttribute" href="socialnetwork.ecore#//SocialNetwork/name"/>
116 <semanticElements xmi:type="ecore:EAttribute" href="socialnetwork.ecore#//SocialNetwork/name"/>
117 <ownedStyle xmi:type="diagram:BundledImage" uid="_XZANEHA1EemKP426GDjFOg" labelAlignment="LEFT">
118 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
119 </ownedStyle>
120 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
121 </ownedElements>
122 </ownedDiagramElements>
123 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_X14WUHA1EemKP426GDjFOg" name="Person" tooltipText="" outgoingEdges="_f8eC8HA1EemKP426GDjFOg _eULdMHA6EemKP426GDjFOg" incomingEdges="_ZZjvkHA1EemKP426GDjFOg _f8eC8HA1EemKP426GDjFOg _eULdMHA6EemKP426GDjFOg" width="12" height="10">
124 <target xmi:type="ecore:EClass" href="socialnetwork.ecore#//Person"/>
125 <semanticElements xmi:type="ecore:EClass" href="socialnetwork.ecore#//Person"/>
126 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
127 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
128 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
129 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_kAhuQHA1EemKP426GDjFOg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
130 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
131 </ownedStyle>
132 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
133 <ownedElements xmi:type="diagram:DNodeListElement" uid="_jirUoHA1EemKP426GDjFOg" name="name : EString" tooltipText="">
134 <target xmi:type="ecore:EAttribute" href="socialnetwork.ecore#//Person/name"/>
135 <semanticElements xmi:type="ecore:EAttribute" href="socialnetwork.ecore#//Person/name"/>
136 <ownedStyle xmi:type="diagram:BundledImage" uid="_kAiVUHA1EemKP426GDjFOg" labelAlignment="LEFT">
137 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
138 </ownedStyle>
139 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
140 </ownedElements>
141 </ownedDiagramElements>
142 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ZZjvkHA1EemKP426GDjFOg" name="[0..*] persons" sourceNode="_Ur5GkHA1EemKP426GDjFOg" targetNode="_X14WUHA1EemKP426GDjFOg">
143 <target xmi:type="ecore:EReference" href="socialnetwork.ecore#//SocialNetwork/persons"/>
144 <semanticElements xmi:type="ecore:EReference" href="socialnetwork.ecore#//SocialNetwork/persons"/>
145 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ZZkWo3A1EemKP426GDjFOg" description="_ZZkWoHA1EemKP426GDjFOg" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
146 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ZZkWpHA1EemKP426GDjFOg" showIcon="false">
147 <customFeatures>labelSize</customFeatures>
148 </centerLabelStyle>
149 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_ZZkWpXA1EemKP426GDjFOg" showIcon="false" labelColor="39,76,114">
150 <customFeatures>labelSize</customFeatures>
151 </endLabelStyle>
152 </ownedStyle>
153 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
154 </ownedDiagramElements>
155 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_f8eC8HA1EemKP426GDjFOg" name="[0..*] friends" sourceNode="_X14WUHA1EemKP426GDjFOg" targetNode="_X14WUHA1EemKP426GDjFOg">
156 <target xmi:type="ecore:EReference" href="socialnetwork.ecore#//Person/friends"/>
157 <semanticElements xmi:type="ecore:EReference" href="socialnetwork.ecore#//Person/friends"/>
158 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_erMusHA9EemKP426GDjFOg" routingStyle="manhattan" strokeColor="0,0,0">
159 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
160 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_erMusXA9EemKP426GDjFOg" showIcon="false"/>
161 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_erMusnA9EemKP426GDjFOg" labelSize="6" showIcon="false" labelColor="39,76,114"/>
162 </ownedStyle>
163 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
164 </ownedDiagramElements>
165 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_eULdMHA6EemKP426GDjFOg" sourceNode="_X14WUHA1EemKP426GDjFOg" targetNode="_X14WUHA1EemKP426GDjFOg" beginLabel="[0..*] children" endLabel="[0..2] parents">
166 <target xmi:type="ecore:EReference" href="socialnetwork.ecore#//Person/parents"/>
167 <semanticElements xmi:type="ecore:EReference" href="socialnetwork.ecore#//Person/children"/>
168 <semanticElements xmi:type="ecore:EReference" href="socialnetwork.ecore#//Person/parents"/>
169 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_eUMEQHA6EemKP426GDjFOg" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
170 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
171 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_eUMEQXA6EemKP426GDjFOg" showIcon="false"/>
172 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_eUMEQnA6EemKP426GDjFOg" showIcon="false"/>
173 </ownedStyle>
174 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
175 </ownedDiagramElements>
176 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
177 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_TbTBZHA1EemKP426GDjFOg"/>
178 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
179 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
180 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
181 <target xmi:type="ecore:EPackage" href="socialnetwork.ecore#/"/>
182 </diagram:DSemanticDiagram>
183</xmi:XMI>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/socialnetwork.ecore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/socialnetwork.ecore
new file mode 100644
index 00000000..cacf9921
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/socialnetwork.ecore
@@ -0,0 +1,17 @@
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="socialnetwork" nsURI="http://ecse.mcgill.ca/socialnetwork" nsPrefix="socialnetwork">
4 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"/>
5 <eClassifiers xsi:type="ecore:EClass" name="SocialNetwork">
6 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
7 defaultValueLiteral="SocialNetwork"/>
8 <eStructuralFeatures xsi:type="ecore:EReference" name="persons" upperBound="-1"
9 eType="#//Person" containment="true"/>
10 </eClassifiers>
11 <eClassifiers xsi:type="ecore:EClass" name="Person">
12 <eStructuralFeatures xsi:type="ecore:EReference" name="friends" upperBound="-1"
13 eType="#//Person"/>
14 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
15 defaultValueLiteral="Name"/>
16 </eClassifiers>
17</ecore:EPackage>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/socialnetwork.genmodel b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/socialnetwork.genmodel
new file mode 100644
index 00000000..c9515653
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/socialnetwork.genmodel
@@ -0,0 +1,21 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<genmodel:GenModel 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" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
4 modelDirectory="/SocialNetwork_plugin/encore_gen" creationIcons="false"
5 editDirectory="/ca.mcgill.ecse.socialnetwork.edit/src-gen" editorDirectory="/ca.mcgill.ecse.socialnetwork.editor/src-gen"
6 modelPluginID="SocialNetwork_plugin" modelName="Socialnetwork" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
7 codeFormatting="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0"
8 copyrightFields="false" operationReflection="true" importOrganizing="true">
9 <foreignModel>socialnetwork.ecore</foreignModel>
10 <testsDirectory xsi:nil="true"/>
11 <genPackages prefix="Socialnetwork" disposableProviderFactory="true" ecorePackage="socialnetwork.ecore#/">
12 <genClasses ecoreClass="socialnetwork.ecore#//SocialNetwork">
13 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute socialnetwork.ecore#//SocialNetwork/name"/>
14 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference socialnetwork.ecore#//SocialNetwork/persons"/>
15 </genClasses>
16 <genClasses ecoreClass="socialnetwork.ecore#//Person">
17 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference socialnetwork.ecore#//Person/friends"/>
18 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute socialnetwork.ecore#//Person/name"/>
19 </genClasses>
20 </genPackages>
21</genmodel:GenModel>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/200_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/200_nodes.jpg
new file mode 100644
index 00000000..a35c291b
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/200_nodes.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/220_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/220_nodes.jpg
new file mode 100644
index 00000000..4d41dff7
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/220_nodes.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/260_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/260_nodes.jpg
new file mode 100644
index 00000000..b16cdfb2
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/260_nodes.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/280_nodes.jpg b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/280_nodes.jpg
new file mode 100644
index 00000000..16c0ee23
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/280_nodes.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/output.txt b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/output.txt
new file mode 100644
index 00000000..35158e20
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/output.txt
@@ -0,0 +1,300 @@
11
29
37
40
54
66
716
80
92
104
1117
1220
131
145
152
163
1711
186
194
200
212
221
233
245
259
2613
2711
280
291
3010
313
320
331
341
350
3617
370
384
392
400
411
4210
4310
440
4524
469
470
4814
491
5011
512
5217
533
543
553
560
573
581
593
602
612
621
630
643
656
663
6716
683
6910
706
716
726
7311
746
7510
7620
771
784
7913
800
810
823
832
840
8512
860
870
8822
894
900
910
9220
931
9410
959
9611
975
9827
991
1003
1019
1020
10323
10410
1059
10623
1070
1083
1097
1102
1110
1129
1133
1140
11512
11611
1177
1186
1199
1202
1210
1223
1234
1243
1259
1263
1270
1287
1292
1301
1319
1321
13311
1346
1355
13616
1370
13819
13914
1409
14113
1422
1438
1440
1456
1461
1471
1482
1490
1503
15115
1523
1530
1543
15517
1561
15715
1585
1591
16021
1618
1622
1637
1643
16516
16611
1671
1685
1691
1705
1711
1726
1733
17416
1756
17617
1773
1785
1797
1802
1819
1822
1831
18411
1851
1860
1873
1885
1896
1902
1915
1921
1934
1949
1950
19611
1971
19810
19913
2006
2012
2021
2033
2044
2050
2061
2072
20810
20912
2103
2113
2123
2130
2142
2154
2162
21718
2183
2198
2207
2215
2223
22316
2241
2254
2268
22715
2281
22911
23015
2311
2328
2337
2341
2352
2360
2379
2385
2392
2401
2413
2426
2434
2448
2453
24612
2474
24821
2499
2502
2513
2522
2531
2543
25511
2562
2579
2580
25910
2606
2611
2622
2630
2648
2655
2662
2673
2688
2691
27013
2718
2722
2732
27411
2754
27621
2776
2785
2790
2808
2818
28212
2830
2840
2854
2861
28719
2885
2893
2901
2913
29212
2932
2946
29511
2968
2978
2982
29918
3000
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/plot_distribution.m b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/plot_distribution.m
new file mode 100644
index 00000000..4c67a191
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/model/statistics/plot_distribution.m
@@ -0,0 +1,11 @@
1clear;
2clc;
3
4matrix = load('-ascii', "output.txt");
5hist(matrix,unique(matrix));
6hold on;
7[a,b] = hist(matrix,unique(matrix))
8plot(b, a)
9hold off;
10sum(matrix)
11average = sum(matrix) / length(matrix) \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/output/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/output/.gitignore
new file mode 100644
index 00000000..17126b28
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/output/.gitignore
@@ -0,0 +1,4 @@
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/plugin.properties b/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.properties
new file mode 100644
index 00000000..a6a0df71
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.properties
@@ -0,0 +1,4 @@
1#
2
3pluginName = SocialNetwork_plugin
4providerName = www.example.org
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml b/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml
new file mode 100644
index 00000000..86211808
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml
@@ -0,0 +1,25 @@
1<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.0"?><!--
2--><plugin>
3 <extension point="org.eclipse.emf.ecore.generated_package">
4 <!-- @generated socialnetwork -->
5 <package class="socialnetwork.SocialnetworkPackage" genModel="model/socialnetwork.genmodel" uri="http://ecse.mcgill.ca/socialnetwork"/>
6 </extension>
7 <extension id="ca.mcgill.ecse.socialnetwork.plugin.Queries" point="org.eclipse.viatra.query.runtime.queryspecification">
8 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:ca.mcgill.ecse.socialnetwork.plugin.Queries" id="ca.mcgill.ecse.socialnetwork.plugin.Queries">
9 <query-specification fqn="ca.mcgill.ecse.socialnetwork.plugin.singleFriendship"/>
10 <query-specification fqn="ca.mcgill.ecse.socialnetwork.plugin.noFriend"/>
11 <query-specification fqn="ca.mcgill.ecse.socialnetwork.plugin.selfFriend"/>
12 <query-specification fqn="ca.mcgill.ecse.socialnetwork.plugin.friendship"/>
13 </group>
14 </extension>
15 <extension id="queries.Ecore" point="org.eclipse.viatra.query.runtime.queryspecification">
16 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:queries.Ecore" id="queries.Ecore">
17 <query-specification fqn="queries.directSupertype"/>
18 <query-specification fqn="queries.loopInInheritence"/>
19 <query-specification fqn="queries.opposite"/>
20 <query-specification fqn="queries.oppositeDifferentClass"/>
21 <query-specification fqn="queries.nonSymmetricOpposite"/>
22 <query-specification fqn="queries.superTypes"/>
23 </group>
24 </extension>
25</plugin>
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/queries/queries/Ecore.vql b/Metrics/Metrics-Calculation/SocialNetwork_plugin/queries/queries/Ecore.vql
new file mode 100644
index 00000000..9ddb64c9
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/queries/queries/Ecore.vql
@@ -0,0 +1,33 @@
1package queries
2
3import epackage "http://www.eclipse.org/emf/2002/Ecore"
4
5pattern directSupertype(a: EClass, b:EClass) {
6 EClass.eSuperTypes(a,b);
7}
8
9@Constraint(key={a}, severity="error", message="error")
10pattern loopInInheritence(a: EClass) {
11 find directSupertype+(a,a);
12}
13
14pattern opposite(a:EReference, b: EReference) {
15 EReference.eOpposite(a,b);
16}
17@Constraint(key={a}, severity="error", message="error")
18pattern oppositeDifferentClass(a:EReference) {
19 EReference.eOpposite(a,b);
20 EReference.eContainingClass(a,aContaining);
21 EReference.eType(b,bTarget);
22 aContaining != bTarget;
23}
24
25@Constraint(key={a}, severity="error", message="error")
26pattern nonSymmetricOpposite(a:EReference, b:EReference) {
27 find opposite(a,b);
28 neg find opposite(b,a);
29}
30
31pattern superTypes(c1:EClass, c2:EClass){
32 EClass.eSuperTypes(c1,c2);
33}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/ca/mcgill/ecse/socialnetwork/plugin/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/ca/mcgill/ecse/socialnetwork/plugin/.gitignore
new file mode 100644
index 00000000..f2558cf5
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/ca/mcgill/ecse/socialnetwork/plugin/.gitignore
@@ -0,0 +1,10 @@
1/.Friendship.java._trace
2/.NoFriend.java._trace
3/.Queries.java._trace
4/.SelfFriend.java._trace
5/.SingleFriendship.java._trace
6/Friendship.java
7/NoFriend.java
8/Queries.java
9/SelfFriend.java
10/SingleFriendship.java
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/constraints/ecore/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/constraints/ecore/.gitignore
new file mode 100644
index 00000000..c42ca056
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/constraints/ecore/.gitignore
@@ -0,0 +1,8 @@
1/.Ecore_pattern.java._trace
2/.MoreThenFiveSuperTypes.java._trace
3/.DirectSupertype.java._trace
4/.Ecore.java._trace
5/.LoopInInheritence.java._trace
6/.NonSymmetricOpposite.java._trace
7/.Opposite.java._trace
8/.OppositeDifferentClass.java._trace
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/ecore/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/ecore/.gitignore
new file mode 100644
index 00000000..c42ca056
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/ecore/.gitignore
@@ -0,0 +1,8 @@
1/.Ecore_pattern.java._trace
2/.MoreThenFiveSuperTypes.java._trace
3/.DirectSupertype.java._trace
4/.Ecore.java._trace
5/.LoopInInheritence.java._trace
6/.NonSymmetricOpposite.java._trace
7/.Opposite.java._trace
8/.OppositeDifferentClass.java._trace
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..e9d711d4
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/.gitignore
@@ -0,0 +1,9 @@
1/.Ecore_pattern.java._trace
2/.MoreThenFiveSuperTypes.java._trace
3/.DirectSupertype.java._trace
4/.Ecore.java._trace
5/.LoopInInheritence.java._trace
6/.NonSymmetricOpposite.java._trace
7/.Opposite.java._trace
8/.OppositeDifferentClass.java._trace
9/.SuperTypes.java._trace
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/DirectSupertype.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/DirectSupertype.java
new file mode 100644
index 00000000..a557d865
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/DirectSupertype.java
@@ -0,0 +1,703 @@
1/**
2 * Generated from platform:/resource/SocialNetwork_plugin/queries/queries/Ecore.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.basicdeferred.Equality;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
33import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
36import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
37import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
38import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
39
40/**
41 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
42 *
43 * <p>Original source:
44 * <code><pre>
45 * pattern directSupertype(a: EClass, b:EClass) {
46 * EClass.eSuperTypes(a,b);
47 * }
48 * </pre></code>
49 *
50 * @see Matcher
51 * @see Match
52 *
53 */
54@SuppressWarnings("all")
55public final class DirectSupertype extends BaseGeneratedEMFQuerySpecification<DirectSupertype.Matcher> {
56 /**
57 * Pattern-specific match representation of the queries.directSupertype pattern,
58 * to be used in conjunction with {@link Matcher}.
59 *
60 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
61 * Each instance is a (possibly partial) substitution of pattern parameters,
62 * usable to represent a match of the pattern in the result of a query,
63 * or to specify the bound (fixed) input parameters when issuing a query.
64 *
65 * @see Matcher
66 *
67 */
68 public static abstract class Match extends BasePatternMatch {
69 private EClass fA;
70
71 private EClass fB;
72
73 private static List<String> parameterNames = makeImmutableList("a", "b");
74
75 private Match(final EClass pA, final EClass pB) {
76 this.fA = pA;
77 this.fB = pB;
78 }
79
80 @Override
81 public Object get(final String parameterName) {
82 switch(parameterName) {
83 case "a": return this.fA;
84 case "b": return this.fB;
85 default: return null;
86 }
87 }
88
89 @Override
90 public Object get(final int index) {
91 switch(index) {
92 case 0: return this.fA;
93 case 1: return this.fB;
94 default: return null;
95 }
96 }
97
98 public EClass getA() {
99 return this.fA;
100 }
101
102 public EClass getB() {
103 return this.fB;
104 }
105
106 @Override
107 public boolean set(final String parameterName, final Object newValue) {
108 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
109 if ("a".equals(parameterName) ) {
110 this.fA = (EClass) newValue;
111 return true;
112 }
113 if ("b".equals(parameterName) ) {
114 this.fB = (EClass) newValue;
115 return true;
116 }
117 return false;
118 }
119
120 public void setA(final EClass pA) {
121 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
122 this.fA = pA;
123 }
124
125 public void setB(final EClass pB) {
126 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
127 this.fB = pB;
128 }
129
130 @Override
131 public String patternName() {
132 return "queries.directSupertype";
133 }
134
135 @Override
136 public List<String> parameterNames() {
137 return DirectSupertype.Match.parameterNames;
138 }
139
140 @Override
141 public Object[] toArray() {
142 return new Object[]{fA, fB};
143 }
144
145 @Override
146 public DirectSupertype.Match toImmutable() {
147 return isMutable() ? newMatch(fA, fB) : this;
148 }
149
150 @Override
151 public String prettyPrint() {
152 StringBuilder result = new StringBuilder();
153 result.append("\"a\"=" + prettyPrintValue(fA) + ", ");
154 result.append("\"b\"=" + prettyPrintValue(fB));
155 return result.toString();
156 }
157
158 @Override
159 public int hashCode() {
160 return Objects.hash(fA, fB);
161 }
162
163 @Override
164 public boolean equals(final Object obj) {
165 if (this == obj)
166 return true;
167 if (obj == null) {
168 return false;
169 }
170 if ((obj instanceof DirectSupertype.Match)) {
171 DirectSupertype.Match other = (DirectSupertype.Match) obj;
172 return Objects.equals(fA, other.fA) && Objects.equals(fB, other.fB);
173 } else {
174 // this should be infrequent
175 if (!(obj instanceof IPatternMatch)) {
176 return false;
177 }
178 IPatternMatch otherSig = (IPatternMatch) obj;
179 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
180 }
181 }
182
183 @Override
184 public DirectSupertype specification() {
185 return DirectSupertype.instance();
186 }
187
188 /**
189 * Returns an empty, mutable match.
190 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
191 *
192 * @return the empty match.
193 *
194 */
195 public static DirectSupertype.Match newEmptyMatch() {
196 return new Mutable(null, null);
197 }
198
199 /**
200 * Returns a mutable (partial) match.
201 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
202 *
203 * @param pA the fixed value of pattern parameter a, or null if not bound.
204 * @param pB the fixed value of pattern parameter b, or null if not bound.
205 * @return the new, mutable (partial) match object.
206 *
207 */
208 public static DirectSupertype.Match newMutableMatch(final EClass pA, final EClass pB) {
209 return new Mutable(pA, pB);
210 }
211
212 /**
213 * Returns a new (partial) match.
214 * This can be used e.g. to call the matcher with a partial match.
215 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
216 * @param pA the fixed value of pattern parameter a, or null if not bound.
217 * @param pB the fixed value of pattern parameter b, or null if not bound.
218 * @return the (partial) match object.
219 *
220 */
221 public static DirectSupertype.Match newMatch(final EClass pA, final EClass pB) {
222 return new Immutable(pA, pB);
223 }
224
225 private static final class Mutable extends DirectSupertype.Match {
226 Mutable(final EClass pA, final EClass pB) {
227 super(pA, pB);
228 }
229
230 @Override
231 public boolean isMutable() {
232 return true;
233 }
234 }
235
236 private static final class Immutable extends DirectSupertype.Match {
237 Immutable(final EClass pA, final EClass pB) {
238 super(pA, pB);
239 }
240
241 @Override
242 public boolean isMutable() {
243 return false;
244 }
245 }
246 }
247
248 /**
249 * Generated pattern matcher API of the queries.directSupertype pattern,
250 * providing pattern-specific query methods.
251 *
252 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
253 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
254 *
255 * <p>Matches of the pattern will be represented as {@link Match}.
256 *
257 * <p>Original source:
258 * <code><pre>
259 * pattern directSupertype(a: EClass, b:EClass) {
260 * EClass.eSuperTypes(a,b);
261 * }
262 * </pre></code>
263 *
264 * @see Match
265 * @see DirectSupertype
266 *
267 */
268 public static class Matcher extends BaseMatcher<DirectSupertype.Match> {
269 /**
270 * Initializes the pattern matcher within an existing VIATRA Query engine.
271 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
272 *
273 * @param engine the existing VIATRA Query engine in which this matcher will be created.
274 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
275 *
276 */
277 public static DirectSupertype.Matcher on(final ViatraQueryEngine engine) {
278 // check if matcher already exists
279 Matcher matcher = engine.getExistingMatcher(querySpecification());
280 if (matcher == null) {
281 matcher = (Matcher)engine.getMatcher(querySpecification());
282 }
283 return matcher;
284 }
285
286 /**
287 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
288 * @return an initialized matcher
289 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
290 *
291 */
292 public static DirectSupertype.Matcher create() {
293 return new Matcher();
294 }
295
296 private static final int POSITION_A = 0;
297
298 private static final int POSITION_B = 1;
299
300 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(DirectSupertype.Matcher.class);
301
302 /**
303 * Initializes the pattern matcher within an existing VIATRA Query engine.
304 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
305 *
306 * @param engine the existing VIATRA Query engine in which this matcher will be created.
307 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
308 *
309 */
310 private Matcher() {
311 super(querySpecification());
312 }
313
314 /**
315 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
316 * @param pA the fixed value of pattern parameter a, or null if not bound.
317 * @param pB the fixed value of pattern parameter b, or null if not bound.
318 * @return matches represented as a Match object.
319 *
320 */
321 public Collection<DirectSupertype.Match> getAllMatches(final EClass pA, final EClass pB) {
322 return rawStreamAllMatches(new Object[]{pA, pB}).collect(Collectors.toSet());
323 }
324
325 /**
326 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
327 * </p>
328 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
329 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
330 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
331 * @param pA the fixed value of pattern parameter a, or null if not bound.
332 * @param pB the fixed value of pattern parameter b, or null if not bound.
333 * @return a stream of matches represented as a Match object.
334 *
335 */
336 public Stream<DirectSupertype.Match> streamAllMatches(final EClass pA, final EClass pB) {
337 return rawStreamAllMatches(new Object[]{pA, pB});
338 }
339
340 /**
341 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
342 * Neither determinism nor randomness of selection is guaranteed.
343 * @param pA the fixed value of pattern parameter a, or null if not bound.
344 * @param pB the fixed value of pattern parameter b, or null if not bound.
345 * @return a match represented as a Match object, or null if no match is found.
346 *
347 */
348 public Optional<DirectSupertype.Match> getOneArbitraryMatch(final EClass pA, final EClass pB) {
349 return rawGetOneArbitraryMatch(new Object[]{pA, pB});
350 }
351
352 /**
353 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
354 * under any possible substitution of the unspecified parameters (if any).
355 * @param pA the fixed value of pattern parameter a, or null if not bound.
356 * @param pB the fixed value of pattern parameter b, or null if not bound.
357 * @return true if the input is a valid (partial) match of the pattern.
358 *
359 */
360 public boolean hasMatch(final EClass pA, final EClass pB) {
361 return rawHasMatch(new Object[]{pA, pB});
362 }
363
364 /**
365 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
366 * @param pA the fixed value of pattern parameter a, or null if not bound.
367 * @param pB the fixed value of pattern parameter b, or null if not bound.
368 * @return the number of pattern matches found.
369 *
370 */
371 public int countMatches(final EClass pA, final EClass pB) {
372 return rawCountMatches(new Object[]{pA, pB});
373 }
374
375 /**
376 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
377 * Neither determinism nor randomness of selection is guaranteed.
378 * @param pA the fixed value of pattern parameter a, or null if not bound.
379 * @param pB the fixed value of pattern parameter b, or null if not bound.
380 * @param processor the action that will process the selected match.
381 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
382 *
383 */
384 public boolean forOneArbitraryMatch(final EClass pA, final EClass pB, final Consumer<? super DirectSupertype.Match> processor) {
385 return rawForOneArbitraryMatch(new Object[]{pA, pB}, processor);
386 }
387
388 /**
389 * Returns a new (partial) match.
390 * This can be used e.g. to call the matcher with a partial match.
391 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
392 * @param pA the fixed value of pattern parameter a, or null if not bound.
393 * @param pB the fixed value of pattern parameter b, or null if not bound.
394 * @return the (partial) match object.
395 *
396 */
397 public DirectSupertype.Match newMatch(final EClass pA, final EClass pB) {
398 return DirectSupertype.Match.newMatch(pA, pB);
399 }
400
401 /**
402 * Retrieve the set of values that occur in matches for a.
403 * @return the Set of all values or empty set if there are no matches
404 *
405 */
406 protected Stream<EClass> rawStreamAllValuesOfa(final Object[] parameters) {
407 return rawStreamAllValues(POSITION_A, parameters).map(EClass.class::cast);
408 }
409
410 /**
411 * Retrieve the set of values that occur in matches for a.
412 * @return the Set of all values or empty set if there are no matches
413 *
414 */
415 public Set<EClass> getAllValuesOfa() {
416 return rawStreamAllValuesOfa(emptyArray()).collect(Collectors.toSet());
417 }
418
419 /**
420 * Retrieve the set of values that occur in matches for a.
421 * @return the Set of all values or empty set if there are no matches
422 *
423 */
424 public Stream<EClass> streamAllValuesOfa() {
425 return rawStreamAllValuesOfa(emptyArray());
426 }
427
428 /**
429 * Retrieve the set of values that occur in matches for a.
430 * </p>
431 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
432 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
433 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
434 *
435 * @return the Stream of all values or empty set if there are no matches
436 *
437 */
438 public Stream<EClass> streamAllValuesOfa(final DirectSupertype.Match partialMatch) {
439 return rawStreamAllValuesOfa(partialMatch.toArray());
440 }
441
442 /**
443 * Retrieve the set of values that occur in matches for a.
444 * </p>
445 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
446 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
447 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
448 *
449 * @return the Stream of all values or empty set if there are no matches
450 *
451 */
452 public Stream<EClass> streamAllValuesOfa(final EClass pB) {
453 return rawStreamAllValuesOfa(new Object[]{null, pB});
454 }
455
456 /**
457 * Retrieve the set of values that occur in matches for a.
458 * @return the Set of all values or empty set if there are no matches
459 *
460 */
461 public Set<EClass> getAllValuesOfa(final DirectSupertype.Match partialMatch) {
462 return rawStreamAllValuesOfa(partialMatch.toArray()).collect(Collectors.toSet());
463 }
464
465 /**
466 * Retrieve the set of values that occur in matches for a.
467 * @return the Set of all values or empty set if there are no matches
468 *
469 */
470 public Set<EClass> getAllValuesOfa(final EClass pB) {
471 return rawStreamAllValuesOfa(new Object[]{null, pB}).collect(Collectors.toSet());
472 }
473
474 /**
475 * Retrieve the set of values that occur in matches for b.
476 * @return the Set of all values or empty set if there are no matches
477 *
478 */
479 protected Stream<EClass> rawStreamAllValuesOfb(final Object[] parameters) {
480 return rawStreamAllValues(POSITION_B, parameters).map(EClass.class::cast);
481 }
482
483 /**
484 * Retrieve the set of values that occur in matches for b.
485 * @return the Set of all values or empty set if there are no matches
486 *
487 */
488 public Set<EClass> getAllValuesOfb() {
489 return rawStreamAllValuesOfb(emptyArray()).collect(Collectors.toSet());
490 }
491
492 /**
493 * Retrieve the set of values that occur in matches for b.
494 * @return the Set of all values or empty set if there are no matches
495 *
496 */
497 public Stream<EClass> streamAllValuesOfb() {
498 return rawStreamAllValuesOfb(emptyArray());
499 }
500
501 /**
502 * Retrieve the set of values that occur in matches for b.
503 * </p>
504 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
505 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
506 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
507 *
508 * @return the Stream of all values or empty set if there are no matches
509 *
510 */
511 public Stream<EClass> streamAllValuesOfb(final DirectSupertype.Match partialMatch) {
512 return rawStreamAllValuesOfb(partialMatch.toArray());
513 }
514
515 /**
516 * Retrieve the set of values that occur in matches for b.
517 * </p>
518 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
519 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
520 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
521 *
522 * @return the Stream of all values or empty set if there are no matches
523 *
524 */
525 public Stream<EClass> streamAllValuesOfb(final EClass pA) {
526 return rawStreamAllValuesOfb(new Object[]{pA, null});
527 }
528
529 /**
530 * Retrieve the set of values that occur in matches for b.
531 * @return the Set of all values or empty set if there are no matches
532 *
533 */
534 public Set<EClass> getAllValuesOfb(final DirectSupertype.Match partialMatch) {
535 return rawStreamAllValuesOfb(partialMatch.toArray()).collect(Collectors.toSet());
536 }
537
538 /**
539 * Retrieve the set of values that occur in matches for b.
540 * @return the Set of all values or empty set if there are no matches
541 *
542 */
543 public Set<EClass> getAllValuesOfb(final EClass pA) {
544 return rawStreamAllValuesOfb(new Object[]{pA, null}).collect(Collectors.toSet());
545 }
546
547 @Override
548 protected DirectSupertype.Match tupleToMatch(final Tuple t) {
549 try {
550 return DirectSupertype.Match.newMatch((EClass) t.get(POSITION_A), (EClass) t.get(POSITION_B));
551 } catch(ClassCastException e) {
552 LOGGER.error("Element(s) in tuple not properly typed!",e);
553 return null;
554 }
555 }
556
557 @Override
558 protected DirectSupertype.Match arrayToMatch(final Object[] match) {
559 try {
560 return DirectSupertype.Match.newMatch((EClass) match[POSITION_A], (EClass) match[POSITION_B]);
561 } catch(ClassCastException e) {
562 LOGGER.error("Element(s) in array not properly typed!",e);
563 return null;
564 }
565 }
566
567 @Override
568 protected DirectSupertype.Match arrayToMatchMutable(final Object[] match) {
569 try {
570 return DirectSupertype.Match.newMutableMatch((EClass) match[POSITION_A], (EClass) match[POSITION_B]);
571 } catch(ClassCastException e) {
572 LOGGER.error("Element(s) in array not properly typed!",e);
573 return null;
574 }
575 }
576
577 /**
578 * @return the singleton instance of the query specification of this pattern
579 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
580 *
581 */
582 public static IQuerySpecification<DirectSupertype.Matcher> querySpecification() {
583 return DirectSupertype.instance();
584 }
585 }
586
587 private DirectSupertype() {
588 super(GeneratedPQuery.INSTANCE);
589 }
590
591 /**
592 * @return the singleton instance of the query specification
593 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
594 *
595 */
596 public static DirectSupertype instance() {
597 try{
598 return LazyHolder.INSTANCE;
599 } catch (ExceptionInInitializerError err) {
600 throw processInitializerError(err);
601 }
602 }
603
604 @Override
605 protected DirectSupertype.Matcher instantiate(final ViatraQueryEngine engine) {
606 return DirectSupertype.Matcher.on(engine);
607 }
608
609 @Override
610 public DirectSupertype.Matcher instantiate() {
611 return DirectSupertype.Matcher.create();
612 }
613
614 @Override
615 public DirectSupertype.Match newEmptyMatch() {
616 return DirectSupertype.Match.newEmptyMatch();
617 }
618
619 @Override
620 public DirectSupertype.Match newMatch(final Object... parameters) {
621 return DirectSupertype.Match.newMatch((org.eclipse.emf.ecore.EClass) parameters[0], (org.eclipse.emf.ecore.EClass) parameters[1]);
622 }
623
624 /**
625 * Inner class allowing the singleton instance of {@link DirectSupertype} to be created
626 * <b>not</b> at the class load time of the outer class,
627 * but rather at the first call to {@link DirectSupertype#instance()}.
628 *
629 * <p> This workaround is required e.g. to support recursion.
630 *
631 */
632 private static class LazyHolder {
633 private static final DirectSupertype INSTANCE = new DirectSupertype();
634
635 /**
636 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
637 * This initialization order is required to support indirect recursion.
638 *
639 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
640 *
641 */
642 private static final Object STATIC_INITIALIZER = ensureInitialized();
643
644 public static Object ensureInitialized() {
645 INSTANCE.ensureInitializedInternal();
646 return null;
647 }
648 }
649
650 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
651 private static final DirectSupertype.GeneratedPQuery INSTANCE = new GeneratedPQuery();
652
653 private final PParameter parameter_a = new PParameter("a", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT);
654
655 private final PParameter parameter_b = new PParameter("b", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT);
656
657 private final List<PParameter> parameters = Arrays.asList(parameter_a, parameter_b);
658
659 private GeneratedPQuery() {
660 super(PVisibility.PUBLIC);
661 }
662
663 @Override
664 public String getFullyQualifiedName() {
665 return "queries.directSupertype";
666 }
667
668 @Override
669 public List<String> getParameterNames() {
670 return Arrays.asList("a","b");
671 }
672
673 @Override
674 public List<PParameter> getParameters() {
675 return parameters;
676 }
677
678 @Override
679 public Set<PBody> doGetContainedBodies() {
680 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
681 Set<PBody> bodies = new LinkedHashSet<>();
682 {
683 PBody body = new PBody(this);
684 PVariable var_a = body.getOrCreateVariableByName("a");
685 PVariable var_b = body.getOrCreateVariableByName("b");
686 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
687 new TypeConstraint(body, Tuples.flatTupleOf(var_b), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
688 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
689 new ExportedParameter(body, var_a, parameter_a),
690 new ExportedParameter(body, var_b, parameter_b)
691 ));
692 // EClass.eSuperTypes(a,b)
693 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
694 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
695 new TypeConstraint(body, Tuples.flatTupleOf(var_a, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass", "eSuperTypes")));
696 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
697 new Equality(body, var__virtual_0_, var_b);
698 bodies.add(body);
699 }
700 return bodies;
701 }
702 }
703}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore.java
new file mode 100644
index 00000000..adfa5cf8
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore.java
@@ -0,0 +1,108 @@
1/**
2 * Generated from platform:/resource/SocialNetwork_plugin/queries/queries/Ecore.vql
3 */
4package queries;
5
6import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
7import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup;
8import queries.DirectSupertype;
9import queries.LoopInInheritence;
10import queries.NonSymmetricOpposite;
11import queries.Opposite;
12import queries.OppositeDifferentClass;
13import queries.SuperTypes;
14
15/**
16 * A pattern group formed of all public patterns defined in Ecore.vql.
17 *
18 * <p>Use the static instance as any {@link interface org.eclipse.viatra.query.runtime.api.IQueryGroup}, to conveniently prepare
19 * a VIATRA Query engine for matching all patterns originally defined in file Ecore.vql,
20 * in order to achieve better performance than one-by-one on-demand matcher initialization.
21 *
22 * <p> From package queries, the group contains the definition of the following patterns: <ul>
23 * <li>directSupertype</li>
24 * <li>loopInInheritence</li>
25 * <li>opposite</li>
26 * <li>oppositeDifferentClass</li>
27 * <li>nonSymmetricOpposite</li>
28 * <li>superTypes</li>
29 * </ul>
30 *
31 * @see IQueryGroup
32 *
33 */
34@SuppressWarnings("all")
35public final class Ecore extends BaseGeneratedPatternGroup {
36 /**
37 * Access the pattern group.
38 *
39 * @return the singleton instance of the group
40 * @throws ViatraQueryRuntimeException if there was an error loading the generated code of pattern specifications
41 *
42 */
43 public static Ecore instance() {
44 if (INSTANCE == null) {
45 INSTANCE = new Ecore();
46 }
47 return INSTANCE;
48 }
49
50 private static Ecore INSTANCE;
51
52 private Ecore() {
53 querySpecifications.add(DirectSupertype.instance());
54 querySpecifications.add(LoopInInheritence.instance());
55 querySpecifications.add(Opposite.instance());
56 querySpecifications.add(OppositeDifferentClass.instance());
57 querySpecifications.add(NonSymmetricOpposite.instance());
58 querySpecifications.add(SuperTypes.instance());
59 }
60
61 public DirectSupertype getDirectSupertype() {
62 return DirectSupertype.instance();
63 }
64
65 public DirectSupertype.Matcher getDirectSupertype(final ViatraQueryEngine engine) {
66 return DirectSupertype.Matcher.on(engine);
67 }
68
69 public LoopInInheritence getLoopInInheritence() {
70 return LoopInInheritence.instance();
71 }
72
73 public LoopInInheritence.Matcher getLoopInInheritence(final ViatraQueryEngine engine) {
74 return LoopInInheritence.Matcher.on(engine);
75 }
76
77 public Opposite getOpposite() {
78 return Opposite.instance();
79 }
80
81 public Opposite.Matcher getOpposite(final ViatraQueryEngine engine) {
82 return Opposite.Matcher.on(engine);
83 }
84
85 public OppositeDifferentClass getOppositeDifferentClass() {
86 return OppositeDifferentClass.instance();
87 }
88
89 public OppositeDifferentClass.Matcher getOppositeDifferentClass(final ViatraQueryEngine engine) {
90 return OppositeDifferentClass.Matcher.on(engine);
91 }
92
93 public NonSymmetricOpposite getNonSymmetricOpposite() {
94 return NonSymmetricOpposite.instance();
95 }
96
97 public NonSymmetricOpposite.Matcher getNonSymmetricOpposite(final ViatraQueryEngine engine) {
98 return NonSymmetricOpposite.Matcher.on(engine);
99 }
100
101 public SuperTypes getSuperTypes() {
102 return SuperTypes.instance();
103 }
104
105 public SuperTypes.Matcher getSuperTypes(final ViatraQueryEngine engine) {
106 return SuperTypes.Matcher.on(engine);
107 }
108}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/LoopInInheritence.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/LoopInInheritence.java
new file mode 100644
index 00000000..5212e3d2
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/LoopInInheritence.java
@@ -0,0 +1,558 @@
1/**
2 * Generated from platform:/resource/SocialNetwork_plugin/queries/queries/Ecore.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.matchers.backend.QueryEvaluationHint;
27import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
29import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
30import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryTransitiveClosure;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
37import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
39import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
40import queries.DirectSupertype;
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(key={a}, severity="error", message="error")
48 * pattern loopInInheritence(a: EClass) {
49 * find directSupertype+(a,a);
50 * }
51 * </pre></code>
52 *
53 * @see Matcher
54 * @see Match
55 *
56 */
57@SuppressWarnings("all")
58public final class LoopInInheritence extends BaseGeneratedEMFQuerySpecification<LoopInInheritence.Matcher> {
59 /**
60 * Pattern-specific match representation of the queries.loopInInheritence pattern,
61 * to be used in conjunction with {@link Matcher}.
62 *
63 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
64 * Each instance is a (possibly partial) substitution of pattern parameters,
65 * usable to represent a match of the pattern in the result of a query,
66 * or to specify the bound (fixed) input parameters when issuing a query.
67 *
68 * @see Matcher
69 *
70 */
71 public static abstract class Match extends BasePatternMatch {
72 private EClass fA;
73
74 private static List<String> parameterNames = makeImmutableList("a");
75
76 private Match(final EClass pA) {
77 this.fA = pA;
78 }
79
80 @Override
81 public Object get(final String parameterName) {
82 switch(parameterName) {
83 case "a": return this.fA;
84 default: return null;
85 }
86 }
87
88 @Override
89 public Object get(final int index) {
90 switch(index) {
91 case 0: return this.fA;
92 default: return null;
93 }
94 }
95
96 public EClass getA() {
97 return this.fA;
98 }
99
100 @Override
101 public boolean set(final String parameterName, final Object newValue) {
102 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
103 if ("a".equals(parameterName) ) {
104 this.fA = (EClass) newValue;
105 return true;
106 }
107 return false;
108 }
109
110 public void setA(final EClass pA) {
111 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
112 this.fA = pA;
113 }
114
115 @Override
116 public String patternName() {
117 return "queries.loopInInheritence";
118 }
119
120 @Override
121 public List<String> parameterNames() {
122 return LoopInInheritence.Match.parameterNames;
123 }
124
125 @Override
126 public Object[] toArray() {
127 return new Object[]{fA};
128 }
129
130 @Override
131 public LoopInInheritence.Match toImmutable() {
132 return isMutable() ? newMatch(fA) : this;
133 }
134
135 @Override
136 public String prettyPrint() {
137 StringBuilder result = new StringBuilder();
138 result.append("\"a\"=" + prettyPrintValue(fA));
139 return result.toString();
140 }
141
142 @Override
143 public int hashCode() {
144 return Objects.hash(fA);
145 }
146
147 @Override
148 public boolean equals(final Object obj) {
149 if (this == obj)
150 return true;
151 if (obj == null) {
152 return false;
153 }
154 if ((obj instanceof LoopInInheritence.Match)) {
155 LoopInInheritence.Match other = (LoopInInheritence.Match) obj;
156 return Objects.equals(fA, other.fA);
157 } else {
158 // this should be infrequent
159 if (!(obj instanceof IPatternMatch)) {
160 return false;
161 }
162 IPatternMatch otherSig = (IPatternMatch) obj;
163 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
164 }
165 }
166
167 @Override
168 public LoopInInheritence specification() {
169 return LoopInInheritence.instance();
170 }
171
172 /**
173 * Returns an empty, mutable match.
174 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
175 *
176 * @return the empty match.
177 *
178 */
179 public static LoopInInheritence.Match newEmptyMatch() {
180 return new Mutable(null);
181 }
182
183 /**
184 * Returns a mutable (partial) match.
185 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
186 *
187 * @param pA the fixed value of pattern parameter a, or null if not bound.
188 * @return the new, mutable (partial) match object.
189 *
190 */
191 public static LoopInInheritence.Match newMutableMatch(final EClass pA) {
192 return new Mutable(pA);
193 }
194
195 /**
196 * Returns a new (partial) match.
197 * This can be used e.g. to call the matcher with a partial match.
198 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
199 * @param pA the fixed value of pattern parameter a, or null if not bound.
200 * @return the (partial) match object.
201 *
202 */
203 public static LoopInInheritence.Match newMatch(final EClass pA) {
204 return new Immutable(pA);
205 }
206
207 private static final class Mutable extends LoopInInheritence.Match {
208 Mutable(final EClass pA) {
209 super(pA);
210 }
211
212 @Override
213 public boolean isMutable() {
214 return true;
215 }
216 }
217
218 private static final class Immutable extends LoopInInheritence.Match {
219 Immutable(final EClass pA) {
220 super(pA);
221 }
222
223 @Override
224 public boolean isMutable() {
225 return false;
226 }
227 }
228 }
229
230 /**
231 * Generated pattern matcher API of the queries.loopInInheritence pattern,
232 * providing pattern-specific query methods.
233 *
234 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
235 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
236 *
237 * <p>Matches of the pattern will be represented as {@link Match}.
238 *
239 * <p>Original source:
240 * <code><pre>
241 * {@literal @}Constraint(key={a}, severity="error", message="error")
242 * pattern loopInInheritence(a: EClass) {
243 * find directSupertype+(a,a);
244 * }
245 * </pre></code>
246 *
247 * @see Match
248 * @see LoopInInheritence
249 *
250 */
251 public static class Matcher extends BaseMatcher<LoopInInheritence.Match> {
252 /**
253 * Initializes the pattern matcher within an existing VIATRA Query engine.
254 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
255 *
256 * @param engine the existing VIATRA Query engine in which this matcher will be created.
257 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
258 *
259 */
260 public static LoopInInheritence.Matcher on(final ViatraQueryEngine engine) {
261 // check if matcher already exists
262 Matcher matcher = engine.getExistingMatcher(querySpecification());
263 if (matcher == null) {
264 matcher = (Matcher)engine.getMatcher(querySpecification());
265 }
266 return matcher;
267 }
268
269 /**
270 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
271 * @return an initialized matcher
272 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
273 *
274 */
275 public static LoopInInheritence.Matcher create() {
276 return new Matcher();
277 }
278
279 private static final int POSITION_A = 0;
280
281 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(LoopInInheritence.Matcher.class);
282
283 /**
284 * Initializes the pattern matcher within an existing VIATRA Query engine.
285 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
286 *
287 * @param engine the existing VIATRA Query engine in which this matcher will be created.
288 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
289 *
290 */
291 private Matcher() {
292 super(querySpecification());
293 }
294
295 /**
296 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
297 * @param pA the fixed value of pattern parameter a, or null if not bound.
298 * @return matches represented as a Match object.
299 *
300 */
301 public Collection<LoopInInheritence.Match> getAllMatches(final EClass pA) {
302 return rawStreamAllMatches(new Object[]{pA}).collect(Collectors.toSet());
303 }
304
305 /**
306 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
307 * </p>
308 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
309 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
310 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
311 * @param pA the fixed value of pattern parameter a, or null if not bound.
312 * @return a stream of matches represented as a Match object.
313 *
314 */
315 public Stream<LoopInInheritence.Match> streamAllMatches(final EClass pA) {
316 return rawStreamAllMatches(new Object[]{pA});
317 }
318
319 /**
320 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
321 * Neither determinism nor randomness of selection is guaranteed.
322 * @param pA the fixed value of pattern parameter a, or null if not bound.
323 * @return a match represented as a Match object, or null if no match is found.
324 *
325 */
326 public Optional<LoopInInheritence.Match> getOneArbitraryMatch(final EClass pA) {
327 return rawGetOneArbitraryMatch(new Object[]{pA});
328 }
329
330 /**
331 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
332 * under any possible substitution of the unspecified parameters (if any).
333 * @param pA the fixed value of pattern parameter a, or null if not bound.
334 * @return true if the input is a valid (partial) match of the pattern.
335 *
336 */
337 public boolean hasMatch(final EClass pA) {
338 return rawHasMatch(new Object[]{pA});
339 }
340
341 /**
342 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
343 * @param pA the fixed value of pattern parameter a, or null if not bound.
344 * @return the number of pattern matches found.
345 *
346 */
347 public int countMatches(final EClass pA) {
348 return rawCountMatches(new Object[]{pA});
349 }
350
351 /**
352 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
353 * Neither determinism nor randomness of selection is guaranteed.
354 * @param pA the fixed value of pattern parameter a, or null if not bound.
355 * @param processor the action that will process the selected match.
356 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
357 *
358 */
359 public boolean forOneArbitraryMatch(final EClass pA, final Consumer<? super LoopInInheritence.Match> processor) {
360 return rawForOneArbitraryMatch(new Object[]{pA}, processor);
361 }
362
363 /**
364 * Returns a new (partial) match.
365 * This can be used e.g. to call the matcher with a partial match.
366 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
367 * @param pA the fixed value of pattern parameter a, or null if not bound.
368 * @return the (partial) match object.
369 *
370 */
371 public LoopInInheritence.Match newMatch(final EClass pA) {
372 return LoopInInheritence.Match.newMatch(pA);
373 }
374
375 /**
376 * Retrieve the set of values that occur in matches for a.
377 * @return the Set of all values or empty set if there are no matches
378 *
379 */
380 protected Stream<EClass> rawStreamAllValuesOfa(final Object[] parameters) {
381 return rawStreamAllValues(POSITION_A, parameters).map(EClass.class::cast);
382 }
383
384 /**
385 * Retrieve the set of values that occur in matches for a.
386 * @return the Set of all values or empty set if there are no matches
387 *
388 */
389 public Set<EClass> getAllValuesOfa() {
390 return rawStreamAllValuesOfa(emptyArray()).collect(Collectors.toSet());
391 }
392
393 /**
394 * Retrieve the set of values that occur in matches for a.
395 * @return the Set of all values or empty set if there are no matches
396 *
397 */
398 public Stream<EClass> streamAllValuesOfa() {
399 return rawStreamAllValuesOfa(emptyArray());
400 }
401
402 @Override
403 protected LoopInInheritence.Match tupleToMatch(final Tuple t) {
404 try {
405 return LoopInInheritence.Match.newMatch((EClass) t.get(POSITION_A));
406 } catch(ClassCastException e) {
407 LOGGER.error("Element(s) in tuple not properly typed!",e);
408 return null;
409 }
410 }
411
412 @Override
413 protected LoopInInheritence.Match arrayToMatch(final Object[] match) {
414 try {
415 return LoopInInheritence.Match.newMatch((EClass) match[POSITION_A]);
416 } catch(ClassCastException e) {
417 LOGGER.error("Element(s) in array not properly typed!",e);
418 return null;
419 }
420 }
421
422 @Override
423 protected LoopInInheritence.Match arrayToMatchMutable(final Object[] match) {
424 try {
425 return LoopInInheritence.Match.newMutableMatch((EClass) match[POSITION_A]);
426 } catch(ClassCastException e) {
427 LOGGER.error("Element(s) in array not properly typed!",e);
428 return null;
429 }
430 }
431
432 /**
433 * @return the singleton instance of the query specification of this pattern
434 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
435 *
436 */
437 public static IQuerySpecification<LoopInInheritence.Matcher> querySpecification() {
438 return LoopInInheritence.instance();
439 }
440 }
441
442 private LoopInInheritence() {
443 super(GeneratedPQuery.INSTANCE);
444 }
445
446 /**
447 * @return the singleton instance of the query specification
448 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
449 *
450 */
451 public static LoopInInheritence instance() {
452 try{
453 return LazyHolder.INSTANCE;
454 } catch (ExceptionInInitializerError err) {
455 throw processInitializerError(err);
456 }
457 }
458
459 @Override
460 protected LoopInInheritence.Matcher instantiate(final ViatraQueryEngine engine) {
461 return LoopInInheritence.Matcher.on(engine);
462 }
463
464 @Override
465 public LoopInInheritence.Matcher instantiate() {
466 return LoopInInheritence.Matcher.create();
467 }
468
469 @Override
470 public LoopInInheritence.Match newEmptyMatch() {
471 return LoopInInheritence.Match.newEmptyMatch();
472 }
473
474 @Override
475 public LoopInInheritence.Match newMatch(final Object... parameters) {
476 return LoopInInheritence.Match.newMatch((org.eclipse.emf.ecore.EClass) parameters[0]);
477 }
478
479 /**
480 * Inner class allowing the singleton instance of {@link LoopInInheritence} to be created
481 * <b>not</b> at the class load time of the outer class,
482 * but rather at the first call to {@link LoopInInheritence#instance()}.
483 *
484 * <p> This workaround is required e.g. to support recursion.
485 *
486 */
487 private static class LazyHolder {
488 private static final LoopInInheritence INSTANCE = new LoopInInheritence();
489
490 /**
491 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
492 * This initialization order is required to support indirect recursion.
493 *
494 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
495 *
496 */
497 private static final Object STATIC_INITIALIZER = ensureInitialized();
498
499 public static Object ensureInitialized() {
500 INSTANCE.ensureInitializedInternal();
501 return null;
502 }
503 }
504
505 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
506 private static final LoopInInheritence.GeneratedPQuery INSTANCE = new GeneratedPQuery();
507
508 private final PParameter parameter_a = new PParameter("a", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT);
509
510 private final List<PParameter> parameters = Arrays.asList(parameter_a);
511
512 private GeneratedPQuery() {
513 super(PVisibility.PUBLIC);
514 }
515
516 @Override
517 public String getFullyQualifiedName() {
518 return "queries.loopInInheritence";
519 }
520
521 @Override
522 public List<String> getParameterNames() {
523 return Arrays.asList("a");
524 }
525
526 @Override
527 public List<PParameter> getParameters() {
528 return parameters;
529 }
530
531 @Override
532 public Set<PBody> doGetContainedBodies() {
533 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
534 Set<PBody> bodies = new LinkedHashSet<>();
535 {
536 PBody body = new PBody(this);
537 PVariable var_a = body.getOrCreateVariableByName("a");
538 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
539 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
540 new ExportedParameter(body, var_a, parameter_a)
541 ));
542 // find directSupertype+(a,a)
543 new BinaryTransitiveClosure(body, Tuples.flatTupleOf(var_a, var_a), DirectSupertype.instance().getInternalQueryRepresentation());
544 bodies.add(body);
545 }
546 {
547 PAnnotation annotation = new PAnnotation("Constraint");
548 annotation.addAttribute("key", Arrays.asList(new Object[] {
549 new ParameterReference("a")
550 }));
551 annotation.addAttribute("severity", "error");
552 annotation.addAttribute("message", "error");
553 addAnnotation(annotation);
554 }
555 return bodies;
556 }
557 }
558}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/NonSymmetricOpposite.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/NonSymmetricOpposite.java
new file mode 100644
index 00000000..c98014f5
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/NonSymmetricOpposite.java
@@ -0,0 +1,718 @@
1/**
2 * Generated from platform:/resource/SocialNetwork_plugin/queries/queries/Ecore.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.emf.ecore.EReference;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
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.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
41import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
42import queries.Opposite;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * {@literal @}Constraint(key={a}, severity="error", message="error")
50 * pattern nonSymmetricOpposite(a:EReference, b:EReference) {
51 * find opposite(a,b);
52 * neg find opposite(b,a);
53 * }
54 * </pre></code>
55 *
56 * @see Matcher
57 * @see Match
58 *
59 */
60@SuppressWarnings("all")
61public final class NonSymmetricOpposite extends BaseGeneratedEMFQuerySpecification<NonSymmetricOpposite.Matcher> {
62 /**
63 * Pattern-specific match representation of the queries.nonSymmetricOpposite pattern,
64 * to be used in conjunction with {@link Matcher}.
65 *
66 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
67 * Each instance is a (possibly partial) substitution of pattern parameters,
68 * usable to represent a match of the pattern in the result of a query,
69 * or to specify the bound (fixed) input parameters when issuing a query.
70 *
71 * @see Matcher
72 *
73 */
74 public static abstract class Match extends BasePatternMatch {
75 private EReference fA;
76
77 private EReference fB;
78
79 private static List<String> parameterNames = makeImmutableList("a", "b");
80
81 private Match(final EReference pA, final EReference pB) {
82 this.fA = pA;
83 this.fB = pB;
84 }
85
86 @Override
87 public Object get(final String parameterName) {
88 switch(parameterName) {
89 case "a": return this.fA;
90 case "b": return this.fB;
91 default: return null;
92 }
93 }
94
95 @Override
96 public Object get(final int index) {
97 switch(index) {
98 case 0: return this.fA;
99 case 1: return this.fB;
100 default: return null;
101 }
102 }
103
104 public EReference getA() {
105 return this.fA;
106 }
107
108 public EReference getB() {
109 return this.fB;
110 }
111
112 @Override
113 public boolean set(final String parameterName, final Object newValue) {
114 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
115 if ("a".equals(parameterName) ) {
116 this.fA = (EReference) newValue;
117 return true;
118 }
119 if ("b".equals(parameterName) ) {
120 this.fB = (EReference) newValue;
121 return true;
122 }
123 return false;
124 }
125
126 public void setA(final EReference pA) {
127 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
128 this.fA = pA;
129 }
130
131 public void setB(final EReference pB) {
132 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
133 this.fB = pB;
134 }
135
136 @Override
137 public String patternName() {
138 return "queries.nonSymmetricOpposite";
139 }
140
141 @Override
142 public List<String> parameterNames() {
143 return NonSymmetricOpposite.Match.parameterNames;
144 }
145
146 @Override
147 public Object[] toArray() {
148 return new Object[]{fA, fB};
149 }
150
151 @Override
152 public NonSymmetricOpposite.Match toImmutable() {
153 return isMutable() ? newMatch(fA, fB) : this;
154 }
155
156 @Override
157 public String prettyPrint() {
158 StringBuilder result = new StringBuilder();
159 result.append("\"a\"=" + prettyPrintValue(fA) + ", ");
160 result.append("\"b\"=" + prettyPrintValue(fB));
161 return result.toString();
162 }
163
164 @Override
165 public int hashCode() {
166 return Objects.hash(fA, fB);
167 }
168
169 @Override
170 public boolean equals(final Object obj) {
171 if (this == obj)
172 return true;
173 if (obj == null) {
174 return false;
175 }
176 if ((obj instanceof NonSymmetricOpposite.Match)) {
177 NonSymmetricOpposite.Match other = (NonSymmetricOpposite.Match) obj;
178 return Objects.equals(fA, other.fA) && Objects.equals(fB, other.fB);
179 } else {
180 // this should be infrequent
181 if (!(obj instanceof IPatternMatch)) {
182 return false;
183 }
184 IPatternMatch otherSig = (IPatternMatch) obj;
185 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
186 }
187 }
188
189 @Override
190 public NonSymmetricOpposite specification() {
191 return NonSymmetricOpposite.instance();
192 }
193
194 /**
195 * Returns an empty, mutable match.
196 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
197 *
198 * @return the empty match.
199 *
200 */
201 public static NonSymmetricOpposite.Match newEmptyMatch() {
202 return new Mutable(null, null);
203 }
204
205 /**
206 * Returns a mutable (partial) match.
207 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
208 *
209 * @param pA the fixed value of pattern parameter a, or null if not bound.
210 * @param pB the fixed value of pattern parameter b, or null if not bound.
211 * @return the new, mutable (partial) match object.
212 *
213 */
214 public static NonSymmetricOpposite.Match newMutableMatch(final EReference pA, final EReference pB) {
215 return new Mutable(pA, pB);
216 }
217
218 /**
219 * Returns a new (partial) match.
220 * This can be used e.g. to call the matcher with a partial match.
221 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
222 * @param pA the fixed value of pattern parameter a, or null if not bound.
223 * @param pB the fixed value of pattern parameter b, or null if not bound.
224 * @return the (partial) match object.
225 *
226 */
227 public static NonSymmetricOpposite.Match newMatch(final EReference pA, final EReference pB) {
228 return new Immutable(pA, pB);
229 }
230
231 private static final class Mutable extends NonSymmetricOpposite.Match {
232 Mutable(final EReference pA, final EReference pB) {
233 super(pA, pB);
234 }
235
236 @Override
237 public boolean isMutable() {
238 return true;
239 }
240 }
241
242 private static final class Immutable extends NonSymmetricOpposite.Match {
243 Immutable(final EReference pA, final EReference pB) {
244 super(pA, pB);
245 }
246
247 @Override
248 public boolean isMutable() {
249 return false;
250 }
251 }
252 }
253
254 /**
255 * Generated pattern matcher API of the queries.nonSymmetricOpposite pattern,
256 * providing pattern-specific query methods.
257 *
258 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
259 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
260 *
261 * <p>Matches of the pattern will be represented as {@link Match}.
262 *
263 * <p>Original source:
264 * <code><pre>
265 * {@literal @}Constraint(key={a}, severity="error", message="error")
266 * pattern nonSymmetricOpposite(a:EReference, b:EReference) {
267 * find opposite(a,b);
268 * neg find opposite(b,a);
269 * }
270 * </pre></code>
271 *
272 * @see Match
273 * @see NonSymmetricOpposite
274 *
275 */
276 public static class Matcher extends BaseMatcher<NonSymmetricOpposite.Match> {
277 /**
278 * Initializes the pattern matcher within an existing VIATRA Query engine.
279 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
280 *
281 * @param engine the existing VIATRA Query engine in which this matcher will be created.
282 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
283 *
284 */
285 public static NonSymmetricOpposite.Matcher on(final ViatraQueryEngine engine) {
286 // check if matcher already exists
287 Matcher matcher = engine.getExistingMatcher(querySpecification());
288 if (matcher == null) {
289 matcher = (Matcher)engine.getMatcher(querySpecification());
290 }
291 return matcher;
292 }
293
294 /**
295 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
296 * @return an initialized matcher
297 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
298 *
299 */
300 public static NonSymmetricOpposite.Matcher create() {
301 return new Matcher();
302 }
303
304 private static final int POSITION_A = 0;
305
306 private static final int POSITION_B = 1;
307
308 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(NonSymmetricOpposite.Matcher.class);
309
310 /**
311 * Initializes the pattern matcher within an existing VIATRA Query engine.
312 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
313 *
314 * @param engine the existing VIATRA Query engine in which this matcher will be created.
315 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
316 *
317 */
318 private Matcher() {
319 super(querySpecification());
320 }
321
322 /**
323 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
324 * @param pA the fixed value of pattern parameter a, or null if not bound.
325 * @param pB the fixed value of pattern parameter b, or null if not bound.
326 * @return matches represented as a Match object.
327 *
328 */
329 public Collection<NonSymmetricOpposite.Match> getAllMatches(final EReference pA, final EReference pB) {
330 return rawStreamAllMatches(new Object[]{pA, pB}).collect(Collectors.toSet());
331 }
332
333 /**
334 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
335 * </p>
336 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
337 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
338 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
339 * @param pA the fixed value of pattern parameter a, or null if not bound.
340 * @param pB the fixed value of pattern parameter b, or null if not bound.
341 * @return a stream of matches represented as a Match object.
342 *
343 */
344 public Stream<NonSymmetricOpposite.Match> streamAllMatches(final EReference pA, final EReference pB) {
345 return rawStreamAllMatches(new Object[]{pA, pB});
346 }
347
348 /**
349 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
350 * Neither determinism nor randomness of selection is guaranteed.
351 * @param pA the fixed value of pattern parameter a, or null if not bound.
352 * @param pB the fixed value of pattern parameter b, or null if not bound.
353 * @return a match represented as a Match object, or null if no match is found.
354 *
355 */
356 public Optional<NonSymmetricOpposite.Match> getOneArbitraryMatch(final EReference pA, final EReference pB) {
357 return rawGetOneArbitraryMatch(new Object[]{pA, pB});
358 }
359
360 /**
361 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
362 * under any possible substitution of the unspecified parameters (if any).
363 * @param pA the fixed value of pattern parameter a, or null if not bound.
364 * @param pB the fixed value of pattern parameter b, or null if not bound.
365 * @return true if the input is a valid (partial) match of the pattern.
366 *
367 */
368 public boolean hasMatch(final EReference pA, final EReference pB) {
369 return rawHasMatch(new Object[]{pA, pB});
370 }
371
372 /**
373 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
374 * @param pA the fixed value of pattern parameter a, or null if not bound.
375 * @param pB the fixed value of pattern parameter b, or null if not bound.
376 * @return the number of pattern matches found.
377 *
378 */
379 public int countMatches(final EReference pA, final EReference pB) {
380 return rawCountMatches(new Object[]{pA, pB});
381 }
382
383 /**
384 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
385 * Neither determinism nor randomness of selection is guaranteed.
386 * @param pA the fixed value of pattern parameter a, or null if not bound.
387 * @param pB the fixed value of pattern parameter b, or null if not bound.
388 * @param processor the action that will process the selected match.
389 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
390 *
391 */
392 public boolean forOneArbitraryMatch(final EReference pA, final EReference pB, final Consumer<? super NonSymmetricOpposite.Match> processor) {
393 return rawForOneArbitraryMatch(new Object[]{pA, pB}, processor);
394 }
395
396 /**
397 * Returns a new (partial) match.
398 * This can be used e.g. to call the matcher with a partial match.
399 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
400 * @param pA the fixed value of pattern parameter a, or null if not bound.
401 * @param pB the fixed value of pattern parameter b, or null if not bound.
402 * @return the (partial) match object.
403 *
404 */
405 public NonSymmetricOpposite.Match newMatch(final EReference pA, final EReference pB) {
406 return NonSymmetricOpposite.Match.newMatch(pA, pB);
407 }
408
409 /**
410 * Retrieve the set of values that occur in matches for a.
411 * @return the Set of all values or empty set if there are no matches
412 *
413 */
414 protected Stream<EReference> rawStreamAllValuesOfa(final Object[] parameters) {
415 return rawStreamAllValues(POSITION_A, parameters).map(EReference.class::cast);
416 }
417
418 /**
419 * Retrieve the set of values that occur in matches for a.
420 * @return the Set of all values or empty set if there are no matches
421 *
422 */
423 public Set<EReference> getAllValuesOfa() {
424 return rawStreamAllValuesOfa(emptyArray()).collect(Collectors.toSet());
425 }
426
427 /**
428 * Retrieve the set of values that occur in matches for a.
429 * @return the Set of all values or empty set if there are no matches
430 *
431 */
432 public Stream<EReference> streamAllValuesOfa() {
433 return rawStreamAllValuesOfa(emptyArray());
434 }
435
436 /**
437 * Retrieve the set of values that occur in matches for a.
438 * </p>
439 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
440 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
441 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
442 *
443 * @return the Stream of all values or empty set if there are no matches
444 *
445 */
446 public Stream<EReference> streamAllValuesOfa(final NonSymmetricOpposite.Match partialMatch) {
447 return rawStreamAllValuesOfa(partialMatch.toArray());
448 }
449
450 /**
451 * Retrieve the set of values that occur in matches for a.
452 * </p>
453 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
454 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
455 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
456 *
457 * @return the Stream of all values or empty set if there are no matches
458 *
459 */
460 public Stream<EReference> streamAllValuesOfa(final EReference pB) {
461 return rawStreamAllValuesOfa(new Object[]{null, pB});
462 }
463
464 /**
465 * Retrieve the set of values that occur in matches for a.
466 * @return the Set of all values or empty set if there are no matches
467 *
468 */
469 public Set<EReference> getAllValuesOfa(final NonSymmetricOpposite.Match partialMatch) {
470 return rawStreamAllValuesOfa(partialMatch.toArray()).collect(Collectors.toSet());
471 }
472
473 /**
474 * Retrieve the set of values that occur in matches for a.
475 * @return the Set of all values or empty set if there are no matches
476 *
477 */
478 public Set<EReference> getAllValuesOfa(final EReference pB) {
479 return rawStreamAllValuesOfa(new Object[]{null, pB}).collect(Collectors.toSet());
480 }
481
482 /**
483 * Retrieve the set of values that occur in matches for b.
484 * @return the Set of all values or empty set if there are no matches
485 *
486 */
487 protected Stream<EReference> rawStreamAllValuesOfb(final Object[] parameters) {
488 return rawStreamAllValues(POSITION_B, parameters).map(EReference.class::cast);
489 }
490
491 /**
492 * Retrieve the set of values that occur in matches for b.
493 * @return the Set of all values or empty set if there are no matches
494 *
495 */
496 public Set<EReference> getAllValuesOfb() {
497 return rawStreamAllValuesOfb(emptyArray()).collect(Collectors.toSet());
498 }
499
500 /**
501 * Retrieve the set of values that occur in matches for b.
502 * @return the Set of all values or empty set if there are no matches
503 *
504 */
505 public Stream<EReference> streamAllValuesOfb() {
506 return rawStreamAllValuesOfb(emptyArray());
507 }
508
509 /**
510 * Retrieve the set of values that occur in matches for b.
511 * </p>
512 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
513 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
514 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
515 *
516 * @return the Stream of all values or empty set if there are no matches
517 *
518 */
519 public Stream<EReference> streamAllValuesOfb(final NonSymmetricOpposite.Match partialMatch) {
520 return rawStreamAllValuesOfb(partialMatch.toArray());
521 }
522
523 /**
524 * Retrieve the set of values that occur in matches for b.
525 * </p>
526 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
527 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
528 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
529 *
530 * @return the Stream of all values or empty set if there are no matches
531 *
532 */
533 public Stream<EReference> streamAllValuesOfb(final EReference pA) {
534 return rawStreamAllValuesOfb(new Object[]{pA, null});
535 }
536
537 /**
538 * Retrieve the set of values that occur in matches for b.
539 * @return the Set of all values or empty set if there are no matches
540 *
541 */
542 public Set<EReference> getAllValuesOfb(final NonSymmetricOpposite.Match partialMatch) {
543 return rawStreamAllValuesOfb(partialMatch.toArray()).collect(Collectors.toSet());
544 }
545
546 /**
547 * Retrieve the set of values that occur in matches for b.
548 * @return the Set of all values or empty set if there are no matches
549 *
550 */
551 public Set<EReference> getAllValuesOfb(final EReference pA) {
552 return rawStreamAllValuesOfb(new Object[]{pA, null}).collect(Collectors.toSet());
553 }
554
555 @Override
556 protected NonSymmetricOpposite.Match tupleToMatch(final Tuple t) {
557 try {
558 return NonSymmetricOpposite.Match.newMatch((EReference) t.get(POSITION_A), (EReference) t.get(POSITION_B));
559 } catch(ClassCastException e) {
560 LOGGER.error("Element(s) in tuple not properly typed!",e);
561 return null;
562 }
563 }
564
565 @Override
566 protected NonSymmetricOpposite.Match arrayToMatch(final Object[] match) {
567 try {
568 return NonSymmetricOpposite.Match.newMatch((EReference) match[POSITION_A], (EReference) match[POSITION_B]);
569 } catch(ClassCastException e) {
570 LOGGER.error("Element(s) in array not properly typed!",e);
571 return null;
572 }
573 }
574
575 @Override
576 protected NonSymmetricOpposite.Match arrayToMatchMutable(final Object[] match) {
577 try {
578 return NonSymmetricOpposite.Match.newMutableMatch((EReference) match[POSITION_A], (EReference) match[POSITION_B]);
579 } catch(ClassCastException e) {
580 LOGGER.error("Element(s) in array not properly typed!",e);
581 return null;
582 }
583 }
584
585 /**
586 * @return the singleton instance of the query specification of this pattern
587 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
588 *
589 */
590 public static IQuerySpecification<NonSymmetricOpposite.Matcher> querySpecification() {
591 return NonSymmetricOpposite.instance();
592 }
593 }
594
595 private NonSymmetricOpposite() {
596 super(GeneratedPQuery.INSTANCE);
597 }
598
599 /**
600 * @return the singleton instance of the query specification
601 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
602 *
603 */
604 public static NonSymmetricOpposite instance() {
605 try{
606 return LazyHolder.INSTANCE;
607 } catch (ExceptionInInitializerError err) {
608 throw processInitializerError(err);
609 }
610 }
611
612 @Override
613 protected NonSymmetricOpposite.Matcher instantiate(final ViatraQueryEngine engine) {
614 return NonSymmetricOpposite.Matcher.on(engine);
615 }
616
617 @Override
618 public NonSymmetricOpposite.Matcher instantiate() {
619 return NonSymmetricOpposite.Matcher.create();
620 }
621
622 @Override
623 public NonSymmetricOpposite.Match newEmptyMatch() {
624 return NonSymmetricOpposite.Match.newEmptyMatch();
625 }
626
627 @Override
628 public NonSymmetricOpposite.Match newMatch(final Object... parameters) {
629 return NonSymmetricOpposite.Match.newMatch((org.eclipse.emf.ecore.EReference) parameters[0], (org.eclipse.emf.ecore.EReference) parameters[1]);
630 }
631
632 /**
633 * Inner class allowing the singleton instance of {@link NonSymmetricOpposite} to be created
634 * <b>not</b> at the class load time of the outer class,
635 * but rather at the first call to {@link NonSymmetricOpposite#instance()}.
636 *
637 * <p> This workaround is required e.g. to support recursion.
638 *
639 */
640 private static class LazyHolder {
641 private static final NonSymmetricOpposite INSTANCE = new NonSymmetricOpposite();
642
643 /**
644 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
645 * This initialization order is required to support indirect recursion.
646 *
647 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
648 *
649 */
650 private static final Object STATIC_INITIALIZER = ensureInitialized();
651
652 public static Object ensureInitialized() {
653 INSTANCE.ensureInitializedInternal();
654 return null;
655 }
656 }
657
658 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
659 private static final NonSymmetricOpposite.GeneratedPQuery INSTANCE = new GeneratedPQuery();
660
661 private final PParameter parameter_a = new PParameter("a", "org.eclipse.emf.ecore.EReference", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EReference")), PParameterDirection.INOUT);
662
663 private final PParameter parameter_b = new PParameter("b", "org.eclipse.emf.ecore.EReference", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EReference")), PParameterDirection.INOUT);
664
665 private final List<PParameter> parameters = Arrays.asList(parameter_a, parameter_b);
666
667 private GeneratedPQuery() {
668 super(PVisibility.PUBLIC);
669 }
670
671 @Override
672 public String getFullyQualifiedName() {
673 return "queries.nonSymmetricOpposite";
674 }
675
676 @Override
677 public List<String> getParameterNames() {
678 return Arrays.asList("a","b");
679 }
680
681 @Override
682 public List<PParameter> getParameters() {
683 return parameters;
684 }
685
686 @Override
687 public Set<PBody> doGetContainedBodies() {
688 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
689 Set<PBody> bodies = new LinkedHashSet<>();
690 {
691 PBody body = new PBody(this);
692 PVariable var_a = body.getOrCreateVariableByName("a");
693 PVariable var_b = body.getOrCreateVariableByName("b");
694 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
695 new TypeConstraint(body, Tuples.flatTupleOf(var_b), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
696 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
697 new ExportedParameter(body, var_a, parameter_a),
698 new ExportedParameter(body, var_b, parameter_b)
699 ));
700 // find opposite(a,b)
701 new PositivePatternCall(body, Tuples.flatTupleOf(var_a, var_b), Opposite.instance().getInternalQueryRepresentation());
702 // neg find opposite(b,a)
703 new NegativePatternCall(body, Tuples.flatTupleOf(var_b, var_a), Opposite.instance().getInternalQueryRepresentation());
704 bodies.add(body);
705 }
706 {
707 PAnnotation annotation = new PAnnotation("Constraint");
708 annotation.addAttribute("key", Arrays.asList(new Object[] {
709 new ParameterReference("a")
710 }));
711 annotation.addAttribute("severity", "error");
712 annotation.addAttribute("message", "error");
713 addAnnotation(annotation);
714 }
715 return bodies;
716 }
717 }
718}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Opposite.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Opposite.java
new file mode 100644
index 00000000..ab808e10
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Opposite.java
@@ -0,0 +1,704 @@
1/**
2 * Generated from platform:/resource/SocialNetwork_plugin/queries/queries/Ecore.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.emf.ecore.EReference;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
37import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
39import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
40
41/**
42 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
43 *
44 * <p>Original source:
45 * <code><pre>
46 * pattern opposite(a:EReference, b: EReference) {
47 * EReference.eOpposite(a,b);
48 * }
49 * </pre></code>
50 *
51 * @see Matcher
52 * @see Match
53 *
54 */
55@SuppressWarnings("all")
56public final class Opposite extends BaseGeneratedEMFQuerySpecification<Opposite.Matcher> {
57 /**
58 * Pattern-specific match representation of the queries.opposite pattern,
59 * to be used in conjunction with {@link Matcher}.
60 *
61 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
62 * Each instance is a (possibly partial) substitution of pattern parameters,
63 * usable to represent a match of the pattern in the result of a query,
64 * or to specify the bound (fixed) input parameters when issuing a query.
65 *
66 * @see Matcher
67 *
68 */
69 public static abstract class Match extends BasePatternMatch {
70 private EReference fA;
71
72 private EReference fB;
73
74 private static List<String> parameterNames = makeImmutableList("a", "b");
75
76 private Match(final EReference pA, final EReference pB) {
77 this.fA = pA;
78 this.fB = pB;
79 }
80
81 @Override
82 public Object get(final String parameterName) {
83 switch(parameterName) {
84 case "a": return this.fA;
85 case "b": return this.fB;
86 default: return null;
87 }
88 }
89
90 @Override
91 public Object get(final int index) {
92 switch(index) {
93 case 0: return this.fA;
94 case 1: return this.fB;
95 default: return null;
96 }
97 }
98
99 public EReference getA() {
100 return this.fA;
101 }
102
103 public EReference getB() {
104 return this.fB;
105 }
106
107 @Override
108 public boolean set(final String parameterName, final Object newValue) {
109 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
110 if ("a".equals(parameterName) ) {
111 this.fA = (EReference) newValue;
112 return true;
113 }
114 if ("b".equals(parameterName) ) {
115 this.fB = (EReference) newValue;
116 return true;
117 }
118 return false;
119 }
120
121 public void setA(final EReference pA) {
122 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
123 this.fA = pA;
124 }
125
126 public void setB(final EReference pB) {
127 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
128 this.fB = pB;
129 }
130
131 @Override
132 public String patternName() {
133 return "queries.opposite";
134 }
135
136 @Override
137 public List<String> parameterNames() {
138 return Opposite.Match.parameterNames;
139 }
140
141 @Override
142 public Object[] toArray() {
143 return new Object[]{fA, fB};
144 }
145
146 @Override
147 public Opposite.Match toImmutable() {
148 return isMutable() ? newMatch(fA, fB) : this;
149 }
150
151 @Override
152 public String prettyPrint() {
153 StringBuilder result = new StringBuilder();
154 result.append("\"a\"=" + prettyPrintValue(fA) + ", ");
155 result.append("\"b\"=" + prettyPrintValue(fB));
156 return result.toString();
157 }
158
159 @Override
160 public int hashCode() {
161 return Objects.hash(fA, fB);
162 }
163
164 @Override
165 public boolean equals(final Object obj) {
166 if (this == obj)
167 return true;
168 if (obj == null) {
169 return false;
170 }
171 if ((obj instanceof Opposite.Match)) {
172 Opposite.Match other = (Opposite.Match) obj;
173 return Objects.equals(fA, other.fA) && Objects.equals(fB, other.fB);
174 } else {
175 // this should be infrequent
176 if (!(obj instanceof IPatternMatch)) {
177 return false;
178 }
179 IPatternMatch otherSig = (IPatternMatch) obj;
180 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
181 }
182 }
183
184 @Override
185 public Opposite specification() {
186 return Opposite.instance();
187 }
188
189 /**
190 * Returns an empty, mutable match.
191 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
192 *
193 * @return the empty match.
194 *
195 */
196 public static Opposite.Match newEmptyMatch() {
197 return new Mutable(null, null);
198 }
199
200 /**
201 * Returns a mutable (partial) match.
202 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
203 *
204 * @param pA the fixed value of pattern parameter a, or null if not bound.
205 * @param pB the fixed value of pattern parameter b, or null if not bound.
206 * @return the new, mutable (partial) match object.
207 *
208 */
209 public static Opposite.Match newMutableMatch(final EReference pA, final EReference pB) {
210 return new Mutable(pA, pB);
211 }
212
213 /**
214 * Returns a new (partial) match.
215 * This can be used e.g. to call the matcher with a partial match.
216 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
217 * @param pA the fixed value of pattern parameter a, or null if not bound.
218 * @param pB the fixed value of pattern parameter b, or null if not bound.
219 * @return the (partial) match object.
220 *
221 */
222 public static Opposite.Match newMatch(final EReference pA, final EReference pB) {
223 return new Immutable(pA, pB);
224 }
225
226 private static final class Mutable extends Opposite.Match {
227 Mutable(final EReference pA, final EReference pB) {
228 super(pA, pB);
229 }
230
231 @Override
232 public boolean isMutable() {
233 return true;
234 }
235 }
236
237 private static final class Immutable extends Opposite.Match {
238 Immutable(final EReference pA, final EReference pB) {
239 super(pA, pB);
240 }
241
242 @Override
243 public boolean isMutable() {
244 return false;
245 }
246 }
247 }
248
249 /**
250 * Generated pattern matcher API of the queries.opposite pattern,
251 * providing pattern-specific query methods.
252 *
253 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
254 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
255 *
256 * <p>Matches of the pattern will be represented as {@link Match}.
257 *
258 * <p>Original source:
259 * <code><pre>
260 * pattern opposite(a:EReference, b: EReference) {
261 * EReference.eOpposite(a,b);
262 * }
263 * </pre></code>
264 *
265 * @see Match
266 * @see Opposite
267 *
268 */
269 public static class Matcher extends BaseMatcher<Opposite.Match> {
270 /**
271 * Initializes the pattern matcher within an existing VIATRA Query engine.
272 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
273 *
274 * @param engine the existing VIATRA Query engine in which this matcher will be created.
275 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
276 *
277 */
278 public static Opposite.Matcher on(final ViatraQueryEngine engine) {
279 // check if matcher already exists
280 Matcher matcher = engine.getExistingMatcher(querySpecification());
281 if (matcher == null) {
282 matcher = (Matcher)engine.getMatcher(querySpecification());
283 }
284 return matcher;
285 }
286
287 /**
288 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
289 * @return an initialized matcher
290 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
291 *
292 */
293 public static Opposite.Matcher create() {
294 return new Matcher();
295 }
296
297 private static final int POSITION_A = 0;
298
299 private static final int POSITION_B = 1;
300
301 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Opposite.Matcher.class);
302
303 /**
304 * Initializes the pattern matcher within an existing VIATRA Query engine.
305 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
306 *
307 * @param engine the existing VIATRA Query engine in which this matcher will be created.
308 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
309 *
310 */
311 private Matcher() {
312 super(querySpecification());
313 }
314
315 /**
316 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
317 * @param pA the fixed value of pattern parameter a, or null if not bound.
318 * @param pB the fixed value of pattern parameter b, or null if not bound.
319 * @return matches represented as a Match object.
320 *
321 */
322 public Collection<Opposite.Match> getAllMatches(final EReference pA, final EReference pB) {
323 return rawStreamAllMatches(new Object[]{pA, pB}).collect(Collectors.toSet());
324 }
325
326 /**
327 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
328 * </p>
329 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
330 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
331 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
332 * @param pA the fixed value of pattern parameter a, or null if not bound.
333 * @param pB the fixed value of pattern parameter b, or null if not bound.
334 * @return a stream of matches represented as a Match object.
335 *
336 */
337 public Stream<Opposite.Match> streamAllMatches(final EReference pA, final EReference pB) {
338 return rawStreamAllMatches(new Object[]{pA, pB});
339 }
340
341 /**
342 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
343 * Neither determinism nor randomness of selection is guaranteed.
344 * @param pA the fixed value of pattern parameter a, or null if not bound.
345 * @param pB the fixed value of pattern parameter b, or null if not bound.
346 * @return a match represented as a Match object, or null if no match is found.
347 *
348 */
349 public Optional<Opposite.Match> getOneArbitraryMatch(final EReference pA, final EReference pB) {
350 return rawGetOneArbitraryMatch(new Object[]{pA, pB});
351 }
352
353 /**
354 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
355 * under any possible substitution of the unspecified parameters (if any).
356 * @param pA the fixed value of pattern parameter a, or null if not bound.
357 * @param pB the fixed value of pattern parameter b, or null if not bound.
358 * @return true if the input is a valid (partial) match of the pattern.
359 *
360 */
361 public boolean hasMatch(final EReference pA, final EReference pB) {
362 return rawHasMatch(new Object[]{pA, pB});
363 }
364
365 /**
366 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
367 * @param pA the fixed value of pattern parameter a, or null if not bound.
368 * @param pB the fixed value of pattern parameter b, or null if not bound.
369 * @return the number of pattern matches found.
370 *
371 */
372 public int countMatches(final EReference pA, final EReference pB) {
373 return rawCountMatches(new Object[]{pA, pB});
374 }
375
376 /**
377 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
378 * Neither determinism nor randomness of selection is guaranteed.
379 * @param pA the fixed value of pattern parameter a, or null if not bound.
380 * @param pB the fixed value of pattern parameter b, or null if not bound.
381 * @param processor the action that will process the selected match.
382 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
383 *
384 */
385 public boolean forOneArbitraryMatch(final EReference pA, final EReference pB, final Consumer<? super Opposite.Match> processor) {
386 return rawForOneArbitraryMatch(new Object[]{pA, pB}, processor);
387 }
388
389 /**
390 * Returns a new (partial) match.
391 * This can be used e.g. to call the matcher with a partial match.
392 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
393 * @param pA the fixed value of pattern parameter a, or null if not bound.
394 * @param pB the fixed value of pattern parameter b, or null if not bound.
395 * @return the (partial) match object.
396 *
397 */
398 public Opposite.Match newMatch(final EReference pA, final EReference pB) {
399 return Opposite.Match.newMatch(pA, pB);
400 }
401
402 /**
403 * Retrieve the set of values that occur in matches for a.
404 * @return the Set of all values or empty set if there are no matches
405 *
406 */
407 protected Stream<EReference> rawStreamAllValuesOfa(final Object[] parameters) {
408 return rawStreamAllValues(POSITION_A, parameters).map(EReference.class::cast);
409 }
410
411 /**
412 * Retrieve the set of values that occur in matches for a.
413 * @return the Set of all values or empty set if there are no matches
414 *
415 */
416 public Set<EReference> getAllValuesOfa() {
417 return rawStreamAllValuesOfa(emptyArray()).collect(Collectors.toSet());
418 }
419
420 /**
421 * Retrieve the set of values that occur in matches for a.
422 * @return the Set of all values or empty set if there are no matches
423 *
424 */
425 public Stream<EReference> streamAllValuesOfa() {
426 return rawStreamAllValuesOfa(emptyArray());
427 }
428
429 /**
430 * Retrieve the set of values that occur in matches for a.
431 * </p>
432 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
433 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
434 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
435 *
436 * @return the Stream of all values or empty set if there are no matches
437 *
438 */
439 public Stream<EReference> streamAllValuesOfa(final Opposite.Match partialMatch) {
440 return rawStreamAllValuesOfa(partialMatch.toArray());
441 }
442
443 /**
444 * Retrieve the set of values that occur in matches for a.
445 * </p>
446 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
447 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
448 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
449 *
450 * @return the Stream of all values or empty set if there are no matches
451 *
452 */
453 public Stream<EReference> streamAllValuesOfa(final EReference pB) {
454 return rawStreamAllValuesOfa(new Object[]{null, pB});
455 }
456
457 /**
458 * Retrieve the set of values that occur in matches for a.
459 * @return the Set of all values or empty set if there are no matches
460 *
461 */
462 public Set<EReference> getAllValuesOfa(final Opposite.Match partialMatch) {
463 return rawStreamAllValuesOfa(partialMatch.toArray()).collect(Collectors.toSet());
464 }
465
466 /**
467 * Retrieve the set of values that occur in matches for a.
468 * @return the Set of all values or empty set if there are no matches
469 *
470 */
471 public Set<EReference> getAllValuesOfa(final EReference pB) {
472 return rawStreamAllValuesOfa(new Object[]{null, pB}).collect(Collectors.toSet());
473 }
474
475 /**
476 * Retrieve the set of values that occur in matches for b.
477 * @return the Set of all values or empty set if there are no matches
478 *
479 */
480 protected Stream<EReference> rawStreamAllValuesOfb(final Object[] parameters) {
481 return rawStreamAllValues(POSITION_B, parameters).map(EReference.class::cast);
482 }
483
484 /**
485 * Retrieve the set of values that occur in matches for b.
486 * @return the Set of all values or empty set if there are no matches
487 *
488 */
489 public Set<EReference> getAllValuesOfb() {
490 return rawStreamAllValuesOfb(emptyArray()).collect(Collectors.toSet());
491 }
492
493 /**
494 * Retrieve the set of values that occur in matches for b.
495 * @return the Set of all values or empty set if there are no matches
496 *
497 */
498 public Stream<EReference> streamAllValuesOfb() {
499 return rawStreamAllValuesOfb(emptyArray());
500 }
501
502 /**
503 * Retrieve the set of values that occur in matches for b.
504 * </p>
505 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
506 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
507 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
508 *
509 * @return the Stream of all values or empty set if there are no matches
510 *
511 */
512 public Stream<EReference> streamAllValuesOfb(final Opposite.Match partialMatch) {
513 return rawStreamAllValuesOfb(partialMatch.toArray());
514 }
515
516 /**
517 * Retrieve the set of values that occur in matches for b.
518 * </p>
519 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
520 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
521 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
522 *
523 * @return the Stream of all values or empty set if there are no matches
524 *
525 */
526 public Stream<EReference> streamAllValuesOfb(final EReference pA) {
527 return rawStreamAllValuesOfb(new Object[]{pA, null});
528 }
529
530 /**
531 * Retrieve the set of values that occur in matches for b.
532 * @return the Set of all values or empty set if there are no matches
533 *
534 */
535 public Set<EReference> getAllValuesOfb(final Opposite.Match partialMatch) {
536 return rawStreamAllValuesOfb(partialMatch.toArray()).collect(Collectors.toSet());
537 }
538
539 /**
540 * Retrieve the set of values that occur in matches for b.
541 * @return the Set of all values or empty set if there are no matches
542 *
543 */
544 public Set<EReference> getAllValuesOfb(final EReference pA) {
545 return rawStreamAllValuesOfb(new Object[]{pA, null}).collect(Collectors.toSet());
546 }
547
548 @Override
549 protected Opposite.Match tupleToMatch(final Tuple t) {
550 try {
551 return Opposite.Match.newMatch((EReference) t.get(POSITION_A), (EReference) t.get(POSITION_B));
552 } catch(ClassCastException e) {
553 LOGGER.error("Element(s) in tuple not properly typed!",e);
554 return null;
555 }
556 }
557
558 @Override
559 protected Opposite.Match arrayToMatch(final Object[] match) {
560 try {
561 return Opposite.Match.newMatch((EReference) match[POSITION_A], (EReference) match[POSITION_B]);
562 } catch(ClassCastException e) {
563 LOGGER.error("Element(s) in array not properly typed!",e);
564 return null;
565 }
566 }
567
568 @Override
569 protected Opposite.Match arrayToMatchMutable(final Object[] match) {
570 try {
571 return Opposite.Match.newMutableMatch((EReference) match[POSITION_A], (EReference) match[POSITION_B]);
572 } catch(ClassCastException e) {
573 LOGGER.error("Element(s) in array not properly typed!",e);
574 return null;
575 }
576 }
577
578 /**
579 * @return the singleton instance of the query specification of this pattern
580 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
581 *
582 */
583 public static IQuerySpecification<Opposite.Matcher> querySpecification() {
584 return Opposite.instance();
585 }
586 }
587
588 private Opposite() {
589 super(GeneratedPQuery.INSTANCE);
590 }
591
592 /**
593 * @return the singleton instance of the query specification
594 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
595 *
596 */
597 public static Opposite instance() {
598 try{
599 return LazyHolder.INSTANCE;
600 } catch (ExceptionInInitializerError err) {
601 throw processInitializerError(err);
602 }
603 }
604
605 @Override
606 protected Opposite.Matcher instantiate(final ViatraQueryEngine engine) {
607 return Opposite.Matcher.on(engine);
608 }
609
610 @Override
611 public Opposite.Matcher instantiate() {
612 return Opposite.Matcher.create();
613 }
614
615 @Override
616 public Opposite.Match newEmptyMatch() {
617 return Opposite.Match.newEmptyMatch();
618 }
619
620 @Override
621 public Opposite.Match newMatch(final Object... parameters) {
622 return Opposite.Match.newMatch((org.eclipse.emf.ecore.EReference) parameters[0], (org.eclipse.emf.ecore.EReference) parameters[1]);
623 }
624
625 /**
626 * Inner class allowing the singleton instance of {@link Opposite} to be created
627 * <b>not</b> at the class load time of the outer class,
628 * but rather at the first call to {@link Opposite#instance()}.
629 *
630 * <p> This workaround is required e.g. to support recursion.
631 *
632 */
633 private static class LazyHolder {
634 private static final Opposite INSTANCE = new Opposite();
635
636 /**
637 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
638 * This initialization order is required to support indirect recursion.
639 *
640 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
641 *
642 */
643 private static final Object STATIC_INITIALIZER = ensureInitialized();
644
645 public static Object ensureInitialized() {
646 INSTANCE.ensureInitializedInternal();
647 return null;
648 }
649 }
650
651 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
652 private static final Opposite.GeneratedPQuery INSTANCE = new GeneratedPQuery();
653
654 private final PParameter parameter_a = new PParameter("a", "org.eclipse.emf.ecore.EReference", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EReference")), PParameterDirection.INOUT);
655
656 private final PParameter parameter_b = new PParameter("b", "org.eclipse.emf.ecore.EReference", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EReference")), PParameterDirection.INOUT);
657
658 private final List<PParameter> parameters = Arrays.asList(parameter_a, parameter_b);
659
660 private GeneratedPQuery() {
661 super(PVisibility.PUBLIC);
662 }
663
664 @Override
665 public String getFullyQualifiedName() {
666 return "queries.opposite";
667 }
668
669 @Override
670 public List<String> getParameterNames() {
671 return Arrays.asList("a","b");
672 }
673
674 @Override
675 public List<PParameter> getParameters() {
676 return parameters;
677 }
678
679 @Override
680 public Set<PBody> doGetContainedBodies() {
681 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
682 Set<PBody> bodies = new LinkedHashSet<>();
683 {
684 PBody body = new PBody(this);
685 PVariable var_a = body.getOrCreateVariableByName("a");
686 PVariable var_b = body.getOrCreateVariableByName("b");
687 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
688 new TypeConstraint(body, Tuples.flatTupleOf(var_b), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
689 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
690 new ExportedParameter(body, var_a, parameter_a),
691 new ExportedParameter(body, var_b, parameter_b)
692 ));
693 // EReference.eOpposite(a,b)
694 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
695 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
696 new TypeConstraint(body, Tuples.flatTupleOf(var_a, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference", "eOpposite")));
697 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
698 new Equality(body, var__virtual_0_, var_b);
699 bodies.add(body);
700 }
701 return bodies;
702 }
703 }
704}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/OppositeDifferentClass.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/OppositeDifferentClass.java
new file mode 100644
index 00000000..ff46566d
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/OppositeDifferentClass.java
@@ -0,0 +1,587 @@
1/**
2 * Generated from platform:/resource/SocialNetwork_plugin/queries/queries/Ecore.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.emf.ecore.EReference;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
32import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Inequality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
42import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * {@literal @}Constraint(key={a}, severity="error", message="error")
50 * pattern oppositeDifferentClass(a:EReference) {
51 * EReference.eOpposite(a,b);
52 * EReference.eContainingClass(a,aContaining);
53 * EReference.eType(b,bTarget);
54 * aContaining != bTarget;
55 * }
56 * </pre></code>
57 *
58 * @see Matcher
59 * @see Match
60 *
61 */
62@SuppressWarnings("all")
63public final class OppositeDifferentClass extends BaseGeneratedEMFQuerySpecification<OppositeDifferentClass.Matcher> {
64 /**
65 * Pattern-specific match representation of the queries.oppositeDifferentClass pattern,
66 * to be used in conjunction with {@link Matcher}.
67 *
68 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
69 * Each instance is a (possibly partial) substitution of pattern parameters,
70 * usable to represent a match of the pattern in the result of a query,
71 * or to specify the bound (fixed) input parameters when issuing a query.
72 *
73 * @see Matcher
74 *
75 */
76 public static abstract class Match extends BasePatternMatch {
77 private EReference fA;
78
79 private static List<String> parameterNames = makeImmutableList("a");
80
81 private Match(final EReference pA) {
82 this.fA = pA;
83 }
84
85 @Override
86 public Object get(final String parameterName) {
87 switch(parameterName) {
88 case "a": return this.fA;
89 default: return null;
90 }
91 }
92
93 @Override
94 public Object get(final int index) {
95 switch(index) {
96 case 0: return this.fA;
97 default: return null;
98 }
99 }
100
101 public EReference getA() {
102 return this.fA;
103 }
104
105 @Override
106 public boolean set(final String parameterName, final Object newValue) {
107 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
108 if ("a".equals(parameterName) ) {
109 this.fA = (EReference) newValue;
110 return true;
111 }
112 return false;
113 }
114
115 public void setA(final EReference pA) {
116 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
117 this.fA = pA;
118 }
119
120 @Override
121 public String patternName() {
122 return "queries.oppositeDifferentClass";
123 }
124
125 @Override
126 public List<String> parameterNames() {
127 return OppositeDifferentClass.Match.parameterNames;
128 }
129
130 @Override
131 public Object[] toArray() {
132 return new Object[]{fA};
133 }
134
135 @Override
136 public OppositeDifferentClass.Match toImmutable() {
137 return isMutable() ? newMatch(fA) : this;
138 }
139
140 @Override
141 public String prettyPrint() {
142 StringBuilder result = new StringBuilder();
143 result.append("\"a\"=" + prettyPrintValue(fA));
144 return result.toString();
145 }
146
147 @Override
148 public int hashCode() {
149 return Objects.hash(fA);
150 }
151
152 @Override
153 public boolean equals(final Object obj) {
154 if (this == obj)
155 return true;
156 if (obj == null) {
157 return false;
158 }
159 if ((obj instanceof OppositeDifferentClass.Match)) {
160 OppositeDifferentClass.Match other = (OppositeDifferentClass.Match) obj;
161 return Objects.equals(fA, other.fA);
162 } else {
163 // this should be infrequent
164 if (!(obj instanceof IPatternMatch)) {
165 return false;
166 }
167 IPatternMatch otherSig = (IPatternMatch) obj;
168 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
169 }
170 }
171
172 @Override
173 public OppositeDifferentClass specification() {
174 return OppositeDifferentClass.instance();
175 }
176
177 /**
178 * Returns an empty, mutable match.
179 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
180 *
181 * @return the empty match.
182 *
183 */
184 public static OppositeDifferentClass.Match newEmptyMatch() {
185 return new Mutable(null);
186 }
187
188 /**
189 * Returns a mutable (partial) match.
190 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
191 *
192 * @param pA the fixed value of pattern parameter a, or null if not bound.
193 * @return the new, mutable (partial) match object.
194 *
195 */
196 public static OppositeDifferentClass.Match newMutableMatch(final EReference pA) {
197 return new Mutable(pA);
198 }
199
200 /**
201 * Returns a new (partial) match.
202 * This can be used e.g. to call the matcher with a partial match.
203 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
204 * @param pA the fixed value of pattern parameter a, or null if not bound.
205 * @return the (partial) match object.
206 *
207 */
208 public static OppositeDifferentClass.Match newMatch(final EReference pA) {
209 return new Immutable(pA);
210 }
211
212 private static final class Mutable extends OppositeDifferentClass.Match {
213 Mutable(final EReference pA) {
214 super(pA);
215 }
216
217 @Override
218 public boolean isMutable() {
219 return true;
220 }
221 }
222
223 private static final class Immutable extends OppositeDifferentClass.Match {
224 Immutable(final EReference pA) {
225 super(pA);
226 }
227
228 @Override
229 public boolean isMutable() {
230 return false;
231 }
232 }
233 }
234
235 /**
236 * Generated pattern matcher API of the queries.oppositeDifferentClass pattern,
237 * providing pattern-specific query methods.
238 *
239 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
240 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
241 *
242 * <p>Matches of the pattern will be represented as {@link Match}.
243 *
244 * <p>Original source:
245 * <code><pre>
246 * {@literal @}Constraint(key={a}, severity="error", message="error")
247 * pattern oppositeDifferentClass(a:EReference) {
248 * EReference.eOpposite(a,b);
249 * EReference.eContainingClass(a,aContaining);
250 * EReference.eType(b,bTarget);
251 * aContaining != bTarget;
252 * }
253 * </pre></code>
254 *
255 * @see Match
256 * @see OppositeDifferentClass
257 *
258 */
259 public static class Matcher extends BaseMatcher<OppositeDifferentClass.Match> {
260 /**
261 * Initializes the pattern matcher within an existing VIATRA Query engine.
262 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
263 *
264 * @param engine the existing VIATRA Query engine in which this matcher will be created.
265 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
266 *
267 */
268 public static OppositeDifferentClass.Matcher on(final ViatraQueryEngine engine) {
269 // check if matcher already exists
270 Matcher matcher = engine.getExistingMatcher(querySpecification());
271 if (matcher == null) {
272 matcher = (Matcher)engine.getMatcher(querySpecification());
273 }
274 return matcher;
275 }
276
277 /**
278 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
279 * @return an initialized matcher
280 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
281 *
282 */
283 public static OppositeDifferentClass.Matcher create() {
284 return new Matcher();
285 }
286
287 private static final int POSITION_A = 0;
288
289 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(OppositeDifferentClass.Matcher.class);
290
291 /**
292 * Initializes the pattern matcher within an existing VIATRA Query engine.
293 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
294 *
295 * @param engine the existing VIATRA Query engine in which this matcher will be created.
296 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
297 *
298 */
299 private Matcher() {
300 super(querySpecification());
301 }
302
303 /**
304 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
305 * @param pA the fixed value of pattern parameter a, or null if not bound.
306 * @return matches represented as a Match object.
307 *
308 */
309 public Collection<OppositeDifferentClass.Match> getAllMatches(final EReference pA) {
310 return rawStreamAllMatches(new Object[]{pA}).collect(Collectors.toSet());
311 }
312
313 /**
314 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
315 * </p>
316 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
317 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
318 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
319 * @param pA the fixed value of pattern parameter a, or null if not bound.
320 * @return a stream of matches represented as a Match object.
321 *
322 */
323 public Stream<OppositeDifferentClass.Match> streamAllMatches(final EReference pA) {
324 return rawStreamAllMatches(new Object[]{pA});
325 }
326
327 /**
328 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
329 * Neither determinism nor randomness of selection is guaranteed.
330 * @param pA the fixed value of pattern parameter a, or null if not bound.
331 * @return a match represented as a Match object, or null if no match is found.
332 *
333 */
334 public Optional<OppositeDifferentClass.Match> getOneArbitraryMatch(final EReference pA) {
335 return rawGetOneArbitraryMatch(new Object[]{pA});
336 }
337
338 /**
339 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
340 * under any possible substitution of the unspecified parameters (if any).
341 * @param pA the fixed value of pattern parameter a, or null if not bound.
342 * @return true if the input is a valid (partial) match of the pattern.
343 *
344 */
345 public boolean hasMatch(final EReference pA) {
346 return rawHasMatch(new Object[]{pA});
347 }
348
349 /**
350 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
351 * @param pA the fixed value of pattern parameter a, or null if not bound.
352 * @return the number of pattern matches found.
353 *
354 */
355 public int countMatches(final EReference pA) {
356 return rawCountMatches(new Object[]{pA});
357 }
358
359 /**
360 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
361 * Neither determinism nor randomness of selection is guaranteed.
362 * @param pA the fixed value of pattern parameter a, or null if not bound.
363 * @param processor the action that will process the selected match.
364 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
365 *
366 */
367 public boolean forOneArbitraryMatch(final EReference pA, final Consumer<? super OppositeDifferentClass.Match> processor) {
368 return rawForOneArbitraryMatch(new Object[]{pA}, processor);
369 }
370
371 /**
372 * Returns a new (partial) match.
373 * This can be used e.g. to call the matcher with a partial match.
374 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
375 * @param pA the fixed value of pattern parameter a, or null if not bound.
376 * @return the (partial) match object.
377 *
378 */
379 public OppositeDifferentClass.Match newMatch(final EReference pA) {
380 return OppositeDifferentClass.Match.newMatch(pA);
381 }
382
383 /**
384 * Retrieve the set of values that occur in matches for a.
385 * @return the Set of all values or empty set if there are no matches
386 *
387 */
388 protected Stream<EReference> rawStreamAllValuesOfa(final Object[] parameters) {
389 return rawStreamAllValues(POSITION_A, parameters).map(EReference.class::cast);
390 }
391
392 /**
393 * Retrieve the set of values that occur in matches for a.
394 * @return the Set of all values or empty set if there are no matches
395 *
396 */
397 public Set<EReference> getAllValuesOfa() {
398 return rawStreamAllValuesOfa(emptyArray()).collect(Collectors.toSet());
399 }
400
401 /**
402 * Retrieve the set of values that occur in matches for a.
403 * @return the Set of all values or empty set if there are no matches
404 *
405 */
406 public Stream<EReference> streamAllValuesOfa() {
407 return rawStreamAllValuesOfa(emptyArray());
408 }
409
410 @Override
411 protected OppositeDifferentClass.Match tupleToMatch(final Tuple t) {
412 try {
413 return OppositeDifferentClass.Match.newMatch((EReference) t.get(POSITION_A));
414 } catch(ClassCastException e) {
415 LOGGER.error("Element(s) in tuple not properly typed!",e);
416 return null;
417 }
418 }
419
420 @Override
421 protected OppositeDifferentClass.Match arrayToMatch(final Object[] match) {
422 try {
423 return OppositeDifferentClass.Match.newMatch((EReference) match[POSITION_A]);
424 } catch(ClassCastException e) {
425 LOGGER.error("Element(s) in array not properly typed!",e);
426 return null;
427 }
428 }
429
430 @Override
431 protected OppositeDifferentClass.Match arrayToMatchMutable(final Object[] match) {
432 try {
433 return OppositeDifferentClass.Match.newMutableMatch((EReference) match[POSITION_A]);
434 } catch(ClassCastException e) {
435 LOGGER.error("Element(s) in array not properly typed!",e);
436 return null;
437 }
438 }
439
440 /**
441 * @return the singleton instance of the query specification of this pattern
442 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
443 *
444 */
445 public static IQuerySpecification<OppositeDifferentClass.Matcher> querySpecification() {
446 return OppositeDifferentClass.instance();
447 }
448 }
449
450 private OppositeDifferentClass() {
451 super(GeneratedPQuery.INSTANCE);
452 }
453
454 /**
455 * @return the singleton instance of the query specification
456 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
457 *
458 */
459 public static OppositeDifferentClass instance() {
460 try{
461 return LazyHolder.INSTANCE;
462 } catch (ExceptionInInitializerError err) {
463 throw processInitializerError(err);
464 }
465 }
466
467 @Override
468 protected OppositeDifferentClass.Matcher instantiate(final ViatraQueryEngine engine) {
469 return OppositeDifferentClass.Matcher.on(engine);
470 }
471
472 @Override
473 public OppositeDifferentClass.Matcher instantiate() {
474 return OppositeDifferentClass.Matcher.create();
475 }
476
477 @Override
478 public OppositeDifferentClass.Match newEmptyMatch() {
479 return OppositeDifferentClass.Match.newEmptyMatch();
480 }
481
482 @Override
483 public OppositeDifferentClass.Match newMatch(final Object... parameters) {
484 return OppositeDifferentClass.Match.newMatch((org.eclipse.emf.ecore.EReference) parameters[0]);
485 }
486
487 /**
488 * Inner class allowing the singleton instance of {@link OppositeDifferentClass} to be created
489 * <b>not</b> at the class load time of the outer class,
490 * but rather at the first call to {@link OppositeDifferentClass#instance()}.
491 *
492 * <p> This workaround is required e.g. to support recursion.
493 *
494 */
495 private static class LazyHolder {
496 private static final OppositeDifferentClass INSTANCE = new OppositeDifferentClass();
497
498 /**
499 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
500 * This initialization order is required to support indirect recursion.
501 *
502 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
503 *
504 */
505 private static final Object STATIC_INITIALIZER = ensureInitialized();
506
507 public static Object ensureInitialized() {
508 INSTANCE.ensureInitializedInternal();
509 return null;
510 }
511 }
512
513 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
514 private static final OppositeDifferentClass.GeneratedPQuery INSTANCE = new GeneratedPQuery();
515
516 private final PParameter parameter_a = new PParameter("a", "org.eclipse.emf.ecore.EReference", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EReference")), PParameterDirection.INOUT);
517
518 private final List<PParameter> parameters = Arrays.asList(parameter_a);
519
520 private GeneratedPQuery() {
521 super(PVisibility.PUBLIC);
522 }
523
524 @Override
525 public String getFullyQualifiedName() {
526 return "queries.oppositeDifferentClass";
527 }
528
529 @Override
530 public List<String> getParameterNames() {
531 return Arrays.asList("a");
532 }
533
534 @Override
535 public List<PParameter> getParameters() {
536 return parameters;
537 }
538
539 @Override
540 public Set<PBody> doGetContainedBodies() {
541 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
542 Set<PBody> bodies = new LinkedHashSet<>();
543 {
544 PBody body = new PBody(this);
545 PVariable var_a = body.getOrCreateVariableByName("a");
546 PVariable var_b = body.getOrCreateVariableByName("b");
547 PVariable var_aContaining = body.getOrCreateVariableByName("aContaining");
548 PVariable var_bTarget = body.getOrCreateVariableByName("bTarget");
549 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
550 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
551 new ExportedParameter(body, var_a, parameter_a)
552 ));
553 // EReference.eOpposite(a,b)
554 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
555 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
556 new TypeConstraint(body, Tuples.flatTupleOf(var_a, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference", "eOpposite")));
557 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
558 new Equality(body, var__virtual_0_, var_b);
559 // EReference.eContainingClass(a,aContaining)
560 new TypeConstraint(body, Tuples.flatTupleOf(var_a), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
561 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
562 new TypeConstraint(body, Tuples.flatTupleOf(var_a, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EStructuralFeature", "eContainingClass")));
563 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
564 new Equality(body, var__virtual_1_, var_aContaining);
565 // EReference.eType(b,bTarget)
566 new TypeConstraint(body, Tuples.flatTupleOf(var_b), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EReference")));
567 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
568 new TypeConstraint(body, Tuples.flatTupleOf(var_b, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "ETypedElement", "eType")));
569 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClassifier")));
570 new Equality(body, var__virtual_2_, var_bTarget);
571 // aContaining != bTarget
572 new Inequality(body, var_aContaining, var_bTarget);
573 bodies.add(body);
574 }
575 {
576 PAnnotation annotation = new PAnnotation("Constraint");
577 annotation.addAttribute("key", Arrays.asList(new Object[] {
578 new ParameterReference("a")
579 }));
580 annotation.addAttribute("severity", "error");
581 annotation.addAttribute("message", "error");
582 addAnnotation(annotation);
583 }
584 return bodies;
585 }
586 }
587}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/SuperTypes.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/SuperTypes.java
new file mode 100644
index 00000000..4bf7a455
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/SuperTypes.java
@@ -0,0 +1,703 @@
1/**
2 * Generated from platform:/resource/SocialNetwork_plugin/queries/queries/Ecore.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.basicdeferred.Equality;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
33import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
36import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
37import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
38import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
39
40/**
41 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
42 *
43 * <p>Original source:
44 * <code><pre>
45 * pattern superTypes(c1:EClass, c2:EClass){
46 * EClass.eSuperTypes(c1,c2);
47 * }
48 * </pre></code>
49 *
50 * @see Matcher
51 * @see Match
52 *
53 */
54@SuppressWarnings("all")
55public final class SuperTypes extends BaseGeneratedEMFQuerySpecification<SuperTypes.Matcher> {
56 /**
57 * Pattern-specific match representation of the queries.superTypes pattern,
58 * to be used in conjunction with {@link Matcher}.
59 *
60 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
61 * Each instance is a (possibly partial) substitution of pattern parameters,
62 * usable to represent a match of the pattern in the result of a query,
63 * or to specify the bound (fixed) input parameters when issuing a query.
64 *
65 * @see Matcher
66 *
67 */
68 public static abstract class Match extends BasePatternMatch {
69 private EClass fC1;
70
71 private EClass fC2;
72
73 private static List<String> parameterNames = makeImmutableList("c1", "c2");
74
75 private Match(final EClass pC1, final EClass pC2) {
76 this.fC1 = pC1;
77 this.fC2 = pC2;
78 }
79
80 @Override
81 public Object get(final String parameterName) {
82 switch(parameterName) {
83 case "c1": return this.fC1;
84 case "c2": return this.fC2;
85 default: return null;
86 }
87 }
88
89 @Override
90 public Object get(final int index) {
91 switch(index) {
92 case 0: return this.fC1;
93 case 1: return this.fC2;
94 default: return null;
95 }
96 }
97
98 public EClass getC1() {
99 return this.fC1;
100 }
101
102 public EClass getC2() {
103 return this.fC2;
104 }
105
106 @Override
107 public boolean set(final String parameterName, final Object newValue) {
108 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
109 if ("c1".equals(parameterName) ) {
110 this.fC1 = (EClass) newValue;
111 return true;
112 }
113 if ("c2".equals(parameterName) ) {
114 this.fC2 = (EClass) newValue;
115 return true;
116 }
117 return false;
118 }
119
120 public void setC1(final EClass pC1) {
121 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
122 this.fC1 = pC1;
123 }
124
125 public void setC2(final EClass pC2) {
126 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
127 this.fC2 = pC2;
128 }
129
130 @Override
131 public String patternName() {
132 return "queries.superTypes";
133 }
134
135 @Override
136 public List<String> parameterNames() {
137 return SuperTypes.Match.parameterNames;
138 }
139
140 @Override
141 public Object[] toArray() {
142 return new Object[]{fC1, fC2};
143 }
144
145 @Override
146 public SuperTypes.Match toImmutable() {
147 return isMutable() ? newMatch(fC1, fC2) : this;
148 }
149
150 @Override
151 public String prettyPrint() {
152 StringBuilder result = new StringBuilder();
153 result.append("\"c1\"=" + prettyPrintValue(fC1) + ", ");
154 result.append("\"c2\"=" + prettyPrintValue(fC2));
155 return result.toString();
156 }
157
158 @Override
159 public int hashCode() {
160 return Objects.hash(fC1, fC2);
161 }
162
163 @Override
164 public boolean equals(final Object obj) {
165 if (this == obj)
166 return true;
167 if (obj == null) {
168 return false;
169 }
170 if ((obj instanceof SuperTypes.Match)) {
171 SuperTypes.Match other = (SuperTypes.Match) obj;
172 return Objects.equals(fC1, other.fC1) && Objects.equals(fC2, other.fC2);
173 } else {
174 // this should be infrequent
175 if (!(obj instanceof IPatternMatch)) {
176 return false;
177 }
178 IPatternMatch otherSig = (IPatternMatch) obj;
179 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
180 }
181 }
182
183 @Override
184 public SuperTypes specification() {
185 return SuperTypes.instance();
186 }
187
188 /**
189 * Returns an empty, mutable match.
190 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
191 *
192 * @return the empty match.
193 *
194 */
195 public static SuperTypes.Match newEmptyMatch() {
196 return new Mutable(null, null);
197 }
198
199 /**
200 * Returns a mutable (partial) match.
201 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
202 *
203 * @param pC1 the fixed value of pattern parameter c1, or null if not bound.
204 * @param pC2 the fixed value of pattern parameter c2, or null if not bound.
205 * @return the new, mutable (partial) match object.
206 *
207 */
208 public static SuperTypes.Match newMutableMatch(final EClass pC1, final EClass pC2) {
209 return new Mutable(pC1, pC2);
210 }
211
212 /**
213 * Returns a new (partial) match.
214 * This can be used e.g. to call the matcher with a partial match.
215 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
216 * @param pC1 the fixed value of pattern parameter c1, or null if not bound.
217 * @param pC2 the fixed value of pattern parameter c2, or null if not bound.
218 * @return the (partial) match object.
219 *
220 */
221 public static SuperTypes.Match newMatch(final EClass pC1, final EClass pC2) {
222 return new Immutable(pC1, pC2);
223 }
224
225 private static final class Mutable extends SuperTypes.Match {
226 Mutable(final EClass pC1, final EClass pC2) {
227 super(pC1, pC2);
228 }
229
230 @Override
231 public boolean isMutable() {
232 return true;
233 }
234 }
235
236 private static final class Immutable extends SuperTypes.Match {
237 Immutable(final EClass pC1, final EClass pC2) {
238 super(pC1, pC2);
239 }
240
241 @Override
242 public boolean isMutable() {
243 return false;
244 }
245 }
246 }
247
248 /**
249 * Generated pattern matcher API of the queries.superTypes pattern,
250 * providing pattern-specific query methods.
251 *
252 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
253 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
254 *
255 * <p>Matches of the pattern will be represented as {@link Match}.
256 *
257 * <p>Original source:
258 * <code><pre>
259 * pattern superTypes(c1:EClass, c2:EClass){
260 * EClass.eSuperTypes(c1,c2);
261 * }
262 * </pre></code>
263 *
264 * @see Match
265 * @see SuperTypes
266 *
267 */
268 public static class Matcher extends BaseMatcher<SuperTypes.Match> {
269 /**
270 * Initializes the pattern matcher within an existing VIATRA Query engine.
271 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
272 *
273 * @param engine the existing VIATRA Query engine in which this matcher will be created.
274 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
275 *
276 */
277 public static SuperTypes.Matcher on(final ViatraQueryEngine engine) {
278 // check if matcher already exists
279 Matcher matcher = engine.getExistingMatcher(querySpecification());
280 if (matcher == null) {
281 matcher = (Matcher)engine.getMatcher(querySpecification());
282 }
283 return matcher;
284 }
285
286 /**
287 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
288 * @return an initialized matcher
289 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
290 *
291 */
292 public static SuperTypes.Matcher create() {
293 return new Matcher();
294 }
295
296 private static final int POSITION_C1 = 0;
297
298 private static final int POSITION_C2 = 1;
299
300 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(SuperTypes.Matcher.class);
301
302 /**
303 * Initializes the pattern matcher within an existing VIATRA Query engine.
304 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
305 *
306 * @param engine the existing VIATRA Query engine in which this matcher will be created.
307 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
308 *
309 */
310 private Matcher() {
311 super(querySpecification());
312 }
313
314 /**
315 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
316 * @param pC1 the fixed value of pattern parameter c1, or null if not bound.
317 * @param pC2 the fixed value of pattern parameter c2, or null if not bound.
318 * @return matches represented as a Match object.
319 *
320 */
321 public Collection<SuperTypes.Match> getAllMatches(final EClass pC1, final EClass pC2) {
322 return rawStreamAllMatches(new Object[]{pC1, pC2}).collect(Collectors.toSet());
323 }
324
325 /**
326 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
327 * </p>
328 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
329 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
330 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
331 * @param pC1 the fixed value of pattern parameter c1, or null if not bound.
332 * @param pC2 the fixed value of pattern parameter c2, or null if not bound.
333 * @return a stream of matches represented as a Match object.
334 *
335 */
336 public Stream<SuperTypes.Match> streamAllMatches(final EClass pC1, final EClass pC2) {
337 return rawStreamAllMatches(new Object[]{pC1, pC2});
338 }
339
340 /**
341 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
342 * Neither determinism nor randomness of selection is guaranteed.
343 * @param pC1 the fixed value of pattern parameter c1, or null if not bound.
344 * @param pC2 the fixed value of pattern parameter c2, or null if not bound.
345 * @return a match represented as a Match object, or null if no match is found.
346 *
347 */
348 public Optional<SuperTypes.Match> getOneArbitraryMatch(final EClass pC1, final EClass pC2) {
349 return rawGetOneArbitraryMatch(new Object[]{pC1, pC2});
350 }
351
352 /**
353 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
354 * under any possible substitution of the unspecified parameters (if any).
355 * @param pC1 the fixed value of pattern parameter c1, or null if not bound.
356 * @param pC2 the fixed value of pattern parameter c2, or null if not bound.
357 * @return true if the input is a valid (partial) match of the pattern.
358 *
359 */
360 public boolean hasMatch(final EClass pC1, final EClass pC2) {
361 return rawHasMatch(new Object[]{pC1, pC2});
362 }
363
364 /**
365 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
366 * @param pC1 the fixed value of pattern parameter c1, or null if not bound.
367 * @param pC2 the fixed value of pattern parameter c2, or null if not bound.
368 * @return the number of pattern matches found.
369 *
370 */
371 public int countMatches(final EClass pC1, final EClass pC2) {
372 return rawCountMatches(new Object[]{pC1, pC2});
373 }
374
375 /**
376 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
377 * Neither determinism nor randomness of selection is guaranteed.
378 * @param pC1 the fixed value of pattern parameter c1, or null if not bound.
379 * @param pC2 the fixed value of pattern parameter c2, or null if not bound.
380 * @param processor the action that will process the selected match.
381 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
382 *
383 */
384 public boolean forOneArbitraryMatch(final EClass pC1, final EClass pC2, final Consumer<? super SuperTypes.Match> processor) {
385 return rawForOneArbitraryMatch(new Object[]{pC1, pC2}, processor);
386 }
387
388 /**
389 * Returns a new (partial) match.
390 * This can be used e.g. to call the matcher with a partial match.
391 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
392 * @param pC1 the fixed value of pattern parameter c1, or null if not bound.
393 * @param pC2 the fixed value of pattern parameter c2, or null if not bound.
394 * @return the (partial) match object.
395 *
396 */
397 public SuperTypes.Match newMatch(final EClass pC1, final EClass pC2) {
398 return SuperTypes.Match.newMatch(pC1, pC2);
399 }
400
401 /**
402 * Retrieve the set of values that occur in matches for c1.
403 * @return the Set of all values or empty set if there are no matches
404 *
405 */
406 protected Stream<EClass> rawStreamAllValuesOfc1(final Object[] parameters) {
407 return rawStreamAllValues(POSITION_C1, parameters).map(EClass.class::cast);
408 }
409
410 /**
411 * Retrieve the set of values that occur in matches for c1.
412 * @return the Set of all values or empty set if there are no matches
413 *
414 */
415 public Set<EClass> getAllValuesOfc1() {
416 return rawStreamAllValuesOfc1(emptyArray()).collect(Collectors.toSet());
417 }
418
419 /**
420 * Retrieve the set of values that occur in matches for c1.
421 * @return the Set of all values or empty set if there are no matches
422 *
423 */
424 public Stream<EClass> streamAllValuesOfc1() {
425 return rawStreamAllValuesOfc1(emptyArray());
426 }
427
428 /**
429 * Retrieve the set of values that occur in matches for c1.
430 * </p>
431 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
432 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
433 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
434 *
435 * @return the Stream of all values or empty set if there are no matches
436 *
437 */
438 public Stream<EClass> streamAllValuesOfc1(final SuperTypes.Match partialMatch) {
439 return rawStreamAllValuesOfc1(partialMatch.toArray());
440 }
441
442 /**
443 * Retrieve the set of values that occur in matches for c1.
444 * </p>
445 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
446 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
447 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
448 *
449 * @return the Stream of all values or empty set if there are no matches
450 *
451 */
452 public Stream<EClass> streamAllValuesOfc1(final EClass pC2) {
453 return rawStreamAllValuesOfc1(new Object[]{null, pC2});
454 }
455
456 /**
457 * Retrieve the set of values that occur in matches for c1.
458 * @return the Set of all values or empty set if there are no matches
459 *
460 */
461 public Set<EClass> getAllValuesOfc1(final SuperTypes.Match partialMatch) {
462 return rawStreamAllValuesOfc1(partialMatch.toArray()).collect(Collectors.toSet());
463 }
464
465 /**
466 * Retrieve the set of values that occur in matches for c1.
467 * @return the Set of all values or empty set if there are no matches
468 *
469 */
470 public Set<EClass> getAllValuesOfc1(final EClass pC2) {
471 return rawStreamAllValuesOfc1(new Object[]{null, pC2}).collect(Collectors.toSet());
472 }
473
474 /**
475 * Retrieve the set of values that occur in matches for c2.
476 * @return the Set of all values or empty set if there are no matches
477 *
478 */
479 protected Stream<EClass> rawStreamAllValuesOfc2(final Object[] parameters) {
480 return rawStreamAllValues(POSITION_C2, parameters).map(EClass.class::cast);
481 }
482
483 /**
484 * Retrieve the set of values that occur in matches for c2.
485 * @return the Set of all values or empty set if there are no matches
486 *
487 */
488 public Set<EClass> getAllValuesOfc2() {
489 return rawStreamAllValuesOfc2(emptyArray()).collect(Collectors.toSet());
490 }
491
492 /**
493 * Retrieve the set of values that occur in matches for c2.
494 * @return the Set of all values or empty set if there are no matches
495 *
496 */
497 public Stream<EClass> streamAllValuesOfc2() {
498 return rawStreamAllValuesOfc2(emptyArray());
499 }
500
501 /**
502 * Retrieve the set of values that occur in matches for c2.
503 * </p>
504 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
505 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
506 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
507 *
508 * @return the Stream of all values or empty set if there are no matches
509 *
510 */
511 public Stream<EClass> streamAllValuesOfc2(final SuperTypes.Match partialMatch) {
512 return rawStreamAllValuesOfc2(partialMatch.toArray());
513 }
514
515 /**
516 * Retrieve the set of values that occur in matches for c2.
517 * </p>
518 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
519 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
520 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
521 *
522 * @return the Stream of all values or empty set if there are no matches
523 *
524 */
525 public Stream<EClass> streamAllValuesOfc2(final EClass pC1) {
526 return rawStreamAllValuesOfc2(new Object[]{pC1, null});
527 }
528
529 /**
530 * Retrieve the set of values that occur in matches for c2.
531 * @return the Set of all values or empty set if there are no matches
532 *
533 */
534 public Set<EClass> getAllValuesOfc2(final SuperTypes.Match partialMatch) {
535 return rawStreamAllValuesOfc2(partialMatch.toArray()).collect(Collectors.toSet());
536 }
537
538 /**
539 * Retrieve the set of values that occur in matches for c2.
540 * @return the Set of all values or empty set if there are no matches
541 *
542 */
543 public Set<EClass> getAllValuesOfc2(final EClass pC1) {
544 return rawStreamAllValuesOfc2(new Object[]{pC1, null}).collect(Collectors.toSet());
545 }
546
547 @Override
548 protected SuperTypes.Match tupleToMatch(final Tuple t) {
549 try {
550 return SuperTypes.Match.newMatch((EClass) t.get(POSITION_C1), (EClass) t.get(POSITION_C2));
551 } catch(ClassCastException e) {
552 LOGGER.error("Element(s) in tuple not properly typed!",e);
553 return null;
554 }
555 }
556
557 @Override
558 protected SuperTypes.Match arrayToMatch(final Object[] match) {
559 try {
560 return SuperTypes.Match.newMatch((EClass) match[POSITION_C1], (EClass) match[POSITION_C2]);
561 } catch(ClassCastException e) {
562 LOGGER.error("Element(s) in array not properly typed!",e);
563 return null;
564 }
565 }
566
567 @Override
568 protected SuperTypes.Match arrayToMatchMutable(final Object[] match) {
569 try {
570 return SuperTypes.Match.newMutableMatch((EClass) match[POSITION_C1], (EClass) match[POSITION_C2]);
571 } catch(ClassCastException e) {
572 LOGGER.error("Element(s) in array not properly typed!",e);
573 return null;
574 }
575 }
576
577 /**
578 * @return the singleton instance of the query specification of this pattern
579 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
580 *
581 */
582 public static IQuerySpecification<SuperTypes.Matcher> querySpecification() {
583 return SuperTypes.instance();
584 }
585 }
586
587 private SuperTypes() {
588 super(GeneratedPQuery.INSTANCE);
589 }
590
591 /**
592 * @return the singleton instance of the query specification
593 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
594 *
595 */
596 public static SuperTypes instance() {
597 try{
598 return LazyHolder.INSTANCE;
599 } catch (ExceptionInInitializerError err) {
600 throw processInitializerError(err);
601 }
602 }
603
604 @Override
605 protected SuperTypes.Matcher instantiate(final ViatraQueryEngine engine) {
606 return SuperTypes.Matcher.on(engine);
607 }
608
609 @Override
610 public SuperTypes.Matcher instantiate() {
611 return SuperTypes.Matcher.create();
612 }
613
614 @Override
615 public SuperTypes.Match newEmptyMatch() {
616 return SuperTypes.Match.newEmptyMatch();
617 }
618
619 @Override
620 public SuperTypes.Match newMatch(final Object... parameters) {
621 return SuperTypes.Match.newMatch((org.eclipse.emf.ecore.EClass) parameters[0], (org.eclipse.emf.ecore.EClass) parameters[1]);
622 }
623
624 /**
625 * Inner class allowing the singleton instance of {@link SuperTypes} to be created
626 * <b>not</b> at the class load time of the outer class,
627 * but rather at the first call to {@link SuperTypes#instance()}.
628 *
629 * <p> This workaround is required e.g. to support recursion.
630 *
631 */
632 private static class LazyHolder {
633 private static final SuperTypes INSTANCE = new SuperTypes();
634
635 /**
636 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
637 * This initialization order is required to support indirect recursion.
638 *
639 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
640 *
641 */
642 private static final Object STATIC_INITIALIZER = ensureInitialized();
643
644 public static Object ensureInitialized() {
645 INSTANCE.ensureInitializedInternal();
646 return null;
647 }
648 }
649
650 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
651 private static final SuperTypes.GeneratedPQuery INSTANCE = new GeneratedPQuery();
652
653 private final PParameter parameter_c1 = new PParameter("c1", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT);
654
655 private final PParameter parameter_c2 = new PParameter("c2", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT);
656
657 private final List<PParameter> parameters = Arrays.asList(parameter_c1, parameter_c2);
658
659 private GeneratedPQuery() {
660 super(PVisibility.PUBLIC);
661 }
662
663 @Override
664 public String getFullyQualifiedName() {
665 return "queries.superTypes";
666 }
667
668 @Override
669 public List<String> getParameterNames() {
670 return Arrays.asList("c1","c2");
671 }
672
673 @Override
674 public List<PParameter> getParameters() {
675 return parameters;
676 }
677
678 @Override
679 public Set<PBody> doGetContainedBodies() {
680 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
681 Set<PBody> bodies = new LinkedHashSet<>();
682 {
683 PBody body = new PBody(this);
684 PVariable var_c1 = body.getOrCreateVariableByName("c1");
685 PVariable var_c2 = body.getOrCreateVariableByName("c2");
686 new TypeConstraint(body, Tuples.flatTupleOf(var_c1), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
687 new TypeConstraint(body, Tuples.flatTupleOf(var_c2), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
688 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
689 new ExportedParameter(body, var_c1, parameter_c1),
690 new ExportedParameter(body, var_c2, parameter_c2)
691 ));
692 // EClass.eSuperTypes(c1,c2)
693 new TypeConstraint(body, Tuples.flatTupleOf(var_c1), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
694 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
695 new TypeConstraint(body, Tuples.flatTupleOf(var_c1, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass", "eSuperTypes")));
696 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass")));
697 new Equality(body, var__virtual_0_, var_c2);
698 bodies.add(body);
699 }
700 return bodies;
701 }
702 }
703}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql
new file mode 100644
index 00000000..3e7fc68c
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql
@@ -0,0 +1,54 @@
1package ca.mcgill.ecse.socialnetwork.plugin
2
3import epackage "http://ecse.mcgill.ca/socialnetwork"
4
5//@Constraint(message="terminatorAndInformation", severity="error", key={T})
6//pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
7// FunctionalOutput.outgoingLinks(Out,I);
8// FunctionalOutput.terminator(Out,T);
9//} or {
10// InformationLink.to(I,In);
11// FunctionalInput.terminator(In,T);
12//}
13
14@Constraint(message="singleFriendship", severity="error", key={p1})
15pattern singleFriendship(p1: Person) {
16 find friendship(p1, p);
17 neg find friendship(p, p1);
18}
19
20//@Constraint(message="cycle", severity="error", key={p})
21//pattern cycleInParenthood(p: Person) {
22// find isAncestor(p, p);
23//}
24
25@Constraint(message="noFriend", severity="error", key={p})
26pattern noFriend(p: Person){
27 neg find friendship(p, _);
28}
29
30//@Constraint(message="brothhoodParent", severity="error", key={p1,p2})
31//pattern brothhoodParent(p1: Person, p2: Person){
32// Person.parents(p1, parent1);
33// Person.parents(p2, parent2);
34// parent1 == parent2;
35// find isAncestor(p1, p2);
36//}
37@Constraint(message="selfFriend", severity="error", key={p})
38pattern selfFriend(p: Person){
39 Person.friends(p,p);
40}
41
42pattern friendship(p1: Person, p2: Person){
43 Person.friends(p1,p2);
44}
45
46//pattern isAncestor(person : Person, ancestor : Person){
47// Person.parents(person, ancestor);
48//} or {
49// Person.parents(person, parent);
50// find isAncestor(parent, ancestor);
51//}
52
53
54
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
new file mode 100644
index 00000000..e4e5b61f
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java
@@ -0,0 +1,203 @@
1package ca.mcgill.ecse.socialnetwork.runner;
2
3import java.io.File;
4import java.io.FileNotFoundException;
5import java.io.PrintStream;
6import java.util.ArrayList;
7import java.util.Map;
8import java.util.Scanner;
9
10import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain;
11import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistance;
12import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph;
13import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.CsvFileWriter;
14import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.GraphReader;
15import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.RepMetricsReader;
16import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup;
17import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor;
18import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage;
19import socialnetwork.Person;
20
21public class Main {
22
23 private static String runWithPath(String path) {
24 String message = StandaloneScriptExecutor.executeScript(path);
25 return message;
26 }
27
28 private static String configFolder = "yakinduum/config22/";
29 private static String configFileName = configFolder + "info_old_metric.csv";
30 private static String aggregateViolationMeasureFileName = configFolder + "aggregateInfo.csv";
31 private static String fileReadFolder = "output/Ecore_100/";
32
33 public static void main(String args[]) {
34 String ecoreFile = args[0];
35 System.out.println("Generation Started");
36
37 System.out.println(System.getProperty("java.library.path"));
38
39 long begin = System.currentTimeMillis();
40 String message = runWithPath(ecoreFile);
41 long elapsed = System.currentTimeMillis() - begin;
42
43 if(message != null) {
44 System.out.println(message);
45 return;
46 }
47// ArrayList<ArrayList<String>> output = new ArrayList<ArrayList<String>>();
48// String time = formatTime(elapsed);
49// ArrayList<String> infoOutput = new ArrayList<String>();
50// infoOutput.add(time);
51// output.add(infoOutput);
52// System.out.println(time);
53// CsvFileWriter.write(output, configFileName);
54//
55//
56// output = new ArrayList<ArrayList<String>>();
57// output.add(prepareInfo());
58// CsvFileWriter.append(output, configFileName);
59//
60// for(int i = 0; i < 50; i++) {
61// generateModel(i+1);
62// }
63// aggregateViolationMeasure(50);
64 System.out.println("Finished");
65 }
66
67// public static void generateModel(int run) {
68// String filename = run+"_1.xmi";
69// //prepare initial info
70// ArrayList<ArrayList<String>> output = new ArrayList<ArrayList<String>>();
71// ArrayList<String> infoOutput = new ArrayList<String>();
72// infoOutput.add(run+ "");
73// infoOutput.addAll(calculateMetric(run));
74//
75// YakinduumModel model = new YakinduumModel(fileReadFolder +"run" +run + "/" + filename);
76// int violationCount = ViolationCheck.calculateViolationCounts(model.yakinduum);
77// infoOutput.add(violationCount + "");
78//
79//
80//
81// //save model to another directory
82// model.save(configFolder + run + ".xmi");
83// output.add(infoOutput);
84// CsvFileWriter.append(output, configFileName);
85// }
86//
87// public static void singleModelViolationMeasure(int run) {
88// String filename = run+"_1.xmi";
89// //prepare initial info
90// ArrayList<ArrayList<String>> output = new ArrayList<ArrayList<String>>();
91// ArrayList<String> infoOutput = new ArrayList<String>();
92// infoOutput.add(run+ "");
93//
94// YakinduumModel model = new YakinduumModel(fileReadFolder+"/run"+run+"/"+ filename);
95//
96// //parse map of violation counts to two list and add them to the result list
97// Map<String, Integer> map = ViolationCheck.violationMaps(model.yakinduum);
98// ArrayList<String> counts = new ArrayList<String>();
99// ArrayList<String> violationNames = new ArrayList<String>(map.keySet());
100// for(int i = 0; i < violationNames.size(); i++) {
101// String name = violationNames.get(i);
102// int total = map.get(name);
103// counts.add(total + "");
104// }
105// output.add(infoOutput);
106// output.add(violationNames);
107// output.add(counts);
108//
109// CsvFileWriter.append(output, configFileName);
110// }
111//
112// public static void aggregateViolationMeasure(int size) {
113// ArrayList<ArrayList<String>> output = new ArrayList<ArrayList<String>>();
114// ArrayList<String> counts = new ArrayList<String>();
115// ArrayList<String> violationNames = null;
116// for(int run = 1; run < size+1; run++) {
117// String filename = run+"_1.xmi";
118// YakinduumModel model = new YakinduumModel(fileReadFolder+"/run"+run+"/"+ filename);
119//
120// Map<String, Integer> map = ViolationCheck.violationMaps(model.yakinduum);
121// if(run == 1) {
122// violationNames = new ArrayList<String>(map.keySet());
123// for(int i = 0; i < violationNames.size(); i++) {
124// String name = violationNames.get(i);
125// int total = map.get(name);
126// counts.add(total + "");
127// }
128// }else {
129// for(int i = 0; i < violationNames.size(); i++) {
130// int count = Integer.parseInt(counts.get(i));
131// String name = violationNames.get(i);
132// int total = count + map.get(name);
133// counts.set(i, total + "");
134// }
135// }
136// }
137//
138// for(int i = 0; i < counts.size(); i++) {
139// double count = Integer.parseInt(counts.get(i)) / (double) size;
140// counts.set(i, count + "");
141// }
142//
143// output.add(violationNames);
144// output.add(counts);
145// CsvFileWriter.write(output, aggregateViolationMeasureFileName);
146// }
147//
148 public static ArrayList<String> calculateMetric(int run) {
149 //read model and metric
150 ArrayList<String> output = new ArrayList<String>();
151 GraphReader reader = new GraphReader(YakindummPackage.eINSTANCE, ".xmi");
152 EMFGraph graph = reader.readModel(fileReadFolder+"/run"+run, run + "_1.xmi");
153 MetricSampleGroup metrics = RepMetricsReader.read(Domain.Yakindumm);
154 //KS distance
155 KSDistance ks = new KSDistance(metrics);
156
157 //calculate and put metric data to output array
158 MetricSampleGroup samples = graph.evaluateAllMetricsToSamples();
159 output.add(graph.getStatistic().getAllNodes().size() + "");
160 output.add(ks.outDegreeDistance(samples.outDegreeSamples) + "");
161 output.add(ks.naDistance(samples.naSamples)+ "");
162 output.add(ks.mpcDistance(samples.mpcSamples) + "");
163 output.add(ks.typedOutDegreeDistance(samples.typedOutDegreeSamples) + "");
164 return output;
165 }
166
167 public static ArrayList<String> prepareInfo() {
168 ArrayList<String> info = new ArrayList<String>();
169 info.add("ID");
170 info.add("# of Nodes");
171 info.add("Out Degree");
172 info.add("Node Activity");
173 info.add("MPC");
174 info.add("Typed Out Degree");
175 info.add("Violations");
176 return info;
177 }
178
179 public static String formatTime(long time) {
180 long mili = time % 1000;
181 long second = (time / 1000) % 60;
182 long minute = (time / (1000 * 60));
183 return String.format("%d : %d.%d", minute, second, mili);
184 }
185
186 public static void statistics() {
187 String uri = "output/1.xmi";
188 SocialNetworkModel socialNetwork = new SocialNetworkModel(uri);
189 System.out.println(socialNetwork.getPersons().size());
190
191 File file = new File("model/statistics/output.txt");
192 try {
193 @SuppressWarnings("resource")
194 PrintStream out = new PrintStream(file);
195 for(Person p : socialNetwork.getPersons()) {
196 out.println(p.getFriends().size());
197 }
198 } catch (FileNotFoundException e) {
199 e.printStackTrace();
200 }
201 System.out.println("Output Finished");
202 }
203}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Persisitence.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Persisitence.java
new file mode 100644
index 00000000..3ebede25
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Persisitence.java
@@ -0,0 +1,63 @@
1package ca.mcgill.ecse.socialnetwork.runner;
2import java.io.IOException;
3import java.util.Collections;
4import java.util.Map;
5
6import org.eclipse.emf.common.util.URI;
7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.emf.ecore.resource.Resource;
9import org.eclipse.emf.ecore.resource.ResourceSet;
10import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
11import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
12
13public class Persisitence<G extends EObject> {
14 private String uri;
15
16 public Persisitence (String suffix, String uri){
17 //prepare to save
18 Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
19 Map<String, Object> m = reg.getExtensionToFactoryMap();
20 m.put(suffix, new XMIResourceFactoryImpl());
21 this.uri = uri;
22 }
23
24
25 /**
26 * Save the model
27 * @return whether the model has saved successfully
28 */
29 public boolean save(G model) {
30 //create resource
31 ResourceSet resSet = new ResourceSetImpl();
32 Resource resource = resSet.createResource(URI.createURI(uri));
33 resource.getContents().add(model);
34 try {
35 resource.save(Collections.EMPTY_MAP);
36 return true;
37 }catch(IOException e) {
38 e.printStackTrace();
39 return false;
40 }
41 }
42
43 /**
44 * load the model from persistent
45 * @return: the model loaded
46 */
47 @SuppressWarnings("unchecked")
48 public G load() {
49 G model = null;
50// try {
51 ResourceSet resSet = new ResourceSetImpl();
52 Resource resource = resSet.getResource(URI.createURI(uri), true);
53 model = (G) resource.getContents().get(0);
54// }catch (org.eclipse.emf.common.util.WrappedException e) {
55// // if the file cannot be found then return null
56// if(e.getCause().getClass() == java.io.FileNotFoundException.class) {
57// return null;
58// }
59// }
60
61 return model;
62 }
63}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/RunnerTests.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/RunnerTests.java
new file mode 100644
index 00000000..c09c55be
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/RunnerTests.java
@@ -0,0 +1,18 @@
1package ca.mcgill.ecse.socialnetwork.runner;
2
3import org.junit.Test;
4
5import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor;
6
7public class RunnerTests {
8 private static String runWithPath(String path) {
9 String message = StandaloneScriptExecutor.executeScript(path);
10 return message;
11 }
12
13 @Test
14 public void generateModel() {
15 String message = runWithPath("SocialNetworkGeneration.vsconfig");
16 System.out.println(message);
17 }
18}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/SocialNetworkModel.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/SocialNetworkModel.java
new file mode 100644
index 00000000..51c50b11
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/SocialNetworkModel.java
@@ -0,0 +1,62 @@
1package ca.mcgill.ecse.socialnetwork.runner;
2
3import org.eclipse.emf.common.util.EList;
4
5import socialnetwork.Person;
6import socialnetwork.SocialNetwork;
7import socialnetwork.SocialnetworkFactory;
8import socialnetwork.SocialnetworkPackage;
9import socialnetwork.impl.SocialnetworkFactoryImpl;
10
11
12
13public class SocialNetworkModel {
14 private final static String SUFFIX = "xmi";
15
16 private static boolean isInit = false;
17
18 public static void init() {
19 SocialnetworkFactory.eINSTANCE.eClass();
20 SocialnetworkPackage.eINSTANCE.eClass();
21 SocialnetworkFactoryImpl.init();
22 }
23
24 // container for the social network model
25 public SocialNetwork socialNetwork;
26
27 // factory for social network model
28 SocialnetworkFactory factory;
29
30 // persistent
31 Persisitence<SocialNetwork> persistence;
32
33
34 public SocialNetworkModel(String uri){
35 if(!isInit) {
36 init();
37 }
38
39 //create persistence
40 persistence = new Persisitence<SocialNetwork>(SUFFIX, uri);
41 factory = SocialnetworkFactory.eINSTANCE;
42 // try load the model
43 this.socialNetwork = persistence.load();
44 if(this.socialNetwork == null) {
45 this.socialNetwork = factory.createSocialNetwork();
46 }
47 }
48
49 public Person createPerson() {
50 Person p = factory.createPerson();
51 socialNetwork.getPersons().add(p);
52 return p;
53 }
54
55 public EList<Person> getPersons(){
56 return socialNetwork.getPersons();
57 }
58
59 public boolean save() {
60 return persistence.save(socialNetwork);
61 }
62}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/YakinduumModel.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/YakinduumModel.java
new file mode 100644
index 00000000..803daff4
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/YakinduumModel.java
@@ -0,0 +1,52 @@
1package ca.mcgill.ecse.socialnetwork.runner;
2
3import javax.annotation.Resource;
4
5import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Statechart;
6import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummFactory;
7import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage;
8import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl.YakindummFactoryImpl;
9import socialnetwork.SocialNetwork;
10import socialnetwork.SocialnetworkFactory;
11
12public class YakinduumModel {
13 private final static String SUFFIX = "xmi";
14
15 private static boolean isInit = false;
16
17 private String uri;
18
19 public static void init() {
20 YakindummFactory.eINSTANCE.eClass();
21 YakindummPackage.eINSTANCE.eClass();
22 YakindummFactoryImpl.init();
23 }
24
25 // container for the social network model
26 public Statechart yakinduum;
27
28
29 // persistent
30 Persisitence<Statechart> persistence;
31
32
33 public YakinduumModel(String uri){
34 if(!isInit) {
35 init();
36 }
37 this.uri = uri;
38 //create persistence
39 persistence = new Persisitence<Statechart>(SUFFIX, uri);
40 // try load the model
41 this.yakinduum = persistence.load();
42 }
43
44 public boolean save(String uri) {
45 if(this.uri.equals(uri)) {
46 return persistence.save(yakinduum);
47 }else {
48 persistence = new Persisitence<Statechart>(SUFFIX, uri);
49 return persistence.save(yakinduum);
50 }
51 }
52}
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/100.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/100.csv
new file mode 100644
index 00000000..fd1af09c
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/100.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,_Solution0FoundAt
25,1,InsuficientResourcesResultImpl,26,1815,305292,1000,16140,15,12210,260570,0,0,
35,2,InsuficientResourcesResultImpl,26,1237,301846,700,14659,0,12249,259139,0,0,
45,3,InsuficientResourcesResultImpl,26,1218,301687,600,15765,0,12876,256432,0,0,
55,4,InsuficientResourcesResultImpl,26,1294,302248,800,18015,0,11131,255608,0,0,
65,5,InsuficientResourcesResultImpl,26,1290,300894,900,14893,0,11118,259377,0,0,
75,6,InsuficientResourcesResultImpl,26,1184,302351,900,16463,0,11499,258946,0,0,
85,7,ModelResultImpl,26,1180,289935,35396400,17823,0,14375,240465,0,4,287519
95,8,InsuficientResourcesResultImpl,26,1298,304757,700,12762,0,10686,266461,0,0,
105,9,ModelResultImpl,26,1166,287620,35860800,17055,0,15050,237850,0,1,285304
115,10,ModelResultImpl,26,1185,168322,32789700,15059,0,9955,132727,0,0,166044
125,11,InsuficientResourcesResultImpl,26,1176,302293,900,12773,0,10338,264930,0,0,
135,12,InsuficientResourcesResultImpl,26,1200,300206,600,14139,0,11334,260462,0,0,
145,13,InsuficientResourcesResultImpl,26,1199,305554,500,12939,0,11144,266919,0,0,
155,14,InsuficientResourcesResultImpl,26,1193,300864,700,18895,0,14266,250111,0,0,
165,15,InsuficientResourcesResultImpl,26,1197,303894,700,14501,0,12313,262474,0,0,
175,16,InsuficientResourcesResultImpl,26,1171,303003,700,13178,0,11827,263585,0,0,
185,17,InsuficientResourcesResultImpl,26,1169,305501,600,13479,0,11788,265540,0,0,
195,18,InsuficientResourcesResultImpl,26,1175,301967,700,13531,0,11415,262420,0,0,
205,19,InsuficientResourcesResultImpl,26,1274,300241,800,13254,0,11607,260895,0,0,
215,20,ModelResultImpl,26,1166,269530,42362900,17007,0,13440,223316,0,1,267245
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/30.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/30.csv
new file mode 100644
index 00000000..0022e984
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/30.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime
22,1,ModelResultImpl,19,1721,35221,15771300,32311,7042,34,1895,16580,0,1
32,2,ModelResultImpl,19,1610,35749,11651300,32635,6745,1,1736,18895,0,1
42,3,ModelResultImpl,19,1640,27258,16117300,24303,6429,0,1323,12286,0,1
52,4,ModelResultImpl,19,1634,35933,20450700,33223,6381,0,1605,20611,0,2
62,5,ModelResultImpl,19,1612,23612,11651100,19721,6887,0,1099,8730,0,0
72,6,ModelResultImpl,19,1319,22727,9964000,20364,4974,0,1147,11737,0,0
82,7,ModelResultImpl,19,1278,22340,12342400,19967,4711,0,1078,11660,0,0
92,8,ModelResultImpl,19,1292,20551,10731500,18317,4260,0,1007,11070,0,0
102,9,ModelResultImpl,19,1378,18306,12922900,15874,4176,0,928,8796,0,1
112,10,ModelResultImpl,19,1330,25726,10084700,23254,6531,0,1345,10615,0,0
122,11,ModelResultImpl,19,1229,33084,12002300,30734,5309,0,1584,19392,0,0
132,12,ModelResultImpl,19,1240,24555,9818800,22179,5967,1,1405,10083,0,0
142,13,ModelResultImpl,19,1264,28275,11451700,25939,5692,0,1395,14547,0,0
152,14,ModelResultImpl,19,1276,36197,10007300,33900,5461,0,1659,22219,0,0
162,15,ModelResultImpl,19,1230,30436,9231400,28100,5354,0,1488,16718,0,0
172,16,ModelResultImpl,19,1217,22614,8885000,20287,6795,0,1371,7299,0,0
182,17,ModelResultImpl,19,1262,29600,12922400,27253,5298,0,1528,15895,0,0
192,18,ModelResultImpl,19,1243,28214,10765500,25879,5412,0,1292,15319,0,0
202,19,ModelResultImpl,19,1299,20845,11064400,18336,5327,0,1048,8903,0,0
212,20,ModelResultImpl,19,1280,26352,10670800,23901,6709,0,1454,11410,0,1
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/50.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/50.csv
new file mode 100644
index 00000000..1ea0ccaf
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/50.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime
23,1,ModelResultImpl,7,1300,78258,16468500,75732,13071,7,4896,46003,0,2
33,2,ModelResultImpl,7,1255,72729,15062600,70201,10011,0,4148,48760,0,0
43,3,ModelResultImpl,7,1284,85751,18952400,83381,10015,0,4783,59452,0,0
53,4,ModelResultImpl,7,1312,80702,18255000,78055,9873,0,3766,56886,0,1
63,5,ModelResultImpl,7,2192,111362,20902300,108184,12705,0,5062,79232,0,0
73,6,ModelResultImpl,7,1275,88255,20727400,85645,9667,0,3925,64755,0,0
83,7,ModelResultImpl,7,1228,95312,23184200,92818,9763,0,4466,69648,0,1
93,8,ModelResultImpl,7,1421,102160,16746000,99564,13923,0,5149,68705,0,1
103,9,ModelResultImpl,7,1542,74130,15142300,71709,10116,0,4021,50574,0,0
113,10,ModelResultImpl,7,1370,106586,18544500,103524,11809,0,4614,78092,0,1
123,11,ModelResultImpl,7,1977,81554,14689300,78988,9059,0,4109,58293,0,1
133,12,ModelResultImpl,7,1282,80592,17114200,77924,10654,0,4120,55221,0,0
143,13,ModelResultImpl,7,1470,50749,14006900,47249,7112,0,2464,34560,0,0
153,14,ModelResultImpl,7,1189,96780,16081900,94561,8346,0,4262,74850,0,0
163,15,ModelResultImpl,7,1187,104866,17029000,102503,8484,0,4673,81148,0,0
173,16,ModelResultImpl,7,1192,83407,19208900,81122,8548,0,4154,61175,0,1
183,17,ModelResultImpl,7,1291,84064,18326300,81220,10675,0,4308,57616,0,0
193,18,ModelResultImpl,7,1924,92524,20324400,89145,9764,0,4238,66918,0,1
203,19,ModelResultImpl,7,1284,85575,14840500,82932,10403,0,4104,60536,0,0
213,20,ModelResultImpl,7,1239,78254,21057200,75918,9173,0,3958,55242,0,0
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/80.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/80.csv
new file mode 100644
index 00000000..034a2048
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/80.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime
24,1,ModelResultImpl,10,1339,187225,43638100,184585,14565,8,8893,149868,0,0
34,2,ModelResultImpl,10,1336,258364,34407600,255655,14281,1,9835,217586,0,0
44,3,InsuficientResourcesResultImpl,10,1321,302464,3900,,14999,0,10218,258608,0,0
54,4,ModelResultImpl,10,1569,272300,28546600,269342,14187,0,9965,231046,0,0
64,5,ModelResultImpl,10,1315,244950,39639300,242286,14765,0,10575,202813,0,0
74,6,ModelResultImpl,10,1223,185629,34348900,183286,14074,0,9227,147910,0,0
84,7,ModelResultImpl,10,1271,243243,28619100,240866,16030,0,10594,199605,0,1
94,8,ModelResultImpl,10,1229,247712,31642900,244834,14393,0,9543,207278,0,0
104,9,ModelResultImpl,10,1284,209619,24479700,207199,18848,0,10225,164689,0,0
114,10,ModelResultImpl,10,1240,252740,36766100,250104,15959,0,10730,208822,0,1
124,11,ModelResultImpl,10,1315,192678,27966300,190097,15350,0,9230,152579,0,1
134,12,ModelResultImpl,10,1767,199644,24666200,195878,16171,0,9709,158015,0,1
144,13,ModelResultImpl,10,1411,209397,29226100,206486,17127,0,10334,164735,0,0
154,14,InsuficientResourcesResultImpl,10,1292,300133,800,,13558,0,10569,258303,0,0
164,15,ModelResultImpl,10,1188,277607,29611300,275175,13898,0,11204,234760,0,0
174,16,ModelResultImpl,10,1383,257815,41453700,255328,13012,0,10666,216491,0,1
184,17,ModelResultImpl,10,1335,217424,30586300,214754,15737,0,9889,176416,0,0
194,18,ModelResultImpl,10,1317,214706,28448000,211898,15332,0,9390,175241,0,1
204,19,ModelResultImpl,10,1429,235982,26350500,233087,15836,0,10258,192499,0,1
214,20,InsuficientResourcesResultImpl,10,1150,302957,1100,,16272,0,12639,253942,0,0
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/warmup.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/warmup.csv
new file mode 100644
index 00000000..13617342
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/warmup.csv
@@ -0,0 +1,3 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,Solution0FoundAt,ExplorationInitializationTime,TransformationExecutionTime,ScopePropagationTime,MustRelationPropagationTime,TypeAnalysisTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,States,ForwardTime,BacktrackingTime,GlobalConstraintEvaluationTime,FitnessCalculationTime,ActivationSelectionTime,Decisions,Transformations,ScopePropagations,ScopePropagationsSolverCalls
21,1,ModelResultImpl,910,7801,7469,66,7546,765,258,95,0,228,1118,0,2,1495,2706,1379,10,0,1,0,1769,654,0
3
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/30.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/30.csv
new file mode 100644
index 00000000..d1ec723b
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/30.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime
22,1,ModelResultImpl,5,753,17109,13399400,16654,1789,9,696,11984,0,0
32,2,ModelResultImpl,5,628,17801,12301800,17369,1678,0,715,12727,0,0
42,3,ModelResultImpl,5,610,15430,13989100,14970,1285,0,586,11377,0,0
52,4,ModelResultImpl,5,803,14781,11475500,14220,1483,0,640,10196,0,0
62,5,ModelResultImpl,5,581,22641,12669300,22193,1558,0,707,17778,0,0
72,6,ModelResultImpl,5,611,22649,11553300,22203,1508,0,660,17965,0,0
82,7,ModelResultImpl,5,548,12438,10128400,12033,1584,0,616,7995,0,0
92,8,ModelResultImpl,5,655,17624,10593200,17198,1404,0,619,13273,0,0
102,9,ModelResultImpl,5,596,16946,10102500,16528,1717,0,705,11847,0,0
112,10,ModelResultImpl,5,537,17896,10038000,17507,1414,0,626,13625,0,0
122,11,ModelResultImpl,5,535,13771,11741600,13353,1411,0,613,9547,0,0
132,12,ModelResultImpl,5,531,16728,11768600,16257,1448,0,635,12199,0,0
142,13,ModelResultImpl,5,549,14647,11546900,14254,1201,0,573,10920,0,0
152,14,ModelResultImpl,5,552,15942,10918300,15492,1502,0,610,11459,0,0
162,15,ModelResultImpl,5,563,15196,12483700,14773,1389,0,574,11130,0,0
172,16,ModelResultImpl,5,566,10267,10445100,9864,1364,0,523,6468,0,0
182,17,ModelResultImpl,5,600,15595,8099800,15147,1341,0,624,11381,0,0
192,18,ModelResultImpl,5,561,11172,9144100,10776,1167,0,487,7740,0,0
202,19,ModelResultImpl,5,548,14818,9372000,14441,1565,0,658,10261,0,0
212,20,ModelResultImpl,5,559,17497,9881500,17059,1532,0,651,12811,0,0
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/50.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/50.csv
new file mode 100644
index 00000000..7ed016e0
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/50.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime
24,1,ModelResultImpl,11,730,72467,34401400,71866,4026,10,1998,59824,0,0
34,2,ModelResultImpl,11,761,67853,11838400,67382,3819,0,1957,55882,0,0
44,3,ModelResultImpl,11,734,45541,10393700,45056,3529,0,1779,34849,0,0
54,4,ModelResultImpl,11,619,55697,17081600,55167,3617,0,1898,44356,0,0
64,5,ModelResultImpl,11,726,64846,29758900,64208,3905,0,2030,52466,0,0
74,6,ModelResultImpl,11,712,65893,13089200,65423,3972,0,2029,53618,0,0
84,7,ModelResultImpl,11,742,50982,16405400,50469,3638,0,1857,39804,0,0
94,8,ModelResultImpl,11,590,50309,15985400,49731,3572,0,1877,39187,0,0
104,9,ModelResultImpl,11,761,65533,23499900,65008,3890,0,2000,53225,0,0
114,10,ModelResultImpl,11,688,44853,23629200,44348,3255,0,1695,34758,0,0
124,11,ModelResultImpl,11,626,59167,38070600,58611,3942,0,1864,47290,0,0
134,12,ModelResultImpl,11,642,66860,18966400,66364,3732,0,1987,54960,0,0
144,13,ModelResultImpl,11,622,65317,12053900,64842,3176,0,1633,55177,0,1
154,14,ModelResultImpl,11,687,45481,79001300,44944,3485,0,1661,35036,0,0
164,15,ModelResultImpl,11,881,74988,14027700,74444,4150,0,2191,61881,0,0
174,16,ModelResultImpl,11,691,56609,11960900,56125,3776,0,1943,45015,0,0
184,17,ModelResultImpl,11,631,103459,26319900,102823,4720,0,2390,88314,0,1
194,18,ModelResultImpl,11,2263,61989,12371400,61101,3751,0,1902,50076,0,0
204,19,ModelResultImpl,11,575,75135,19514700,74621,4810,0,2552,60068,0,1
214,20,ModelResultImpl,11,1069,94884,21924000,94062,5623,0,3121,77010,0,1
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/80.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/80.csv
new file mode 100644
index 00000000..257b7ddb
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/80.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,_Solution0FoundAt
25,1,InsuficientResourcesResultImpl,8,1163,301236,6700,11611,7,8030,261757,0,0,
35,2,ModelResultImpl,8,1125,214262,41193500,10675,0,7433,179009,0,1,213284
45,3,InsuficientResourcesResultImpl,8,1097,301100,1400,10110,0,6697,266325,0,0,
55,4,ModelResultImpl,8,1202,243793,34411800,11329,0,7710,206562,0,0,242815
65,5,ModelResultImpl,8,1130,266540,38153400,12190,0,8455,225879,0,1,265458
75,6,ModelResultImpl,8,1136,244077,43614700,10925,0,7347,207698,0,0,243138
85,7,ModelResultImpl,8,1263,270364,44901700,10715,0,7520,233664,0,0,269383
95,8,ModelResultImpl,8,1062,228653,36320200,11042,0,7673,191829,0,0,227652
105,9,ModelResultImpl,8,1060,284484,38198200,12105,0,8129,244192,0,1,283520
115,10,ModelResultImpl,8,1087,245757,38745600,10898,0,7835,208781,0,0,244833
125,11,InsuficientResourcesResultImpl,8,1003,302539,1700,9666,0,6798,267961,0,0,
135,12,ModelResultImpl,8,657,143583,35565200,6948,0,4448,120639,0,0,142951
145,13,ModelResultImpl,8,1061,292041,44607000,12010,0,8656,250579,0,1,291061
155,14,ModelResultImpl,8,1034,255307,37454100,11242,0,7789,217397,0,0,254393
165,15,InsuficientResourcesResultImpl,8,1194,300839,1500,9997,0,7300,265245,0,0,
175,16,ModelResultImpl,8,1070,274358,38762800,11730,0,7864,235472,0,1,273383
185,17,ModelResultImpl,8,1099,259378,84148300,11340,0,7784,221204,0,0,258553
195,18,ModelResultImpl,8,1084,255262,38991800,11989,0,7795,215829,0,1,254328
205,19,ModelResultImpl,8,1111,293515,47026100,12037,0,8609,252172,0,1,292504
215,20,ModelResultImpl,8,1106,278558,32886300,12080,0,8000,237985,0,1,277745
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/warmup.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/warmup.csv
new file mode 100644
index 00000000..989c2411
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/warmup.csv
@@ -0,0 +1,7 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime
21,1,ModelResultImpl,1483,2558,3108,60043900,1609,456,424,87,272,0,1
31,2,ModelResultImpl,1483,1126,1487,9020100,931,292,1,60,256,0,1
41,3,ModelResultImpl,1483,927,1424,9739900,827,263,0,51,217,0,0
51,4,ModelResultImpl,1483,886,1069,8613600,495,208,1,25,97,0,0
61,5,ModelResultImpl,1483,768,1268,9369800,856,262,0,35,223,0,0
7
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/100.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/100.csv
new file mode 100644
index 00000000..a2628ad1
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/100.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime
25,1,ModelResultImpl,12,865,91787,64960700,91078,17340,6,2469,61497,0,3
35,2,ModelResultImpl,12,956,118267,65616400,117553,16353,0,2810,85627,0,1
45,3,ModelResultImpl,12,900,116093,69616600,115364,17281,0,2800,82376,0,0
55,4,ModelResultImpl,12,907,96027,78796000,95287,19233,0,2643,63089,0,0
65,5,ModelResultImpl,12,961,133615,61595600,132840,17098,0,2970,99041,0,0
75,6,ModelResultImpl,12,917,120673,61159000,119930,18320,0,2889,85737,0,0
85,7,ModelResultImpl,12,941,101988,69310400,101183,18258,0,2694,69616,0,0
95,8,ModelResultImpl,12,910,117121,58731900,116373,16751,0,2954,83990,0,1
105,9,ModelResultImpl,12,939,98738,60204200,97988,15671,0,2643,69051,0,0
115,10,ModelResultImpl,12,907,109216,62901700,108450,18563,0,2855,74361,0,0
125,11,ModelResultImpl,12,989,101313,70288400,100570,19059,0,2653,68951,0,0
135,12,ModelResultImpl,12,847,110986,71960700,110229,20031,0,2484,77376,0,0
145,13,ModelResultImpl,12,924,99847,65101400,99083,18276,0,2732,67006,0,0
155,14,ModelResultImpl,12,908,113484,61073000,112675,20588,0,2760,77595,0,0
165,15,ModelResultImpl,12,859,107243,118083900,106494,16814,0,2826,74774,0,0
175,16,ModelResultImpl,12,896,101005,60113300,100198,16591,0,2670,70482,0,0
185,17,ModelResultImpl,12,909,150888,90178000,150032,18804,0,3644,112370,0,2
195,18,ModelResultImpl,12,1988,224882,111051700,223272,35288,0,5245,160716,0,2
205,19,ModelResultImpl,12,1710,180301,103042800,178853,31026,0,4421,125609,0,1
215,20,ModelResultImpl,12,2294,236789,120962500,234776,34043,0,4964,172403,0,1
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/120.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/120.csv
new file mode 100644
index 00000000..03ee084b
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/120.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime
22,1,ModelResultImpl,11,1049,149253,202983100,148329,21687,8,3820,108113,0,4
32,2,ModelResultImpl,11,1131,173214,111640800,172206,24930,0,3926,128120,0,1
42,3,ModelResultImpl,11,1027,157782,120804000,157006,19292,0,3948,119012,0,1
52,4,ModelResultImpl,11,1063,169577,126195200,168692,22819,0,4027,126643,0,1
62,5,ModelResultImpl,11,984,164004,93016300,163235,23449,0,3830,121474,0,1
72,6,ModelResultImpl,11,1005,146874,94077300,146111,20382,0,3734,108542,0,1
82,7,ModelResultImpl,11,904,148997,92734800,148172,19769,0,3763,111141,0,1
92,8,ModelResultImpl,11,911,145947,99103000,145197,21375,0,3757,106317,0,1
102,9,ModelResultImpl,11,911,154022,91420700,153225,21687,0,3781,113566,0,1
112,10,ModelResultImpl,11,994,144253,105623000,143479,19514,0,3736,106547,0,1
122,11,ModelResultImpl,11,943,146057,85565700,145235,20168,0,3830,107696,0,1
132,12,ModelResultImpl,11,933,153728,93877000,152956,18549,0,4136,115265,0,0
142,13,ModelResultImpl,11,989,135785,101796800,135043,19930,0,3590,98576,0,1
152,14,ModelResultImpl,11,942,158905,115031700,158150,21663,0,3796,118239,0,0
162,15,ModelResultImpl,11,897,138727,116266900,137918,19116,1,3652,102641,0,0
172,16,ModelResultImpl,11,851,145221,95232500,144453,18026,0,3913,108945,0,0
182,17,ModelResultImpl,11,928,154148,88476300,153396,21053,0,3827,113763,0,0
192,18,ModelResultImpl,11,859,166408,95546600,165666,22619,0,3922,123707,0,1
202,19,ModelResultImpl,11,909,136564,91353600,135766,17841,0,3665,101835,0,0
212,20,ModelResultImpl,11,873,147664,91153300,146866,17705,0,3874,111410,0,0
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/140.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/140.csv
new file mode 100644
index 00000000..293f51a5
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/140.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,Solution1FoundAt,ExplorationInitializationTime,TransformationExecutionTime,TypeAnalysisTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,ActivationSelectionTime,NumericalSolverSumTime,NumericalSolverProblemFormingTime,NumericalSolverSolvingTime,NumericalSolverInterpretingSolution,NumericalSolverCachingTime,NumericalSolverCallNumber,NumericalSolverCachedAnswerNumber
22,1,ModelResultImpl,49,948,55965,249,54293,1336,6134,11,17708,0,3,2,0,0,0,0,0,0,0
32,2,ModelResultImpl,49,638,65106,310,63703,837,7067,0,20870,0,3,2,0,0,0,0,0,0,0
42,3,ModelResultImpl,49,1929,69666,268,67267,1926,7537,0,20708,0,1,0,0,0,0,0,0,0,0
52,4,ModelResultImpl,49,617,67091,318,65452,1078,8304,0,18694,0,1,0,0,0,0,0,0,0,0
62,5,ModelResultImpl,49,1068,75850,145,74083,1480,8386,0,19637,0,1,0,0,0,0,0,0,0,0
72,6,ModelResultImpl,49,785,65738,301,63408,1430,7695,0,16497,0,3,0,0,0,0,0,0,0,0
82,7,ModelResultImpl,49,1055,85078,387,82888,1365,9313,0,22220,0,1,0,0,0,0,0,0,0,0
92,8,ModelResultImpl,49,1189,63131,136,61246,1586,7804,0,17380,0,2,1,0,0,0,0,0,0,0
102,9,ModelResultImpl,49,530,60098,248,58756,657,6900,0,18737,0,2,0,0,0,0,0,0,0,0
112,10,ModelResultImpl,49,706,58634,247,56728,1023,6237,0,18909,0,1,0,0,0,0,0,0,0,0
122,11,ModelResultImpl,49,683,55087,174,53903,749,5838,0,17665,0,1,0,0,0,0,0,0,0,0
132,12,ModelResultImpl,49,533,69793,206,68720,625,7827,0,22340,0,1,0,0,0,0,0,0,0,0
142,13,ModelResultImpl,49,625,58198,256,56830,781,6177,0,20134,0,2,0,0,0,0,0,0,0,0
152,14,ModelResultImpl,49,555,66046,250,64950,664,7385,0,15860,0,0,0,0,0,0,0,0,0,0
162,15,ModelResultImpl,49,586,96452,367,92042,1007,12651,0,23019,0,6,0,0,0,0,0,0,0,0
172,16,ModelResultImpl,49,1523,72460,210,70549,1181,9123,1,21222,0,2,0,0,0,0,0,0,0,0
182,17,ModelResultImpl,49,734,74551,417,72763,842,8117,0,21326,0,3,0,0,0,0,0,0,0,0
192,18,ModelResultImpl,49,1282,75020,208,72887,1459,8671,0,22596,0,3,1,0,0,0,0,0,0,0
202,19,ModelResultImpl,49,871,70125,286,68362,947,8755,0,18829,0,1,0,0,0,0,0,0,0,0
212,20,ModelResultImpl,49,633,65564,149,64398,816,7912,0,15815,0,0,0,0,0,0,0,0,0,0
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/30.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/30.csv
new file mode 100644
index 00000000..ec0afb94
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/30.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime
22,1,ModelResultImpl,37,1267,42409,28515700,41220,5066,11,614,29095,0,1
32,2,ModelResultImpl,37,1919,14164,22580700,12518,3986,2,344,5463,0,2
42,3,ModelResultImpl,37,1916,41597,31164300,40290,5050,1,614,28209,0,1
52,4,ModelResultImpl,37,2023,41518,20216100,40199,5825,0,549,27332,0,1
62,5,ModelResultImpl,37,2052,21630,32282400,20128,4713,0,456,10817,0,1
72,6,ModelResultImpl,37,2070,40984,24514000,39602,5997,0,528,26649,0,2
82,7,ModelResultImpl,37,2249,40677,22780300,39309,4977,0,600,27410,0,1
92,8,ModelResultImpl,37,1887,34102,17897400,32571,5103,0,524,21184,0,1
102,9,ModelResultImpl,37,1826,11685,12854100,10430,3316,0,298,4382,0,1
112,10,ModelResultImpl,37,1795,20933,19823700,19703,4431,0,435,10642,0,1
122,11,ModelResultImpl,37,1849,33111,18648500,31757,5743,0,375,20404,0,1
132,12,ModelResultImpl,37,1829,36099,18177300,34869,5689,0,525,22643,0,1
142,13,ModelResultImpl,37,1875,36431,20140100,35116,5371,0,500,23462,0,1
152,14,ModelResultImpl,37,1796,32322,24371800,31185,4939,0,493,20307,0,1
162,15,ModelResultImpl,37,1961,43764,24819800,42470,6248,0,593,27586,0,1
172,16,ModelResultImpl,37,1737,16231,16437300,14995,3805,0,388,7679,0,0
182,17,ModelResultImpl,37,1685,14223,36835700,12964,3783,0,338,6108,0,1
192,18,ModelResultImpl,37,1910,30550,21296200,29359,4813,0,517,18691,0,1
202,19,ModelResultImpl,37,1622,30723,17831800,29572,5299,0,560,18198,0,1
212,20,ModelResultImpl,37,1915,15410,15827800,14223,3856,0,353,7093,0,1
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/50.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/50.csv
new file mode 100644
index 00000000..80122e3d
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/50.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime
23,1,ModelResultImpl,16,1695,34619,47365200,33379,7951,23,1005,19203,0,0
33,2,ModelResultImpl,16,1952,66272,40194500,65033,10142,0,1381,45195,0,1
43,3,ModelResultImpl,16,1882,50684,57411900,49392,9412,0,1181,31167,0,2
53,4,ModelResultImpl,16,1835,52174,29585500,50841,9443,0,1265,32497,0,1
63,5,ModelResultImpl,16,1817,37087,24158900,35809,8374,0,1106,20620,0,1
73,6,ModelResultImpl,16,1822,96082,35393500,94837,10814,0,1314,71854,0,1
83,7,ModelResultImpl,16,1845,65727,37723300,64268,10857,0,1392,42620,0,1
93,8,ModelResultImpl,16,1715,36063,56419600,34810,8195,0,1065,19928,0,2
103,9,ModelResultImpl,16,1814,53418,68855200,52040,9364,0,1248,33127,0,1
113,10,ModelResultImpl,16,1688,146193,34004300,144953,23393,0,2677,96521,0,2
123,11,ModelResultImpl,16,1887,56839,38787000,55478,11029,0,1309,34905,0,1
133,12,ModelResultImpl,16,1852,43970,32684100,42779,10114,0,1121,25234,0,1
143,13,ModelResultImpl,16,1766,68078,29662000,66581,12700,0,1445,42619,0,1
153,14,ModelResultImpl,16,2033,137006,39601900,135475,10041,0,1736,110352,0,1
163,15,ModelResultImpl,16,1792,36929,30425200,35576,8499,0,1112,19855,0,1
173,16,ModelResultImpl,16,1861,79893,19417500,78581,10278,0,1253,56995,0,0
183,17,ModelResultImpl,16,1651,34149,32888300,33294,8334,0,1016,18514,0,1
193,18,ModelResultImpl,16,1799,51965,35639300,50624,11417,0,1355,29874,0,0
203,19,ModelResultImpl,16,2032,46469,44756500,45006,10308,0,1323,25809,0,1
213,20,ModelResultImpl,16,1839,75448,32863500,74051,11465,0,1499,50558,0,1
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/80.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/80.csv
new file mode 100644
index 00000000..ae7f7ca1
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/80.csv
@@ -0,0 +1,22 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime
24,1,ModelResultImpl,20,2105,122193,47975800,120819,22172,21,3111,81933,0,0
34,2,ModelResultImpl,20,948,71430,38366700,70718,10799,0,1803,49089,0,0
44,3,ModelResultImpl,20,907,71011,42371700,70320,12614,0,1751,47228,0,0
54,4,ModelResultImpl,20,888,57574,43253600,56870,10097,0,1721,37819,0,0
64,5,ModelResultImpl,20,918,50961,39099900,50235,9718,0,1667,31881,0,0
74,6,ModelResultImpl,20,929,54262,48948700,53554,10095,0,1701,35294,0,0
84,7,ModelResultImpl,20,914,69271,42306400,68596,12610,0,1788,45775,0,0
94,8,ModelResultImpl,20,887,58304,42858800,57604,10861,0,1641,37653,0,0
104,9,ModelResultImpl,20,923,61436,40388600,60755,11478,0,1812,38983,0,0
114,10,ModelResultImpl,20,950,51010,44099800,50294,11361,0,1496,30951,0,1
124,11,ModelResultImpl,20,879,56153,40079800,55455,11776,0,1587,35227,0,0
134,12,ModelResultImpl,20,939,55164,41385200,54450,9786,0,1675,35778,0,0
144,13,ModelResultImpl,20,947,59424,49539400,58684,10955,0,1776,38126,0,0
154,14,ModelResultImpl,20,973,61843,36537600,61086,10883,0,1685,40830,0,0
164,15,ModelResultImpl,20,867,54362,38663100,53666,10015,0,1611,35234,0,0
174,16,ModelResultImpl,20,915,108777,49507000,108033,20987,0,2938,71959,0,1
184,17,ModelResultImpl,20,922,55218,41448600,54548,9665,0,1657,36387,0,0
194,18,ModelResultImpl,20,921,57210,60622400,56526,10429,0,1747,36425,0,0
204,19,ModelResultImpl,20,911,70900,47211300,70230,11669,0,1714,48547,0,0
214,20,ModelResultImpl,20,887,74363,36468500,73658,12552,0,1800,50208,0,0
22
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/warmup.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/warmup.csv
new file mode 100644
index 00000000..438b0c46
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/warmup.csv
@@ -0,0 +1,3 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,Solution0FoundAt,ExplorationInitializationTime,TransformationExecutionTime,ScopePropagationTime,MustRelationPropagationTime,TypeAnalysisTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,States,ForwardTime,BacktrackingTime,GlobalConstraintEvaluationTime,FitnessCalculationTime,ActivationSelectionTime,Decisions,Transformations,ScopePropagations,ScopePropagationsSolverCalls
21,1,ModelResultImpl,937,7407,70133,650,70197,1168,1392,492,0,216,25676,0,5,14735,20985,10955,17,0,4,0,15313,8859,0
3
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/file.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/file.csv
new file mode 100644
index 00000000..c3c77053
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/file.csv
@@ -0,0 +1,4 @@
1Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,_Solution0FoundAt
21,1,InsuficientResourcesResultImpl,453,3378,5255,7500,1236,131,79,245,0,0,
31,2,ModelResultImpl,453,1965,4628,31696400,1014,3,58,307,0,1,1957
4
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig b/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig
new file mode 100644
index 00000000..618d7b48
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig
@@ -0,0 +1,107 @@
1import epackage "../../../Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.ecore"
2import viatra "../../../Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql"
3
4generate {
5 metamodel = { package yakindumm excluding { Synchronization}}
6 constraints = { package hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu }
7 partial-model = { "inputs/start.xmi"}
8
9 solver = ViatraSolver
10
11 scope = {
12 #node = 200
13 }
14
15 number = 1
16 runs = 1
17 config = {
18 log-level = none,
19 "optional-wf" = "false",
20 "realistic-guidance" = "Composite",
21 "allow-must-violations" = "false",
22 "domain" = "Yakindumm",
23 "scopePropagator" = "typeHierarchy"
24 }
25
26 statistics = "statistics/Yakindu/warmup.csv" //give different set up different filenames
27 debug = "debug"
28 output = "output/Yakindu/run_time/"
29}
30
31// generate {
32// metamodel = { package yakindumm excluding { Synchronization}}
33// constraints = { package hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu }
34// partial-model = { "inputs/start.xmi"}
35
36// solver = ViatraSolver
37
38// scope = {
39// #node = 140
40// }
41
42// number = 1
43// runs = 20
44// config = {
45// log-level = none,
46// "optional-wf" = "false",
47// "realistic-guidance" = "Composite",
48// "allow-must-violations" = "false",
49// "domain" = "Yakindumm"
50// }
51
52// statistics = "statistics/Yakindu/140.csv" //give different set up different filenames
53// debug = "debug"
54// output = "output/Yakindu/run_time/"
55// }
56
57// generate {
58// metamodel = { package yakindumm excluding { Synchronization}}
59// constraints = { package hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu }
60// partial-model = { "inputs/start.xmi"}
61
62// solver = ViatraSolver
63
64// scope = {
65// #node = 160
66// }
67
68// number = 1
69// runs = 20
70// config = {
71// log-level = none,
72// "optional-wf" = "false",
73// "realistic-guidance" = "Composite",
74// "allow-must-violations" = "false",
75// "domain" = "Yakindumm"
76// }
77
78// statistics = "statistics/Yakindu/160.csv" //give different set up different filenames
79// debug = "debug"
80// output = "output/Yakindu/run_time/"
81// }
82
83// generate {
84// metamodel = { package yakindumm excluding { Synchronization}}
85// constraints = { package hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu }
86// partial-model = { "inputs/start.xmi"}
87
88// solver = ViatraSolver
89
90// scope = {
91// #node = 180
92// }
93
94// number = 1
95// runs = 20
96// config = {
97// log-level = none,
98// "optional-wf" = "false",
99// "realistic-guidance" = "Composite",
100// "allow-must-violations" = "false",
101// "domain" = "Yakindumm"
102// }
103
104// statistics = "statistics/Yakindu/180.csv" //give different set up different filenames
105// debug = "debug"
106// output = "output/Yakindu/run_time/"
107// } \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduum/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduum/.gitignore
new file mode 100644
index 00000000..17126b28
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduum/.gitignore
@@ -0,0 +1,4 @@
1# ignore everything in this folder except for this folder it self
2
3*
4!.gitignore \ No newline at end of file