diff options
author | ArenBabikian <aren.babikian@mail.mcgill.ca> | 2020-04-27 10:45:28 -0400 |
---|---|---|
committer | ArenBabikian <aren.babikian@mail.mcgill.ca> | 2020-04-27 10:45:28 -0400 |
commit | 36ca60e5b6bd047a4f444d96241bd60a01bbab17 (patch) | |
tree | 472ee15861945af6b7056d19250734ffab4c3aef /Tests/MODELS2020-CaseStudies | |
parent | Merge branch 'Attribute-Solver' (diff) | |
download | VIATRA-Generator-36ca60e5b6bd047a4f444d96241bd60a01bbab17.tar.gz VIATRA-Generator-36ca60e5b6bd047a4f444d96241bd60a01bbab17.tar.zst VIATRA-Generator-36ca60e5b6bd047a4f444d96241bd60a01bbab17.zip |
rename Pledge Case Studies and add familyTree case study
Diffstat (limited to 'Tests/MODELS2020-CaseStudies')
95 files changed, 5209 insertions, 53 deletions
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/.classpath b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/.classpath new file mode 100644 index 00000000..b862a296 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/.classpath | |||
@@ -0,0 +1,7 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <classpath> | ||
3 | <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> | ||
4 | <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> | ||
5 | <classpathentry kind="src" path="src"/> | ||
6 | <classpathentry kind="output" path="bin"/> | ||
7 | </classpath> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/.project b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/.project new file mode 100644 index 00000000..f379b9b4 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/.project | |||
@@ -0,0 +1,28 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <projectDescription> | ||
3 | <name>case.study.familyTree.model</name> | ||
4 | <comment></comment> | ||
5 | <projects> | ||
6 | </projects> | ||
7 | <buildSpec> | ||
8 | <buildCommand> | ||
9 | <name>org.eclipse.jdt.core.javabuilder</name> | ||
10 | <arguments> | ||
11 | </arguments> | ||
12 | </buildCommand> | ||
13 | <buildCommand> | ||
14 | <name>org.eclipse.pde.ManifestBuilder</name> | ||
15 | <arguments> | ||
16 | </arguments> | ||
17 | </buildCommand> | ||
18 | <buildCommand> | ||
19 | <name>org.eclipse.pde.SchemaBuilder</name> | ||
20 | <arguments> | ||
21 | </arguments> | ||
22 | </buildCommand> | ||
23 | </buildSpec> | ||
24 | <natures> | ||
25 | <nature>org.eclipse.pde.PluginNature</nature> | ||
26 | <nature>org.eclipse.jdt.core.javanature</nature> | ||
27 | </natures> | ||
28 | </projectDescription> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/.settings/org.eclipse.jdt.core.prefs b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..295926d9 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/.settings/org.eclipse.jdt.core.prefs | |||
@@ -0,0 +1,7 @@ | |||
1 | eclipse.preferences.version=1 | ||
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled | ||
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 | ||
4 | org.eclipse.jdt.core.compiler.compliance=1.8 | ||
5 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error | ||
6 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error | ||
7 | org.eclipse.jdt.core.compiler.source=1.8 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/META-INF/MANIFEST.MF b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/META-INF/MANIFEST.MF new file mode 100644 index 00000000..70360954 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/META-INF/MANIFEST.MF | |||
@@ -0,0 +1,16 @@ | |||
1 | Manifest-Version: 1.0 | ||
2 | Bundle-ManifestVersion: 2 | ||
3 | Bundle-Name: %pluginName | ||
4 | Bundle-SymbolicName: case.study.familyTree.model;singleton:=true | ||
5 | Bundle-Version: 1.0.0.qualifier | ||
6 | Bundle-ClassPath: . | ||
7 | Bundle-Vendor: %providerName | ||
8 | Bundle-Localization: plugin | ||
9 | Automatic-Module-Name: case.study.familyTree.model | ||
10 | Bundle-RequiredExecutionEnvironment: JavaSE-1.8 | ||
11 | Export-Package: familytree, | ||
12 | familytree.impl, | ||
13 | familytree.util | ||
14 | Require-Bundle: org.eclipse.core.runtime, | ||
15 | org.eclipse.emf.ecore;visibility:=reexport | ||
16 | Bundle-ActivationPolicy: lazy | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/build.properties b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/build.properties new file mode 100644 index 00000000..4d3b1827 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/build.properties | |||
@@ -0,0 +1,10 @@ | |||
1 | # | ||
2 | |||
3 | bin.includes = .,\ | ||
4 | model/,\ | ||
5 | META-INF/,\ | ||
6 | plugin.xml,\ | ||
7 | plugin.properties | ||
8 | jars.compile.order = . | ||
9 | source.. = src/ | ||
10 | output.. = bin/ | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/FamilyTree.xmi b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/FamilyTree.xmi new file mode 100644 index 00000000..066b286f --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/FamilyTree.xmi | |||
@@ -0,0 +1,3 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <familytree:FamilyTree xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
3 | xmlns:familytree="http://www.example.org/familytree" xsi:schemaLocation="http://www.example.org/familytree familytree.ecore"/> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/familytree.aird b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/familytree.aird new file mode 100644 index 00000000..f2980c32 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/familytree.aird | |||
@@ -0,0 +1,159 @@ | |||
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="_lkFqkDsLEeqkYdt9h49cMw" selectedViews="_mCqc8DsLEeqkYdt9h49cMw" version="14.3.0.201909031200"> | ||
4 | <semanticResources>familytree.ecore</semanticResources> | ||
5 | <ownedViews xmi:type="viewpoint:DView" uid="_mCqc8DsLEeqkYdt9h49cMw"> | ||
6 | <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/> | ||
7 | <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_mMIiADsLEeqkYdt9h49cMw" name="familytree" repPath="#_mGB6ADsLEeqkYdt9h49cMw"> | ||
8 | <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> | ||
9 | <target xmi:type="ecore:EPackage" href="familytree.ecore#/"/> | ||
10 | </ownedRepresentationDescriptors> | ||
11 | </ownedViews> | ||
12 | </viewpoint:DAnalysis> | ||
13 | <diagram:DSemanticDiagram uid="_mGB6ADsLEeqkYdt9h49cMw"> | ||
14 | <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_mMCbYDsLEeqkYdt9h49cMw" source="DANNOTATION_CUSTOMIZATION_KEY"> | ||
15 | <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_mMDCcDsLEeqkYdt9h49cMw"> | ||
16 | <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_aZCDMDsSEeqkYdt9h49cMw" sourceArrow="FillDiamond" routingStyle="manhattan"> | ||
17 | <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> | ||
18 | <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_aZCDMTsSEeqkYdt9h49cMw" showIcon="false" labelExpression="service:render"> | ||
19 | <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> | ||
20 | </centerLabelStyleDescription> | ||
21 | <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_aZCDMjsSEeqkYdt9h49cMw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel"> | ||
22 | <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/> | ||
23 | </endLabelStyleDescription> | ||
24 | </computedStyleDescriptions> | ||
25 | </data> | ||
26 | </ownedAnnotationEntries> | ||
27 | <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_mNJOoDsLEeqkYdt9h49cMw" source="GMF_DIAGRAMS"> | ||
28 | <data xmi:type="notation:Diagram" xmi:id="_mNJOoTsLEeqkYdt9h49cMw" type="Sirius" element="_mGB6ADsLEeqkYdt9h49cMw" measurementUnit="Pixel"> | ||
29 | <children xmi:type="notation:Node" xmi:id="_Vt3KADsREeqkYdt9h49cMw" type="2003" element="_Vs0oMDsREeqkYdt9h49cMw"> | ||
30 | <children xmi:type="notation:Node" xmi:id="_VuD-UDsREeqkYdt9h49cMw" type="5007"/> | ||
31 | <children xmi:type="notation:Node" xmi:id="_VuFMcDsREeqkYdt9h49cMw" type="7004"> | ||
32 | <styles xmi:type="notation:SortingStyle" xmi:id="_VuFMcTsREeqkYdt9h49cMw"/> | ||
33 | <styles xmi:type="notation:FilteringStyle" xmi:id="_VuFMcjsREeqkYdt9h49cMw"/> | ||
34 | </children> | ||
35 | <styles xmi:type="notation:ShapeStyle" xmi:id="_Vt3KATsREeqkYdt9h49cMw" fontName="Segoe UI" fontHeight="8"/> | ||
36 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vt3KAjsREeqkYdt9h49cMw" x="120" y="144" width="111" height="87"/> | ||
37 | </children> | ||
38 | <children xmi:type="notation:Node" xmi:id="_aa12gDsREeqkYdt9h49cMw" type="2003" element="_aaZxoDsREeqkYdt9h49cMw"> | ||
39 | <children xmi:type="notation:Node" xmi:id="_aa3rsDsREeqkYdt9h49cMw" type="5007"/> | ||
40 | <children xmi:type="notation:Node" xmi:id="_aa4SwDsREeqkYdt9h49cMw" type="7004"> | ||
41 | <children xmi:type="notation:Node" xmi:id="_dkHUkDsREeqkYdt9h49cMw" type="3010" element="_djV4gDsREeqkYdt9h49cMw"> | ||
42 | <styles xmi:type="notation:FontStyle" xmi:id="_dkHUkTsREeqkYdt9h49cMw" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> | ||
43 | <layoutConstraint xmi:type="notation:Location" xmi:id="_dkHUkjsREeqkYdt9h49cMw"/> | ||
44 | </children> | ||
45 | <children xmi:type="notation:Node" xmi:id="_7h4v4DsREeqkYdt9h49cMw" type="3010" element="_7hUIIDsREeqkYdt9h49cMw"> | ||
46 | <styles xmi:type="notation:FontStyle" xmi:id="_7h4v4TsREeqkYdt9h49cMw" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> | ||
47 | <layoutConstraint xmi:type="notation:Location" xmi:id="_7h4v4jsREeqkYdt9h49cMw"/> | ||
48 | </children> | ||
49 | <styles xmi:type="notation:SortingStyle" xmi:id="_aa4SwTsREeqkYdt9h49cMw"/> | ||
50 | <styles xmi:type="notation:FilteringStyle" xmi:id="_aa4SwjsREeqkYdt9h49cMw"/> | ||
51 | </children> | ||
52 | <styles xmi:type="notation:ShapeStyle" xmi:id="_aa12gTsREeqkYdt9h49cMw" fontName="Segoe UI" fontHeight="8"/> | ||
53 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa12gjsREeqkYdt9h49cMw" x="372" y="144" width="147" height="111"/> | ||
54 | </children> | ||
55 | <styles xmi:type="notation:DiagramStyle" xmi:id="_mNJOojsLEeqkYdt9h49cMw"/> | ||
56 | <edges xmi:type="notation:Edge" xmi:id="_aZ6M8DsSEeqkYdt9h49cMw" type="4001" element="_aY6ucDsSEeqkYdt9h49cMw" source="_Vt3KADsREeqkYdt9h49cMw" target="_aa12gDsREeqkYdt9h49cMw"> | ||
57 | <children xmi:type="notation:Node" xmi:id="_aZ93UDsSEeqkYdt9h49cMw" type="6001"> | ||
58 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aZ93UTsSEeqkYdt9h49cMw" x="20" y="7"/> | ||
59 | </children> | ||
60 | <children xmi:type="notation:Node" xmi:id="_aZ_sgDsSEeqkYdt9h49cMw" type="6002"> | ||
61 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaATkDsSEeqkYdt9h49cMw" x="59" y="10"/> | ||
62 | </children> | ||
63 | <children xmi:type="notation:Node" xmi:id="_aaBhsDsSEeqkYdt9h49cMw" type="6003"> | ||
64 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaBhsTsSEeqkYdt9h49cMw" x="1" y="10"/> | ||
65 | </children> | ||
66 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_aZ6M8TsSEeqkYdt9h49cMw" routing="Rectilinear"/> | ||
67 | <styles xmi:type="notation:FontStyle" xmi:id="_aZ6M8jsSEeqkYdt9h49cMw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> | ||
68 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aZ6M8zsSEeqkYdt9h49cMw" points="[0, 0, -143, 0]$[143, 0, 0, 0]"/> | ||
69 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aaMg0DsSEeqkYdt9h49cMw" id="(1.0,0.1411764705882353)"/> | ||
70 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aaMg0TsSEeqkYdt9h49cMw" id="(0.0,0.11009174311926606)"/> | ||
71 | </edges> | ||
72 | <edges xmi:type="notation:Edge" xmi:id="_2qcDUDsSEeqkYdt9h49cMw" type="4001" element="_2p6e4DsSEeqkYdt9h49cMw" source="_aa12gDsREeqkYdt9h49cMw" target="_aa12gDsREeqkYdt9h49cMw"> | ||
73 | <children xmi:type="notation:Node" xmi:id="_2qdRcDsSEeqkYdt9h49cMw" type="6001"> | ||
74 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2qdRcTsSEeqkYdt9h49cMw" y="-10"/> | ||
75 | </children> | ||
76 | <children xmi:type="notation:Node" xmi:id="_2qdRcjsSEeqkYdt9h49cMw" type="6002"> | ||
77 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2qdRczsSEeqkYdt9h49cMw" x="-15" y="-26"/> | ||
78 | </children> | ||
79 | <children xmi:type="notation:Node" xmi:id="_2qdRdDsSEeqkYdt9h49cMw" type="6003"> | ||
80 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2qd4gDsSEeqkYdt9h49cMw" x="43" y="22"/> | ||
81 | </children> | ||
82 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_2qcDUTsSEeqkYdt9h49cMw" routing="Rectilinear"/> | ||
83 | <styles xmi:type="notation:FontStyle" xmi:id="_2qcDUjsSEeqkYdt9h49cMw" fontName="Segoe UI" fontHeight="8"/> | ||
84 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2qcDUzsSEeqkYdt9h49cMw" points="[39, 55, 3, 55]$[77, 55, 41, 55]$[77, 149, 41, 149]$[-36, 149, -72, 149]$[-36, 109, -72, 109]"/> | ||
85 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2qyooDsSEeqkYdt9h49cMw" id="(0.7448275862068966,0.0)"/> | ||
86 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2qyooTsSEeqkYdt9h49cMw" id="(0.993103448275862,0.0)"/> | ||
87 | </edges> | ||
88 | </data> | ||
89 | </ownedAnnotationEntries> | ||
90 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Vs0oMDsREeqkYdt9h49cMw" name="FamilyTree" tooltipText="" outgoingEdges="_aY6ucDsSEeqkYdt9h49cMw" width="12" height="10"> | ||
91 | <target xmi:type="ecore:EClass" href="familytree.ecore#//FamilyTree"/> | ||
92 | <semanticElements xmi:type="ecore:EClass" href="familytree.ecore#//FamilyTree"/> | ||
93 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> | ||
94 | <arrangeConstraints>KEEP_SIZE</arrangeConstraints> | ||
95 | <arrangeConstraints>KEEP_RATIO</arrangeConstraints> | ||
96 | <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_VtO34DsREeqkYdt9h49cMw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> | ||
97 | <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"/> | ||
98 | </ownedStyle> | ||
99 | <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']"/> | ||
100 | </ownedDiagramElements> | ||
101 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aaZxoDsREeqkYdt9h49cMw" name="Member" tooltipText="" outgoingEdges="_2p6e4DsSEeqkYdt9h49cMw" incomingEdges="_aY6ucDsSEeqkYdt9h49cMw _2p6e4DsSEeqkYdt9h49cMw" width="12" height="10"> | ||
102 | <target xmi:type="ecore:EClass" href="familytree.ecore#//Member"/> | ||
103 | <semanticElements xmi:type="ecore:EClass" href="familytree.ecore#//Member"/> | ||
104 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> | ||
105 | <arrangeConstraints>KEEP_SIZE</arrangeConstraints> | ||
106 | <arrangeConstraints>KEEP_RATIO</arrangeConstraints> | ||
107 | <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_BKuAoDsSEeqkYdt9h49cMw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> | ||
108 | <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"/> | ||
109 | </ownedStyle> | ||
110 | <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']"/> | ||
111 | <ownedElements xmi:type="diagram:DNodeListElement" uid="_djV4gDsREeqkYdt9h49cMw" name="name : EString" tooltipText=""> | ||
112 | <target xmi:type="ecore:EAttribute" href="familytree.ecore#//Member/name"/> | ||
113 | <semanticElements xmi:type="ecore:EAttribute" href="familytree.ecore#//Member/name"/> | ||
114 | <ownedStyle xmi:type="diagram:BundledImage" uid="_hCW9ETsREeqkYdt9h49cMw" labelAlignment="LEFT"> | ||
115 | <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"/> | ||
116 | </ownedStyle> | ||
117 | <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']"/> | ||
118 | </ownedElements> | ||
119 | <ownedElements xmi:type="diagram:DNodeListElement" uid="_7hUIIDsREeqkYdt9h49cMw" name="age : EInt = 0" tooltipText=""> | ||
120 | <target xmi:type="ecore:EAttribute" href="familytree.ecore#//Member/age"/> | ||
121 | <semanticElements xmi:type="ecore:EAttribute" href="familytree.ecore#//Member/age"/> | ||
122 | <ownedStyle xmi:type="diagram:BundledImage" uid="_P9E9gTsZEeqzD6SBN6r2Uw" labelAlignment="LEFT"> | ||
123 | <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"/> | ||
124 | </ownedStyle> | ||
125 | <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']"/> | ||
126 | </ownedElements> | ||
127 | </ownedDiagramElements> | ||
128 | <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY6ucDsSEeqkYdt9h49cMw" name="[0..*] members" sourceNode="_Vs0oMDsREeqkYdt9h49cMw" targetNode="_aaZxoDsREeqkYdt9h49cMw"> | ||
129 | <target xmi:type="ecore:EReference" href="familytree.ecore#//FamilyTree/members"/> | ||
130 | <semanticElements xmi:type="ecore:EReference" href="familytree.ecore#//FamilyTree/members"/> | ||
131 | <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZCDMzsSEeqkYdt9h49cMw" description="_aZCDMDsSEeqkYdt9h49cMw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> | ||
132 | <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZCDNTsSEeqkYdt9h49cMw" showIcon="false"> | ||
133 | <customFeatures>labelSize</customFeatures> | ||
134 | </centerLabelStyle> | ||
135 | <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZCDNDsSEeqkYdt9h49cMw" showIcon="false" labelColor="39,76,114"> | ||
136 | <customFeatures>labelSize</customFeatures> | ||
137 | </endLabelStyle> | ||
138 | </ownedStyle> | ||
139 | <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']"/> | ||
140 | </ownedDiagramElements> | ||
141 | <ownedDiagramElements xmi:type="diagram:DEdge" uid="_2p6e4DsSEeqkYdt9h49cMw" sourceNode="_aaZxoDsREeqkYdt9h49cMw" targetNode="_aaZxoDsREeqkYdt9h49cMw" beginLabel="[0..2] parents" endLabel="[0..*] children"> | ||
142 | <target xmi:type="ecore:EReference" href="familytree.ecore#//Member/children"/> | ||
143 | <semanticElements xmi:type="ecore:EReference" href="familytree.ecore#//Member/children"/> | ||
144 | <semanticElements xmi:type="ecore:EReference" href="familytree.ecore#//Member/parents"/> | ||
145 | <ownedStyle xmi:type="diagram:EdgeStyle" uid="_2p9iMDsSEeqkYdt9h49cMw" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0"> | ||
146 | <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"/> | ||
147 | <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_2p9iMTsSEeqkYdt9h49cMw" showIcon="false"/> | ||
148 | <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_2p9iMjsSEeqkYdt9h49cMw" showIcon="false"/> | ||
149 | </ownedStyle> | ||
150 | <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']"/> | ||
151 | </ownedDiagramElements> | ||
152 | <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> | ||
153 | <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_mHAKYDsLEeqkYdt9h49cMw"/> | ||
154 | <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> | ||
155 | <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']"/> | ||
156 | <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']"/> | ||
157 | <target xmi:type="ecore:EPackage" href="familytree.ecore#/"/> | ||
158 | </diagram:DSemanticDiagram> | ||
159 | </xmi:XMI> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/familytree.ecore b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/familytree.ecore new file mode 100644 index 00000000..f2e51f65 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/familytree.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="familytree" nsURI="http://www.example.org/familytree" nsPrefix="familytree"> | ||
4 | <eClassifiers xsi:type="ecore:EClass" name="FamilyTree"> | ||
5 | <eStructuralFeatures xsi:type="ecore:EReference" name="members" upperBound="-1" | ||
6 | eType="#//Member" containment="true"/> | ||
7 | </eClassifiers> | ||
8 | <eClassifiers xsi:type="ecore:EClass" name="Member"> | ||
9 | <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> | ||
10 | <eStructuralFeatures xsi:type="ecore:EAttribute" name="age" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" | ||
11 | defaultValueLiteral="0"/> | ||
12 | <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1" | ||
13 | eType="#//Member" eOpposite="#//Member/parents"/> | ||
14 | <eStructuralFeatures xsi:type="ecore:EReference" name="parents" upperBound="2" | ||
15 | eType="#//Member" eOpposite="#//Member/children"/> | ||
16 | </eClassifiers> | ||
17 | </ecore:EPackage> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/familytree.genmodel b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/familytree.genmodel new file mode 100644 index 00000000..29f5fc02 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/model/familytree.genmodel | |||
@@ -0,0 +1,33 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <genmodel:GenModel xmi:version="2.0" | ||
3 | xmlns:xmi="http://www.omg.org/XMI" | ||
4 | xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" | ||
5 | xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" | ||
6 | modelDirectory="/case.study.familyTree.model/src" | ||
7 | modelPluginID="case.study.familyTree.model" modelName="Familytree" | ||
8 | rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" | ||
9 | importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" | ||
10 | copyrightFields="false" operationReflection="true" | ||
11 | importOrganizing="true"> | ||
12 | <foreignModel>familytree.ecore</foreignModel> | ||
13 | <genPackages prefix="Familytree" | ||
14 | disposableProviderFactory="true" ecorePackage="familytree.ecore#/"> | ||
15 | <genClasses ecoreClass="familytree.ecore#//FamilyTree"> | ||
16 | <genFeatures property="None" children="true" | ||
17 | createChild="true" | ||
18 | ecoreFeature="ecore:EReference familytree.ecore#//FamilyTree/members" /> | ||
19 | </genClasses> | ||
20 | <genClasses ecoreClass="familytree.ecore#//Member"> | ||
21 | <genFeatures createChild="false" | ||
22 | ecoreFeature="ecore:EAttribute familytree.ecore#//Member/name" /> | ||
23 | <genFeatures createChild="false" | ||
24 | ecoreFeature="ecore:EAttribute familytree.ecore#//Member/age" /> | ||
25 | <genFeatures notify="false" createChild="false" | ||
26 | propertySortChoices="true" | ||
27 | ecoreFeature="ecore:EReference familytree.ecore#//Member/children" /> | ||
28 | <genFeatures notify="false" createChild="false" | ||
29 | propertySortChoices="true" | ||
30 | ecoreFeature="ecore:EReference familytree.ecore#//Member/parents" /> | ||
31 | </genClasses> | ||
32 | </genPackages> | ||
33 | </genmodel:GenModel> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/plugin.properties b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/plugin.properties new file mode 100644 index 00000000..e4710b5f --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/plugin.properties | |||
@@ -0,0 +1,4 @@ | |||
1 | # | ||
2 | |||
3 | pluginName = Model | ||
4 | providerName = www.example.org | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/plugin.xml b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/plugin.xml new file mode 100644 index 00000000..a377ea2a --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/plugin.xml | |||
@@ -0,0 +1,17 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <?eclipse version="3.0"?> | ||
3 | |||
4 | <!-- | ||
5 | --> | ||
6 | |||
7 | <plugin> | ||
8 | |||
9 | <extension point="org.eclipse.emf.ecore.generated_package"> | ||
10 | <!-- @generated familytree --> | ||
11 | <package | ||
12 | uri="http://www.example.org/familytree" | ||
13 | class="familytree.FamilytreePackage" | ||
14 | genModel="model/familytree.genmodel"/> | ||
15 | </extension> | ||
16 | |||
17 | </plugin> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/FamilyTree.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/FamilyTree.java new file mode 100644 index 00000000..408373a3 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/FamilyTree.java | |||
@@ -0,0 +1,38 @@ | |||
1 | /** | ||
2 | */ | ||
3 | package familytree; | ||
4 | |||
5 | import org.eclipse.emf.common.util.EList; | ||
6 | |||
7 | import org.eclipse.emf.ecore.EObject; | ||
8 | |||
9 | /** | ||
10 | * <!-- begin-user-doc --> | ||
11 | * A representation of the model object '<em><b>Family Tree</b></em>'. | ||
12 | * <!-- end-user-doc --> | ||
13 | * | ||
14 | * <p> | ||
15 | * The following features are supported: | ||
16 | * </p> | ||
17 | * <ul> | ||
18 | * <li>{@link familytree.FamilyTree#getMembers <em>Members</em>}</li> | ||
19 | * </ul> | ||
20 | * | ||
21 | * @see familytree.FamilytreePackage#getFamilyTree() | ||
22 | * @model | ||
23 | * @generated | ||
24 | */ | ||
25 | public interface FamilyTree extends EObject { | ||
26 | /** | ||
27 | * Returns the value of the '<em><b>Members</b></em>' containment reference list. | ||
28 | * The list contents are of type {@link familytree.Member}. | ||
29 | * <!-- begin-user-doc --> | ||
30 | * <!-- end-user-doc --> | ||
31 | * @return the value of the '<em>Members</em>' containment reference list. | ||
32 | * @see familytree.FamilytreePackage#getFamilyTree_Members() | ||
33 | * @model containment="true" | ||
34 | * @generated | ||
35 | */ | ||
36 | EList<Member> getMembers(); | ||
37 | |||
38 | } // FamilyTree | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/FamilytreeFactory.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/FamilytreeFactory.java new file mode 100644 index 00000000..534da223 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/FamilytreeFactory.java | |||
@@ -0,0 +1,51 @@ | |||
1 | /** | ||
2 | */ | ||
3 | package familytree; | ||
4 | |||
5 | import 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 familytree.FamilytreePackage | ||
13 | * @generated | ||
14 | */ | ||
15 | public interface FamilytreeFactory extends EFactory { | ||
16 | /** | ||
17 | * The singleton instance of the factory. | ||
18 | * <!-- begin-user-doc --> | ||
19 | * <!-- end-user-doc --> | ||
20 | * @generated | ||
21 | */ | ||
22 | FamilytreeFactory eINSTANCE = familytree.impl.FamilytreeFactoryImpl.init(); | ||
23 | |||
24 | /** | ||
25 | * Returns a new object of class '<em>Family Tree</em>'. | ||
26 | * <!-- begin-user-doc --> | ||
27 | * <!-- end-user-doc --> | ||
28 | * @return a new object of class '<em>Family Tree</em>'. | ||
29 | * @generated | ||
30 | */ | ||
31 | FamilyTree createFamilyTree(); | ||
32 | |||
33 | /** | ||
34 | * Returns a new object of class '<em>Member</em>'. | ||
35 | * <!-- begin-user-doc --> | ||
36 | * <!-- end-user-doc --> | ||
37 | * @return a new object of class '<em>Member</em>'. | ||
38 | * @generated | ||
39 | */ | ||
40 | Member createMember(); | ||
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 | FamilytreePackage getFamilytreePackage(); | ||
50 | |||
51 | } //FamilytreeFactory | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/FamilytreePackage.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/FamilytreePackage.java new file mode 100644 index 00000000..572a0fe4 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/FamilytreePackage.java | |||
@@ -0,0 +1,321 @@ | |||
1 | /** | ||
2 | */ | ||
3 | package familytree; | ||
4 | |||
5 | import org.eclipse.emf.ecore.EAttribute; | ||
6 | import org.eclipse.emf.ecore.EClass; | ||
7 | import org.eclipse.emf.ecore.EPackage; | ||
8 | import 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 familytree.FamilytreeFactory | ||
23 | * @model kind="package" | ||
24 | * @generated | ||
25 | */ | ||
26 | public interface FamilytreePackage extends EPackage { | ||
27 | /** | ||
28 | * The package name. | ||
29 | * <!-- begin-user-doc --> | ||
30 | * <!-- end-user-doc --> | ||
31 | * @generated | ||
32 | */ | ||
33 | String eNAME = "familytree"; | ||
34 | |||
35 | /** | ||
36 | * The package namespace URI. | ||
37 | * <!-- begin-user-doc --> | ||
38 | * <!-- end-user-doc --> | ||
39 | * @generated | ||
40 | */ | ||
41 | String eNS_URI = "http://www.example.org/familytree"; | ||
42 | |||
43 | /** | ||
44 | * The package namespace name. | ||
45 | * <!-- begin-user-doc --> | ||
46 | * <!-- end-user-doc --> | ||
47 | * @generated | ||
48 | */ | ||
49 | String eNS_PREFIX = "familytree"; | ||
50 | |||
51 | /** | ||
52 | * The singleton instance of the package. | ||
53 | * <!-- begin-user-doc --> | ||
54 | * <!-- end-user-doc --> | ||
55 | * @generated | ||
56 | */ | ||
57 | FamilytreePackage eINSTANCE = familytree.impl.FamilytreePackageImpl.init(); | ||
58 | |||
59 | /** | ||
60 | * The meta object id for the '{@link familytree.impl.FamilyTreeImpl <em>Family Tree</em>}' class. | ||
61 | * <!-- begin-user-doc --> | ||
62 | * <!-- end-user-doc --> | ||
63 | * @see familytree.impl.FamilyTreeImpl | ||
64 | * @see familytree.impl.FamilytreePackageImpl#getFamilyTree() | ||
65 | * @generated | ||
66 | */ | ||
67 | int FAMILY_TREE = 0; | ||
68 | |||
69 | /** | ||
70 | * The feature id for the '<em><b>Members</b></em>' containment reference list. | ||
71 | * <!-- begin-user-doc --> | ||
72 | * <!-- end-user-doc --> | ||
73 | * @generated | ||
74 | * @ordered | ||
75 | */ | ||
76 | int FAMILY_TREE__MEMBERS = 0; | ||
77 | |||
78 | /** | ||
79 | * The number of structural features of the '<em>Family Tree</em>' class. | ||
80 | * <!-- begin-user-doc --> | ||
81 | * <!-- end-user-doc --> | ||
82 | * @generated | ||
83 | * @ordered | ||
84 | */ | ||
85 | int FAMILY_TREE_FEATURE_COUNT = 1; | ||
86 | |||
87 | /** | ||
88 | * The number of operations of the '<em>Family Tree</em>' class. | ||
89 | * <!-- begin-user-doc --> | ||
90 | * <!-- end-user-doc --> | ||
91 | * @generated | ||
92 | * @ordered | ||
93 | */ | ||
94 | int FAMILY_TREE_OPERATION_COUNT = 0; | ||
95 | |||
96 | /** | ||
97 | * The meta object id for the '{@link familytree.impl.MemberImpl <em>Member</em>}' class. | ||
98 | * <!-- begin-user-doc --> | ||
99 | * <!-- end-user-doc --> | ||
100 | * @see familytree.impl.MemberImpl | ||
101 | * @see familytree.impl.FamilytreePackageImpl#getMember() | ||
102 | * @generated | ||
103 | */ | ||
104 | int MEMBER = 1; | ||
105 | |||
106 | /** | ||
107 | * The feature id for the '<em><b>Name</b></em>' attribute. | ||
108 | * <!-- begin-user-doc --> | ||
109 | * <!-- end-user-doc --> | ||
110 | * @generated | ||
111 | * @ordered | ||
112 | */ | ||
113 | int MEMBER__NAME = 0; | ||
114 | |||
115 | /** | ||
116 | * The feature id for the '<em><b>Age</b></em>' attribute. | ||
117 | * <!-- begin-user-doc --> | ||
118 | * <!-- end-user-doc --> | ||
119 | * @generated | ||
120 | * @ordered | ||
121 | */ | ||
122 | int MEMBER__AGE = 1; | ||
123 | |||
124 | /** | ||
125 | * The feature id for the '<em><b>Children</b></em>' reference list. | ||
126 | * <!-- begin-user-doc --> | ||
127 | * <!-- end-user-doc --> | ||
128 | * @generated | ||
129 | * @ordered | ||
130 | */ | ||
131 | int MEMBER__CHILDREN = 2; | ||
132 | |||
133 | /** | ||
134 | * The feature id for the '<em><b>Parents</b></em>' reference list. | ||
135 | * <!-- begin-user-doc --> | ||
136 | * <!-- end-user-doc --> | ||
137 | * @generated | ||
138 | * @ordered | ||
139 | */ | ||
140 | int MEMBER__PARENTS = 3; | ||
141 | |||
142 | /** | ||
143 | * The number of structural features of the '<em>Member</em>' class. | ||
144 | * <!-- begin-user-doc --> | ||
145 | * <!-- end-user-doc --> | ||
146 | * @generated | ||
147 | * @ordered | ||
148 | */ | ||
149 | int MEMBER_FEATURE_COUNT = 4; | ||
150 | |||
151 | /** | ||
152 | * The number of operations of the '<em>Member</em>' class. | ||
153 | * <!-- begin-user-doc --> | ||
154 | * <!-- end-user-doc --> | ||
155 | * @generated | ||
156 | * @ordered | ||
157 | */ | ||
158 | int MEMBER_OPERATION_COUNT = 0; | ||
159 | |||
160 | |||
161 | /** | ||
162 | * Returns the meta object for class '{@link familytree.FamilyTree <em>Family Tree</em>}'. | ||
163 | * <!-- begin-user-doc --> | ||
164 | * <!-- end-user-doc --> | ||
165 | * @return the meta object for class '<em>Family Tree</em>'. | ||
166 | * @see familytree.FamilyTree | ||
167 | * @generated | ||
168 | */ | ||
169 | EClass getFamilyTree(); | ||
170 | |||
171 | /** | ||
172 | * Returns the meta object for the containment reference list '{@link familytree.FamilyTree#getMembers <em>Members</em>}'. | ||
173 | * <!-- begin-user-doc --> | ||
174 | * <!-- end-user-doc --> | ||
175 | * @return the meta object for the containment reference list '<em>Members</em>'. | ||
176 | * @see familytree.FamilyTree#getMembers() | ||
177 | * @see #getFamilyTree() | ||
178 | * @generated | ||
179 | */ | ||
180 | EReference getFamilyTree_Members(); | ||
181 | |||
182 | /** | ||
183 | * Returns the meta object for class '{@link familytree.Member <em>Member</em>}'. | ||
184 | * <!-- begin-user-doc --> | ||
185 | * <!-- end-user-doc --> | ||
186 | * @return the meta object for class '<em>Member</em>'. | ||
187 | * @see familytree.Member | ||
188 | * @generated | ||
189 | */ | ||
190 | EClass getMember(); | ||
191 | |||
192 | /** | ||
193 | * Returns the meta object for the attribute '{@link familytree.Member#getName <em>Name</em>}'. | ||
194 | * <!-- begin-user-doc --> | ||
195 | * <!-- end-user-doc --> | ||
196 | * @return the meta object for the attribute '<em>Name</em>'. | ||
197 | * @see familytree.Member#getName() | ||
198 | * @see #getMember() | ||
199 | * @generated | ||
200 | */ | ||
201 | EAttribute getMember_Name(); | ||
202 | |||
203 | /** | ||
204 | * Returns the meta object for the attribute '{@link familytree.Member#getAge <em>Age</em>}'. | ||
205 | * <!-- begin-user-doc --> | ||
206 | * <!-- end-user-doc --> | ||
207 | * @return the meta object for the attribute '<em>Age</em>'. | ||
208 | * @see familytree.Member#getAge() | ||
209 | * @see #getMember() | ||
210 | * @generated | ||
211 | */ | ||
212 | EAttribute getMember_Age(); | ||
213 | |||
214 | /** | ||
215 | * Returns the meta object for the reference list '{@link familytree.Member#getChildren <em>Children</em>}'. | ||
216 | * <!-- begin-user-doc --> | ||
217 | * <!-- end-user-doc --> | ||
218 | * @return the meta object for the reference list '<em>Children</em>'. | ||
219 | * @see familytree.Member#getChildren() | ||
220 | * @see #getMember() | ||
221 | * @generated | ||
222 | */ | ||
223 | EReference getMember_Children(); | ||
224 | |||
225 | /** | ||
226 | * Returns the meta object for the reference list '{@link familytree.Member#getParents <em>Parents</em>}'. | ||
227 | * <!-- begin-user-doc --> | ||
228 | * <!-- end-user-doc --> | ||
229 | * @return the meta object for the reference list '<em>Parents</em>'. | ||
230 | * @see familytree.Member#getParents() | ||
231 | * @see #getMember() | ||
232 | * @generated | ||
233 | */ | ||
234 | EReference getMember_Parents(); | ||
235 | |||
236 | /** | ||
237 | * Returns the factory that creates the instances of the model. | ||
238 | * <!-- begin-user-doc --> | ||
239 | * <!-- end-user-doc --> | ||
240 | * @return the factory that creates the instances of the model. | ||
241 | * @generated | ||
242 | */ | ||
243 | FamilytreeFactory getFamilytreeFactory(); | ||
244 | |||
245 | /** | ||
246 | * <!-- begin-user-doc --> | ||
247 | * Defines literals for the meta objects that represent | ||
248 | * <ul> | ||
249 | * <li>each class,</li> | ||
250 | * <li>each feature of each class,</li> | ||
251 | * <li>each operation of each class,</li> | ||
252 | * <li>each enum,</li> | ||
253 | * <li>and each data type</li> | ||
254 | * </ul> | ||
255 | * <!-- end-user-doc --> | ||
256 | * @generated | ||
257 | */ | ||
258 | interface Literals { | ||
259 | /** | ||
260 | * The meta object literal for the '{@link familytree.impl.FamilyTreeImpl <em>Family Tree</em>}' class. | ||
261 | * <!-- begin-user-doc --> | ||
262 | * <!-- end-user-doc --> | ||
263 | * @see familytree.impl.FamilyTreeImpl | ||
264 | * @see familytree.impl.FamilytreePackageImpl#getFamilyTree() | ||
265 | * @generated | ||
266 | */ | ||
267 | EClass FAMILY_TREE = eINSTANCE.getFamilyTree(); | ||
268 | |||
269 | /** | ||
270 | * The meta object literal for the '<em><b>Members</b></em>' containment reference list feature. | ||
271 | * <!-- begin-user-doc --> | ||
272 | * <!-- end-user-doc --> | ||
273 | * @generated | ||
274 | */ | ||
275 | EReference FAMILY_TREE__MEMBERS = eINSTANCE.getFamilyTree_Members(); | ||
276 | |||
277 | /** | ||
278 | * The meta object literal for the '{@link familytree.impl.MemberImpl <em>Member</em>}' class. | ||
279 | * <!-- begin-user-doc --> | ||
280 | * <!-- end-user-doc --> | ||
281 | * @see familytree.impl.MemberImpl | ||
282 | * @see familytree.impl.FamilytreePackageImpl#getMember() | ||
283 | * @generated | ||
284 | */ | ||
285 | EClass MEMBER = eINSTANCE.getMember(); | ||
286 | |||
287 | /** | ||
288 | * The meta object literal for the '<em><b>Name</b></em>' attribute feature. | ||
289 | * <!-- begin-user-doc --> | ||
290 | * <!-- end-user-doc --> | ||
291 | * @generated | ||
292 | */ | ||
293 | EAttribute MEMBER__NAME = eINSTANCE.getMember_Name(); | ||
294 | |||
295 | /** | ||
296 | * The meta object literal for the '<em><b>Age</b></em>' attribute feature. | ||
297 | * <!-- begin-user-doc --> | ||
298 | * <!-- end-user-doc --> | ||
299 | * @generated | ||
300 | */ | ||
301 | EAttribute MEMBER__AGE = eINSTANCE.getMember_Age(); | ||
302 | |||
303 | /** | ||
304 | * The meta object literal for the '<em><b>Children</b></em>' reference list feature. | ||
305 | * <!-- begin-user-doc --> | ||
306 | * <!-- end-user-doc --> | ||
307 | * @generated | ||
308 | */ | ||
309 | EReference MEMBER__CHILDREN = eINSTANCE.getMember_Children(); | ||
310 | |||
311 | /** | ||
312 | * The meta object literal for the '<em><b>Parents</b></em>' reference list feature. | ||
313 | * <!-- begin-user-doc --> | ||
314 | * <!-- end-user-doc --> | ||
315 | * @generated | ||
316 | */ | ||
317 | EReference MEMBER__PARENTS = eINSTANCE.getMember_Parents(); | ||
318 | |||
319 | } | ||
320 | |||
321 | } //FamilytreePackage | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/Member.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/Member.java new file mode 100644 index 00000000..55a6bd1e --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/Member.java | |||
@@ -0,0 +1,102 @@ | |||
1 | /** | ||
2 | */ | ||
3 | package familytree; | ||
4 | |||
5 | import org.eclipse.emf.common.util.EList; | ||
6 | |||
7 | import org.eclipse.emf.ecore.EObject; | ||
8 | |||
9 | /** | ||
10 | * <!-- begin-user-doc --> | ||
11 | * A representation of the model object '<em><b>Member</b></em>'. | ||
12 | * <!-- end-user-doc --> | ||
13 | * | ||
14 | * <p> | ||
15 | * The following features are supported: | ||
16 | * </p> | ||
17 | * <ul> | ||
18 | * <li>{@link familytree.Member#getName <em>Name</em>}</li> | ||
19 | * <li>{@link familytree.Member#getAge <em>Age</em>}</li> | ||
20 | * <li>{@link familytree.Member#getChildren <em>Children</em>}</li> | ||
21 | * <li>{@link familytree.Member#getParents <em>Parents</em>}</li> | ||
22 | * </ul> | ||
23 | * | ||
24 | * @see familytree.FamilytreePackage#getMember() | ||
25 | * @model | ||
26 | * @generated | ||
27 | */ | ||
28 | public interface Member extends EObject { | ||
29 | /** | ||
30 | * Returns the value of the '<em><b>Name</b></em>' attribute. | ||
31 | * <!-- begin-user-doc --> | ||
32 | * <!-- end-user-doc --> | ||
33 | * @return the value of the '<em>Name</em>' attribute. | ||
34 | * @see #setName(String) | ||
35 | * @see familytree.FamilytreePackage#getMember_Name() | ||
36 | * @model | ||
37 | * @generated | ||
38 | */ | ||
39 | String getName(); | ||
40 | |||
41 | /** | ||
42 | * Sets the value of the '{@link familytree.Member#getName <em>Name</em>}' attribute. | ||
43 | * <!-- begin-user-doc --> | ||
44 | * <!-- end-user-doc --> | ||
45 | * @param value the new value of the '<em>Name</em>' attribute. | ||
46 | * @see #getName() | ||
47 | * @generated | ||
48 | */ | ||
49 | void setName(String value); | ||
50 | |||
51 | /** | ||
52 | * Returns the value of the '<em><b>Age</b></em>' attribute. | ||
53 | * The default value is <code>"0"</code>. | ||
54 | * <!-- begin-user-doc --> | ||
55 | * <!-- end-user-doc --> | ||
56 | * @return the value of the '<em>Age</em>' attribute. | ||
57 | * @see #setAge(int) | ||
58 | * @see familytree.FamilytreePackage#getMember_Age() | ||
59 | * @model default="0" | ||
60 | * @generated | ||
61 | */ | ||
62 | int getAge(); | ||
63 | |||
64 | /** | ||
65 | * Sets the value of the '{@link familytree.Member#getAge <em>Age</em>}' attribute. | ||
66 | * <!-- begin-user-doc --> | ||
67 | * <!-- end-user-doc --> | ||
68 | * @param value the new value of the '<em>Age</em>' attribute. | ||
69 | * @see #getAge() | ||
70 | * @generated | ||
71 | */ | ||
72 | void setAge(int value); | ||
73 | |||
74 | /** | ||
75 | * Returns the value of the '<em><b>Children</b></em>' reference list. | ||
76 | * The list contents are of type {@link familytree.Member}. | ||
77 | * It is bidirectional and its opposite is '{@link familytree.Member#getParents <em>Parents</em>}'. | ||
78 | * <!-- begin-user-doc --> | ||
79 | * <!-- end-user-doc --> | ||
80 | * @return the value of the '<em>Children</em>' reference list. | ||
81 | * @see familytree.FamilytreePackage#getMember_Children() | ||
82 | * @see familytree.Member#getParents | ||
83 | * @model opposite="parents" | ||
84 | * @generated | ||
85 | */ | ||
86 | EList<Member> getChildren(); | ||
87 | |||
88 | /** | ||
89 | * Returns the value of the '<em><b>Parents</b></em>' reference list. | ||
90 | * The list contents are of type {@link familytree.Member}. | ||
91 | * It is bidirectional and its opposite is '{@link familytree.Member#getChildren <em>Children</em>}'. | ||
92 | * <!-- begin-user-doc --> | ||
93 | * <!-- end-user-doc --> | ||
94 | * @return the value of the '<em>Parents</em>' reference list. | ||
95 | * @see familytree.FamilytreePackage#getMember_Parents() | ||
96 | * @see familytree.Member#getChildren | ||
97 | * @model opposite="children" upper="2" | ||
98 | * @generated | ||
99 | */ | ||
100 | EList<Member> getParents(); | ||
101 | |||
102 | } // Member | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/FamilyTreeImpl.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/FamilyTreeImpl.java new file mode 100644 index 00000000..07b0a1dd --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/FamilyTreeImpl.java | |||
@@ -0,0 +1,153 @@ | |||
1 | /** | ||
2 | */ | ||
3 | package familytree.impl; | ||
4 | |||
5 | import familytree.FamilyTree; | ||
6 | import familytree.FamilytreePackage; | ||
7 | import familytree.Member; | ||
8 | |||
9 | import java.util.Collection; | ||
10 | |||
11 | import org.eclipse.emf.common.notify.NotificationChain; | ||
12 | |||
13 | import org.eclipse.emf.common.util.EList; | ||
14 | |||
15 | import org.eclipse.emf.ecore.EClass; | ||
16 | import org.eclipse.emf.ecore.InternalEObject; | ||
17 | |||
18 | import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; | ||
19 | |||
20 | import org.eclipse.emf.ecore.util.EObjectContainmentEList; | ||
21 | import org.eclipse.emf.ecore.util.InternalEList; | ||
22 | |||
23 | /** | ||
24 | * <!-- begin-user-doc --> | ||
25 | * An implementation of the model object '<em><b>Family Tree</b></em>'. | ||
26 | * <!-- end-user-doc --> | ||
27 | * <p> | ||
28 | * The following features are implemented: | ||
29 | * </p> | ||
30 | * <ul> | ||
31 | * <li>{@link familytree.impl.FamilyTreeImpl#getMembers <em>Members</em>}</li> | ||
32 | * </ul> | ||
33 | * | ||
34 | * @generated | ||
35 | */ | ||
36 | public class FamilyTreeImpl extends MinimalEObjectImpl.Container implements FamilyTree { | ||
37 | /** | ||
38 | * The cached value of the '{@link #getMembers() <em>Members</em>}' containment reference list. | ||
39 | * <!-- begin-user-doc --> | ||
40 | * <!-- end-user-doc --> | ||
41 | * @see #getMembers() | ||
42 | * @generated | ||
43 | * @ordered | ||
44 | */ | ||
45 | protected EList<Member> members; | ||
46 | |||
47 | /** | ||
48 | * <!-- begin-user-doc --> | ||
49 | * <!-- end-user-doc --> | ||
50 | * @generated | ||
51 | */ | ||
52 | protected FamilyTreeImpl() { | ||
53 | super(); | ||
54 | } | ||
55 | |||
56 | /** | ||
57 | * <!-- begin-user-doc --> | ||
58 | * <!-- end-user-doc --> | ||
59 | * @generated | ||
60 | */ | ||
61 | @Override | ||
62 | protected EClass eStaticClass() { | ||
63 | return FamilytreePackage.Literals.FAMILY_TREE; | ||
64 | } | ||
65 | |||
66 | /** | ||
67 | * <!-- begin-user-doc --> | ||
68 | * <!-- end-user-doc --> | ||
69 | * @generated | ||
70 | */ | ||
71 | @Override | ||
72 | public EList<Member> getMembers() { | ||
73 | if (members == null) { | ||
74 | members = new EObjectContainmentEList<Member>(Member.class, this, FamilytreePackage.FAMILY_TREE__MEMBERS); | ||
75 | } | ||
76 | return members; | ||
77 | } | ||
78 | |||
79 | /** | ||
80 | * <!-- begin-user-doc --> | ||
81 | * <!-- end-user-doc --> | ||
82 | * @generated | ||
83 | */ | ||
84 | @Override | ||
85 | public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { | ||
86 | switch (featureID) { | ||
87 | case FamilytreePackage.FAMILY_TREE__MEMBERS: | ||
88 | return ((InternalEList<?>)getMembers()).basicRemove(otherEnd, msgs); | ||
89 | } | ||
90 | return super.eInverseRemove(otherEnd, featureID, msgs); | ||
91 | } | ||
92 | |||
93 | /** | ||
94 | * <!-- begin-user-doc --> | ||
95 | * <!-- end-user-doc --> | ||
96 | * @generated | ||
97 | */ | ||
98 | @Override | ||
99 | public Object eGet(int featureID, boolean resolve, boolean coreType) { | ||
100 | switch (featureID) { | ||
101 | case FamilytreePackage.FAMILY_TREE__MEMBERS: | ||
102 | return getMembers(); | ||
103 | } | ||
104 | return super.eGet(featureID, resolve, coreType); | ||
105 | } | ||
106 | |||
107 | /** | ||
108 | * <!-- begin-user-doc --> | ||
109 | * <!-- end-user-doc --> | ||
110 | * @generated | ||
111 | */ | ||
112 | @SuppressWarnings("unchecked") | ||
113 | @Override | ||
114 | public void eSet(int featureID, Object newValue) { | ||
115 | switch (featureID) { | ||
116 | case FamilytreePackage.FAMILY_TREE__MEMBERS: | ||
117 | getMembers().clear(); | ||
118 | getMembers().addAll((Collection<? extends Member>)newValue); | ||
119 | return; | ||
120 | } | ||
121 | super.eSet(featureID, newValue); | ||
122 | } | ||
123 | |||
124 | /** | ||
125 | * <!-- begin-user-doc --> | ||
126 | * <!-- end-user-doc --> | ||
127 | * @generated | ||
128 | */ | ||
129 | @Override | ||
130 | public void eUnset(int featureID) { | ||
131 | switch (featureID) { | ||
132 | case FamilytreePackage.FAMILY_TREE__MEMBERS: | ||
133 | getMembers().clear(); | ||
134 | return; | ||
135 | } | ||
136 | super.eUnset(featureID); | ||
137 | } | ||
138 | |||
139 | /** | ||
140 | * <!-- begin-user-doc --> | ||
141 | * <!-- end-user-doc --> | ||
142 | * @generated | ||
143 | */ | ||
144 | @Override | ||
145 | public boolean eIsSet(int featureID) { | ||
146 | switch (featureID) { | ||
147 | case FamilytreePackage.FAMILY_TREE__MEMBERS: | ||
148 | return members != null && !members.isEmpty(); | ||
149 | } | ||
150 | return super.eIsSet(featureID); | ||
151 | } | ||
152 | |||
153 | } //FamilyTreeImpl | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/FamilytreeFactoryImpl.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/FamilytreeFactoryImpl.java new file mode 100644 index 00000000..bc54d09c --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/FamilytreeFactoryImpl.java | |||
@@ -0,0 +1,109 @@ | |||
1 | /** | ||
2 | */ | ||
3 | package familytree.impl; | ||
4 | |||
5 | import familytree.*; | ||
6 | |||
7 | import org.eclipse.emf.ecore.EClass; | ||
8 | import org.eclipse.emf.ecore.EObject; | ||
9 | import org.eclipse.emf.ecore.EPackage; | ||
10 | |||
11 | import org.eclipse.emf.ecore.impl.EFactoryImpl; | ||
12 | |||
13 | import org.eclipse.emf.ecore.plugin.EcorePlugin; | ||
14 | |||
15 | /** | ||
16 | * <!-- begin-user-doc --> | ||
17 | * An implementation of the model <b>Factory</b>. | ||
18 | * <!-- end-user-doc --> | ||
19 | * @generated | ||
20 | */ | ||
21 | public class FamilytreeFactoryImpl extends EFactoryImpl implements FamilytreeFactory { | ||
22 | /** | ||
23 | * Creates the default factory implementation. | ||
24 | * <!-- begin-user-doc --> | ||
25 | * <!-- end-user-doc --> | ||
26 | * @generated | ||
27 | */ | ||
28 | public static FamilytreeFactory init() { | ||
29 | try { | ||
30 | FamilytreeFactory theFamilytreeFactory = (FamilytreeFactory)EPackage.Registry.INSTANCE.getEFactory(FamilytreePackage.eNS_URI); | ||
31 | if (theFamilytreeFactory != null) { | ||
32 | return theFamilytreeFactory; | ||
33 | } | ||
34 | } | ||
35 | catch (Exception exception) { | ||
36 | EcorePlugin.INSTANCE.log(exception); | ||
37 | } | ||
38 | return new FamilytreeFactoryImpl(); | ||
39 | } | ||
40 | |||
41 | /** | ||
42 | * Creates an instance of the factory. | ||
43 | * <!-- begin-user-doc --> | ||
44 | * <!-- end-user-doc --> | ||
45 | * @generated | ||
46 | */ | ||
47 | public FamilytreeFactoryImpl() { | ||
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 FamilytreePackage.FAMILY_TREE: return createFamilyTree(); | ||
60 | case FamilytreePackage.MEMBER: return createMember(); | ||
61 | default: | ||
62 | throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); | ||
63 | } | ||
64 | } | ||
65 | |||
66 | /** | ||
67 | * <!-- begin-user-doc --> | ||
68 | * <!-- end-user-doc --> | ||
69 | * @generated | ||
70 | */ | ||
71 | @Override | ||
72 | public FamilyTree createFamilyTree() { | ||
73 | FamilyTreeImpl familyTree = new FamilyTreeImpl(); | ||
74 | return familyTree; | ||
75 | } | ||
76 | |||
77 | /** | ||
78 | * <!-- begin-user-doc --> | ||
79 | * <!-- end-user-doc --> | ||
80 | * @generated | ||
81 | */ | ||
82 | @Override | ||
83 | public Member createMember() { | ||
84 | MemberImpl member = new MemberImpl(); | ||
85 | return member; | ||
86 | } | ||
87 | |||
88 | /** | ||
89 | * <!-- begin-user-doc --> | ||
90 | * <!-- end-user-doc --> | ||
91 | * @generated | ||
92 | */ | ||
93 | @Override | ||
94 | public FamilytreePackage getFamilytreePackage() { | ||
95 | return (FamilytreePackage)getEPackage(); | ||
96 | } | ||
97 | |||
98 | /** | ||
99 | * <!-- begin-user-doc --> | ||
100 | * <!-- end-user-doc --> | ||
101 | * @deprecated | ||
102 | * @generated | ||
103 | */ | ||
104 | @Deprecated | ||
105 | public static FamilytreePackage getPackage() { | ||
106 | return FamilytreePackage.eINSTANCE; | ||
107 | } | ||
108 | |||
109 | } //FamilytreeFactoryImpl | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/FamilytreePackageImpl.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/FamilytreePackageImpl.java new file mode 100644 index 00000000..0980260e --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/FamilytreePackageImpl.java | |||
@@ -0,0 +1,251 @@ | |||
1 | /** | ||
2 | */ | ||
3 | package familytree.impl; | ||
4 | |||
5 | import familytree.FamilyTree; | ||
6 | import familytree.FamilytreeFactory; | ||
7 | import familytree.FamilytreePackage; | ||
8 | import familytree.Member; | ||
9 | |||
10 | import org.eclipse.emf.ecore.EAttribute; | ||
11 | import org.eclipse.emf.ecore.EClass; | ||
12 | import org.eclipse.emf.ecore.EPackage; | ||
13 | import org.eclipse.emf.ecore.EReference; | ||
14 | |||
15 | import org.eclipse.emf.ecore.impl.EPackageImpl; | ||
16 | |||
17 | /** | ||
18 | * <!-- begin-user-doc --> | ||
19 | * An implementation of the model <b>Package</b>. | ||
20 | * <!-- end-user-doc --> | ||
21 | * @generated | ||
22 | */ | ||
23 | public class FamilytreePackageImpl extends EPackageImpl implements FamilytreePackage { | ||
24 | /** | ||
25 | * <!-- begin-user-doc --> | ||
26 | * <!-- end-user-doc --> | ||
27 | * @generated | ||
28 | */ | ||
29 | private EClass familyTreeEClass = null; | ||
30 | |||
31 | /** | ||
32 | * <!-- begin-user-doc --> | ||
33 | * <!-- end-user-doc --> | ||
34 | * @generated | ||
35 | */ | ||
36 | private EClass memberEClass = 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 familytree.FamilytreePackage#eNS_URI | ||
50 | * @see #init() | ||
51 | * @generated | ||
52 | */ | ||
53 | private FamilytreePackageImpl() { | ||
54 | super(eNS_URI, FamilytreeFactory.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 FamilytreePackage#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 FamilytreePackage init() { | ||
77 | if (isInited) return (FamilytreePackage)EPackage.Registry.INSTANCE.getEPackage(FamilytreePackage.eNS_URI); | ||
78 | |||
79 | // Obtain or create and register package | ||
80 | Object registeredFamilytreePackage = EPackage.Registry.INSTANCE.get(eNS_URI); | ||
81 | FamilytreePackageImpl theFamilytreePackage = registeredFamilytreePackage instanceof FamilytreePackageImpl ? (FamilytreePackageImpl)registeredFamilytreePackage : new FamilytreePackageImpl(); | ||
82 | |||
83 | isInited = true; | ||
84 | |||
85 | // Create package meta-data objects | ||
86 | theFamilytreePackage.createPackageContents(); | ||
87 | |||
88 | // Initialize created meta-data | ||
89 | theFamilytreePackage.initializePackageContents(); | ||
90 | |||
91 | // Mark meta-data to indicate it can't be changed | ||
92 | theFamilytreePackage.freeze(); | ||
93 | |||
94 | // Update the registry and return the package | ||
95 | EPackage.Registry.INSTANCE.put(FamilytreePackage.eNS_URI, theFamilytreePackage); | ||
96 | return theFamilytreePackage; | ||
97 | } | ||
98 | |||
99 | /** | ||
100 | * <!-- begin-user-doc --> | ||
101 | * <!-- end-user-doc --> | ||
102 | * @generated | ||
103 | */ | ||
104 | @Override | ||
105 | public EClass getFamilyTree() { | ||
106 | return familyTreeEClass; | ||
107 | } | ||
108 | |||
109 | /** | ||
110 | * <!-- begin-user-doc --> | ||
111 | * <!-- end-user-doc --> | ||
112 | * @generated | ||
113 | */ | ||
114 | @Override | ||
115 | public EReference getFamilyTree_Members() { | ||
116 | return (EReference)familyTreeEClass.getEStructuralFeatures().get(0); | ||
117 | } | ||
118 | |||
119 | /** | ||
120 | * <!-- begin-user-doc --> | ||
121 | * <!-- end-user-doc --> | ||
122 | * @generated | ||
123 | */ | ||
124 | @Override | ||
125 | public EClass getMember() { | ||
126 | return memberEClass; | ||
127 | } | ||
128 | |||
129 | /** | ||
130 | * <!-- begin-user-doc --> | ||
131 | * <!-- end-user-doc --> | ||
132 | * @generated | ||
133 | */ | ||
134 | @Override | ||
135 | public EAttribute getMember_Name() { | ||
136 | return (EAttribute)memberEClass.getEStructuralFeatures().get(0); | ||
137 | } | ||
138 | |||
139 | /** | ||
140 | * <!-- begin-user-doc --> | ||
141 | * <!-- end-user-doc --> | ||
142 | * @generated | ||
143 | */ | ||
144 | @Override | ||
145 | public EAttribute getMember_Age() { | ||
146 | return (EAttribute)memberEClass.getEStructuralFeatures().get(1); | ||
147 | } | ||
148 | |||
149 | /** | ||
150 | * <!-- begin-user-doc --> | ||
151 | * <!-- end-user-doc --> | ||
152 | * @generated | ||
153 | */ | ||
154 | @Override | ||
155 | public EReference getMember_Children() { | ||
156 | return (EReference)memberEClass.getEStructuralFeatures().get(2); | ||
157 | } | ||
158 | |||
159 | /** | ||
160 | * <!-- begin-user-doc --> | ||
161 | * <!-- end-user-doc --> | ||
162 | * @generated | ||
163 | */ | ||
164 | @Override | ||
165 | public EReference getMember_Parents() { | ||
166 | return (EReference)memberEClass.getEStructuralFeatures().get(3); | ||
167 | } | ||
168 | |||
169 | /** | ||
170 | * <!-- begin-user-doc --> | ||
171 | * <!-- end-user-doc --> | ||
172 | * @generated | ||
173 | */ | ||
174 | @Override | ||
175 | public FamilytreeFactory getFamilytreeFactory() { | ||
176 | return (FamilytreeFactory)getEFactoryInstance(); | ||
177 | } | ||
178 | |||
179 | /** | ||
180 | * <!-- begin-user-doc --> | ||
181 | * <!-- end-user-doc --> | ||
182 | * @generated | ||
183 | */ | ||
184 | private boolean isCreated = false; | ||
185 | |||
186 | /** | ||
187 | * Creates the meta-model objects for the package. This method is | ||
188 | * guarded to have no affect on any invocation but its first. | ||
189 | * <!-- begin-user-doc --> | ||
190 | * <!-- end-user-doc --> | ||
191 | * @generated | ||
192 | */ | ||
193 | public void createPackageContents() { | ||
194 | if (isCreated) return; | ||
195 | isCreated = true; | ||
196 | |||
197 | // Create classes and their features | ||
198 | familyTreeEClass = createEClass(FAMILY_TREE); | ||
199 | createEReference(familyTreeEClass, FAMILY_TREE__MEMBERS); | ||
200 | |||
201 | memberEClass = createEClass(MEMBER); | ||
202 | createEAttribute(memberEClass, MEMBER__NAME); | ||
203 | createEAttribute(memberEClass, MEMBER__AGE); | ||
204 | createEReference(memberEClass, MEMBER__CHILDREN); | ||
205 | createEReference(memberEClass, MEMBER__PARENTS); | ||
206 | } | ||
207 | |||
208 | /** | ||
209 | * <!-- begin-user-doc --> | ||
210 | * <!-- end-user-doc --> | ||
211 | * @generated | ||
212 | */ | ||
213 | private boolean isInitialized = false; | ||
214 | |||
215 | /** | ||
216 | * Complete the initialization of the package and its meta-model. This | ||
217 | * method is guarded to have no affect on any invocation but its first. | ||
218 | * <!-- begin-user-doc --> | ||
219 | * <!-- end-user-doc --> | ||
220 | * @generated | ||
221 | */ | ||
222 | public void initializePackageContents() { | ||
223 | if (isInitialized) return; | ||
224 | isInitialized = true; | ||
225 | |||
226 | // Initialize package | ||
227 | setName(eNAME); | ||
228 | setNsPrefix(eNS_PREFIX); | ||
229 | setNsURI(eNS_URI); | ||
230 | |||
231 | // Create type parameters | ||
232 | |||
233 | // Set bounds for type parameters | ||
234 | |||
235 | // Add supertypes to classes | ||
236 | |||
237 | // Initialize classes, features, and operations; add parameters | ||
238 | initEClass(familyTreeEClass, FamilyTree.class, "FamilyTree", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); | ||
239 | initEReference(getFamilyTree_Members(), this.getMember(), null, "members", null, 0, -1, FamilyTree.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); | ||
240 | |||
241 | initEClass(memberEClass, Member.class, "Member", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); | ||
242 | initEAttribute(getMember_Name(), ecorePackage.getEString(), "name", null, 0, 1, Member.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); | ||
243 | initEAttribute(getMember_Age(), ecorePackage.getEInt(), "age", "0", 0, 1, Member.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); | ||
244 | initEReference(getMember_Children(), this.getMember(), this.getMember_Parents(), "children", null, 0, -1, Member.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); | ||
245 | initEReference(getMember_Parents(), this.getMember(), this.getMember_Children(), "parents", null, 0, 2, Member.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); | ||
246 | |||
247 | // Create resource | ||
248 | createResource(eNS_URI); | ||
249 | } | ||
250 | |||
251 | } //FamilytreePackageImpl | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/MemberImpl.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/MemberImpl.java new file mode 100644 index 00000000..77e423bd --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/impl/MemberImpl.java | |||
@@ -0,0 +1,334 @@ | |||
1 | /** | ||
2 | */ | ||
3 | package familytree.impl; | ||
4 | |||
5 | import familytree.FamilytreePackage; | ||
6 | import familytree.Member; | ||
7 | |||
8 | import java.util.Collection; | ||
9 | |||
10 | import org.eclipse.emf.common.notify.Notification; | ||
11 | import org.eclipse.emf.common.notify.NotificationChain; | ||
12 | |||
13 | import org.eclipse.emf.common.util.EList; | ||
14 | |||
15 | import org.eclipse.emf.ecore.EClass; | ||
16 | import org.eclipse.emf.ecore.InternalEObject; | ||
17 | |||
18 | import org.eclipse.emf.ecore.impl.ENotificationImpl; | ||
19 | import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; | ||
20 | |||
21 | import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList; | ||
22 | import org.eclipse.emf.ecore.util.InternalEList; | ||
23 | |||
24 | /** | ||
25 | * <!-- begin-user-doc --> | ||
26 | * An implementation of the model object '<em><b>Member</b></em>'. | ||
27 | * <!-- end-user-doc --> | ||
28 | * <p> | ||
29 | * The following features are implemented: | ||
30 | * </p> | ||
31 | * <ul> | ||
32 | * <li>{@link familytree.impl.MemberImpl#getName <em>Name</em>}</li> | ||
33 | * <li>{@link familytree.impl.MemberImpl#getAge <em>Age</em>}</li> | ||
34 | * <li>{@link familytree.impl.MemberImpl#getChildren <em>Children</em>}</li> | ||
35 | * <li>{@link familytree.impl.MemberImpl#getParents <em>Parents</em>}</li> | ||
36 | * </ul> | ||
37 | * | ||
38 | * @generated | ||
39 | */ | ||
40 | public class MemberImpl extends MinimalEObjectImpl.Container implements Member { | ||
41 | /** | ||
42 | * The default value of the '{@link #getName() <em>Name</em>}' attribute. | ||
43 | * <!-- begin-user-doc --> | ||
44 | * <!-- end-user-doc --> | ||
45 | * @see #getName() | ||
46 | * @generated | ||
47 | * @ordered | ||
48 | */ | ||
49 | protected static final String NAME_EDEFAULT = null; | ||
50 | |||
51 | /** | ||
52 | * The cached value of the '{@link #getName() <em>Name</em>}' attribute. | ||
53 | * <!-- begin-user-doc --> | ||
54 | * <!-- end-user-doc --> | ||
55 | * @see #getName() | ||
56 | * @generated | ||
57 | * @ordered | ||
58 | */ | ||
59 | protected String name = NAME_EDEFAULT; | ||
60 | |||
61 | /** | ||
62 | * The default value of the '{@link #getAge() <em>Age</em>}' attribute. | ||
63 | * <!-- begin-user-doc --> | ||
64 | * <!-- end-user-doc --> | ||
65 | * @see #getAge() | ||
66 | * @generated | ||
67 | * @ordered | ||
68 | */ | ||
69 | protected static final int AGE_EDEFAULT = 0; | ||
70 | |||
71 | /** | ||
72 | * The cached value of the '{@link #getAge() <em>Age</em>}' attribute. | ||
73 | * <!-- begin-user-doc --> | ||
74 | * <!-- end-user-doc --> | ||
75 | * @see #getAge() | ||
76 | * @generated | ||
77 | * @ordered | ||
78 | */ | ||
79 | protected int age = AGE_EDEFAULT; | ||
80 | |||
81 | /** | ||
82 | * The cached value of the '{@link #getChildren() <em>Children</em>}' reference list. | ||
83 | * <!-- begin-user-doc --> | ||
84 | * <!-- end-user-doc --> | ||
85 | * @see #getChildren() | ||
86 | * @generated | ||
87 | * @ordered | ||
88 | */ | ||
89 | protected EList<Member> children; | ||
90 | |||
91 | /** | ||
92 | * The cached value of the '{@link #getParents() <em>Parents</em>}' reference list. | ||
93 | * <!-- begin-user-doc --> | ||
94 | * <!-- end-user-doc --> | ||
95 | * @see #getParents() | ||
96 | * @generated | ||
97 | * @ordered | ||
98 | */ | ||
99 | protected EList<Member> parents; | ||
100 | |||
101 | /** | ||
102 | * <!-- begin-user-doc --> | ||
103 | * <!-- end-user-doc --> | ||
104 | * @generated | ||
105 | */ | ||
106 | protected MemberImpl() { | ||
107 | super(); | ||
108 | } | ||
109 | |||
110 | /** | ||
111 | * <!-- begin-user-doc --> | ||
112 | * <!-- end-user-doc --> | ||
113 | * @generated | ||
114 | */ | ||
115 | @Override | ||
116 | protected EClass eStaticClass() { | ||
117 | return FamilytreePackage.Literals.MEMBER; | ||
118 | } | ||
119 | |||
120 | /** | ||
121 | * <!-- begin-user-doc --> | ||
122 | * <!-- end-user-doc --> | ||
123 | * @generated | ||
124 | */ | ||
125 | @Override | ||
126 | public String getName() { | ||
127 | return name; | ||
128 | } | ||
129 | |||
130 | /** | ||
131 | * <!-- begin-user-doc --> | ||
132 | * <!-- end-user-doc --> | ||
133 | * @generated | ||
134 | */ | ||
135 | @Override | ||
136 | public void setName(String newName) { | ||
137 | String oldName = name; | ||
138 | name = newName; | ||
139 | if (eNotificationRequired()) | ||
140 | eNotify(new ENotificationImpl(this, Notification.SET, FamilytreePackage.MEMBER__NAME, oldName, name)); | ||
141 | } | ||
142 | |||
143 | /** | ||
144 | * <!-- begin-user-doc --> | ||
145 | * <!-- end-user-doc --> | ||
146 | * @generated | ||
147 | */ | ||
148 | @Override | ||
149 | public int getAge() { | ||
150 | return age; | ||
151 | } | ||
152 | |||
153 | /** | ||
154 | * <!-- begin-user-doc --> | ||
155 | * <!-- end-user-doc --> | ||
156 | * @generated | ||
157 | */ | ||
158 | @Override | ||
159 | public void setAge(int newAge) { | ||
160 | int oldAge = age; | ||
161 | age = newAge; | ||
162 | if (eNotificationRequired()) | ||
163 | eNotify(new ENotificationImpl(this, Notification.SET, FamilytreePackage.MEMBER__AGE, oldAge, age)); | ||
164 | } | ||
165 | |||
166 | /** | ||
167 | * <!-- begin-user-doc --> | ||
168 | * <!-- end-user-doc --> | ||
169 | * @generated | ||
170 | */ | ||
171 | @Override | ||
172 | public EList<Member> getChildren() { | ||
173 | if (children == null) { | ||
174 | children = new EObjectWithInverseResolvingEList.ManyInverse<Member>(Member.class, this, FamilytreePackage.MEMBER__CHILDREN, FamilytreePackage.MEMBER__PARENTS); | ||
175 | } | ||
176 | return children; | ||
177 | } | ||
178 | |||
179 | /** | ||
180 | * <!-- begin-user-doc --> | ||
181 | * <!-- end-user-doc --> | ||
182 | * @generated | ||
183 | */ | ||
184 | @Override | ||
185 | public EList<Member> getParents() { | ||
186 | if (parents == null) { | ||
187 | parents = new EObjectWithInverseResolvingEList.ManyInverse<Member>(Member.class, this, FamilytreePackage.MEMBER__PARENTS, FamilytreePackage.MEMBER__CHILDREN); | ||
188 | } | ||
189 | return parents; | ||
190 | } | ||
191 | |||
192 | /** | ||
193 | * <!-- begin-user-doc --> | ||
194 | * <!-- end-user-doc --> | ||
195 | * @generated | ||
196 | */ | ||
197 | @SuppressWarnings("unchecked") | ||
198 | @Override | ||
199 | public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { | ||
200 | switch (featureID) { | ||
201 | case FamilytreePackage.MEMBER__CHILDREN: | ||
202 | return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs); | ||
203 | case FamilytreePackage.MEMBER__PARENTS: | ||
204 | return ((InternalEList<InternalEObject>)(InternalEList<?>)getParents()).basicAdd(otherEnd, msgs); | ||
205 | } | ||
206 | return super.eInverseAdd(otherEnd, featureID, msgs); | ||
207 | } | ||
208 | |||
209 | /** | ||
210 | * <!-- begin-user-doc --> | ||
211 | * <!-- end-user-doc --> | ||
212 | * @generated | ||
213 | */ | ||
214 | @Override | ||
215 | public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { | ||
216 | switch (featureID) { | ||
217 | case FamilytreePackage.MEMBER__CHILDREN: | ||
218 | return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs); | ||
219 | case FamilytreePackage.MEMBER__PARENTS: | ||
220 | return ((InternalEList<?>)getParents()).basicRemove(otherEnd, msgs); | ||
221 | } | ||
222 | return super.eInverseRemove(otherEnd, featureID, msgs); | ||
223 | } | ||
224 | |||
225 | /** | ||
226 | * <!-- begin-user-doc --> | ||
227 | * <!-- end-user-doc --> | ||
228 | * @generated | ||
229 | */ | ||
230 | @Override | ||
231 | public Object eGet(int featureID, boolean resolve, boolean coreType) { | ||
232 | switch (featureID) { | ||
233 | case FamilytreePackage.MEMBER__NAME: | ||
234 | return getName(); | ||
235 | case FamilytreePackage.MEMBER__AGE: | ||
236 | return getAge(); | ||
237 | case FamilytreePackage.MEMBER__CHILDREN: | ||
238 | return getChildren(); | ||
239 | case FamilytreePackage.MEMBER__PARENTS: | ||
240 | return getParents(); | ||
241 | } | ||
242 | return super.eGet(featureID, resolve, coreType); | ||
243 | } | ||
244 | |||
245 | /** | ||
246 | * <!-- begin-user-doc --> | ||
247 | * <!-- end-user-doc --> | ||
248 | * @generated | ||
249 | */ | ||
250 | @SuppressWarnings("unchecked") | ||
251 | @Override | ||
252 | public void eSet(int featureID, Object newValue) { | ||
253 | switch (featureID) { | ||
254 | case FamilytreePackage.MEMBER__NAME: | ||
255 | setName((String)newValue); | ||
256 | return; | ||
257 | case FamilytreePackage.MEMBER__AGE: | ||
258 | setAge((Integer)newValue); | ||
259 | return; | ||
260 | case FamilytreePackage.MEMBER__CHILDREN: | ||
261 | getChildren().clear(); | ||
262 | getChildren().addAll((Collection<? extends Member>)newValue); | ||
263 | return; | ||
264 | case FamilytreePackage.MEMBER__PARENTS: | ||
265 | getParents().clear(); | ||
266 | getParents().addAll((Collection<? extends Member>)newValue); | ||
267 | return; | ||
268 | } | ||
269 | super.eSet(featureID, newValue); | ||
270 | } | ||
271 | |||
272 | /** | ||
273 | * <!-- begin-user-doc --> | ||
274 | * <!-- end-user-doc --> | ||
275 | * @generated | ||
276 | */ | ||
277 | @Override | ||
278 | public void eUnset(int featureID) { | ||
279 | switch (featureID) { | ||
280 | case FamilytreePackage.MEMBER__NAME: | ||
281 | setName(NAME_EDEFAULT); | ||
282 | return; | ||
283 | case FamilytreePackage.MEMBER__AGE: | ||
284 | setAge(AGE_EDEFAULT); | ||
285 | return; | ||
286 | case FamilytreePackage.MEMBER__CHILDREN: | ||
287 | getChildren().clear(); | ||
288 | return; | ||
289 | case FamilytreePackage.MEMBER__PARENTS: | ||
290 | getParents().clear(); | ||
291 | return; | ||
292 | } | ||
293 | super.eUnset(featureID); | ||
294 | } | ||
295 | |||
296 | /** | ||
297 | * <!-- begin-user-doc --> | ||
298 | * <!-- end-user-doc --> | ||
299 | * @generated | ||
300 | */ | ||
301 | @Override | ||
302 | public boolean eIsSet(int featureID) { | ||
303 | switch (featureID) { | ||
304 | case FamilytreePackage.MEMBER__NAME: | ||
305 | return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); | ||
306 | case FamilytreePackage.MEMBER__AGE: | ||
307 | return age != AGE_EDEFAULT; | ||
308 | case FamilytreePackage.MEMBER__CHILDREN: | ||
309 | return children != null && !children.isEmpty(); | ||
310 | case FamilytreePackage.MEMBER__PARENTS: | ||
311 | return parents != null && !parents.isEmpty(); | ||
312 | } | ||
313 | return super.eIsSet(featureID); | ||
314 | } | ||
315 | |||
316 | /** | ||
317 | * <!-- begin-user-doc --> | ||
318 | * <!-- end-user-doc --> | ||
319 | * @generated | ||
320 | */ | ||
321 | @Override | ||
322 | public String toString() { | ||
323 | if (eIsProxy()) return super.toString(); | ||
324 | |||
325 | StringBuilder result = new StringBuilder(super.toString()); | ||
326 | result.append(" (name: "); | ||
327 | result.append(name); | ||
328 | result.append(", age: "); | ||
329 | result.append(age); | ||
330 | result.append(')'); | ||
331 | return result.toString(); | ||
332 | } | ||
333 | |||
334 | } //MemberImpl | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/util/FamilytreeAdapterFactory.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/util/FamilytreeAdapterFactory.java new file mode 100644 index 00000000..6412c40f --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/util/FamilytreeAdapterFactory.java | |||
@@ -0,0 +1,138 @@ | |||
1 | /** | ||
2 | */ | ||
3 | package familytree.util; | ||
4 | |||
5 | import familytree.*; | ||
6 | |||
7 | import org.eclipse.emf.common.notify.Adapter; | ||
8 | import org.eclipse.emf.common.notify.Notifier; | ||
9 | |||
10 | import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; | ||
11 | |||
12 | import org.eclipse.emf.ecore.EObject; | ||
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 familytree.FamilytreePackage | ||
20 | * @generated | ||
21 | */ | ||
22 | public class FamilytreeAdapterFactory extends AdapterFactoryImpl { | ||
23 | /** | ||
24 | * The cached model package. | ||
25 | * <!-- begin-user-doc --> | ||
26 | * <!-- end-user-doc --> | ||
27 | * @generated | ||
28 | */ | ||
29 | protected static FamilytreePackage modelPackage; | ||
30 | |||
31 | /** | ||
32 | * Creates an instance of the adapter factory. | ||
33 | * <!-- begin-user-doc --> | ||
34 | * <!-- end-user-doc --> | ||
35 | * @generated | ||
36 | */ | ||
37 | public FamilytreeAdapterFactory() { | ||
38 | if (modelPackage == null) { | ||
39 | modelPackage = FamilytreePackage.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 FamilytreeSwitch<Adapter> modelSwitch = | ||
69 | new FamilytreeSwitch<Adapter>() { | ||
70 | @Override | ||
71 | public Adapter caseFamilyTree(FamilyTree object) { | ||
72 | return createFamilyTreeAdapter(); | ||
73 | } | ||
74 | @Override | ||
75 | public Adapter caseMember(Member object) { | ||
76 | return createMemberAdapter(); | ||
77 | } | ||
78 | @Override | ||
79 | public Adapter defaultCase(EObject object) { | ||
80 | return createEObjectAdapter(); | ||
81 | } | ||
82 | }; | ||
83 | |||
84 | /** | ||
85 | * Creates an adapter for the <code>target</code>. | ||
86 | * <!-- begin-user-doc --> | ||
87 | * <!-- end-user-doc --> | ||
88 | * @param target the object to adapt. | ||
89 | * @return the adapter for the <code>target</code>. | ||
90 | * @generated | ||
91 | */ | ||
92 | @Override | ||
93 | public Adapter createAdapter(Notifier target) { | ||
94 | return modelSwitch.doSwitch((EObject)target); | ||
95 | } | ||
96 | |||
97 | |||
98 | /** | ||
99 | * Creates a new adapter for an object of class '{@link familytree.FamilyTree <em>Family Tree</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 familytree.FamilyTree | ||
106 | * @generated | ||
107 | */ | ||
108 | public Adapter createFamilyTreeAdapter() { | ||
109 | return null; | ||
110 | } | ||
111 | |||
112 | /** | ||
113 | * Creates a new adapter for an object of class '{@link familytree.Member <em>Member</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 familytree.Member | ||
120 | * @generated | ||
121 | */ | ||
122 | public Adapter createMemberAdapter() { | ||
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 | } //FamilytreeAdapterFactory | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/util/FamilytreeSwitch.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/util/FamilytreeSwitch.java new file mode 100644 index 00000000..75bbce3d --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.model/src/familytree/util/FamilytreeSwitch.java | |||
@@ -0,0 +1,131 @@ | |||
1 | /** | ||
2 | */ | ||
3 | package familytree.util; | ||
4 | |||
5 | import familytree.*; | ||
6 | |||
7 | import org.eclipse.emf.ecore.EObject; | ||
8 | import org.eclipse.emf.ecore.EPackage; | ||
9 | |||
10 | import org.eclipse.emf.ecore.util.Switch; | ||
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 familytree.FamilytreePackage | ||
23 | * @generated | ||
24 | */ | ||
25 | public class FamilytreeSwitch<T> extends Switch<T> { | ||
26 | /** | ||
27 | * The cached model package | ||
28 | * <!-- begin-user-doc --> | ||
29 | * <!-- end-user-doc --> | ||
30 | * @generated | ||
31 | */ | ||
32 | protected static FamilytreePackage modelPackage; | ||
33 | |||
34 | /** | ||
35 | * Creates an instance of the switch. | ||
36 | * <!-- begin-user-doc --> | ||
37 | * <!-- end-user-doc --> | ||
38 | * @generated | ||
39 | */ | ||
40 | public FamilytreeSwitch() { | ||
41 | if (modelPackage == null) { | ||
42 | modelPackage = FamilytreePackage.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 FamilytreePackage.FAMILY_TREE: { | ||
70 | FamilyTree familyTree = (FamilyTree)theEObject; | ||
71 | T result = caseFamilyTree(familyTree); | ||
72 | if (result == null) result = defaultCase(theEObject); | ||
73 | return result; | ||
74 | } | ||
75 | case FamilytreePackage.MEMBER: { | ||
76 | Member member = (Member)theEObject; | ||
77 | T result = caseMember(member); | ||
78 | if (result == null) result = defaultCase(theEObject); | ||
79 | return result; | ||
80 | } | ||
81 | default: return defaultCase(theEObject); | ||
82 | } | ||
83 | } | ||
84 | |||
85 | /** | ||
86 | * Returns the result of interpreting the object as an instance of '<em>Family Tree</em>'. | ||
87 | * <!-- begin-user-doc --> | ||
88 | * This implementation returns null; | ||
89 | * returning a non-null result will terminate the switch. | ||
90 | * <!-- end-user-doc --> | ||
91 | * @param object the target of the switch. | ||
92 | * @return the result of interpreting the object as an instance of '<em>Family Tree</em>'. | ||
93 | * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) | ||
94 | * @generated | ||
95 | */ | ||
96 | public T caseFamilyTree(FamilyTree object) { | ||
97 | return null; | ||
98 | } | ||
99 | |||
100 | /** | ||
101 | * Returns the result of interpreting the object as an instance of '<em>Member</em>'. | ||
102 | * <!-- begin-user-doc --> | ||
103 | * This implementation returns null; | ||
104 | * returning a non-null result will terminate the switch. | ||
105 | * <!-- end-user-doc --> | ||
106 | * @param object the target of the switch. | ||
107 | * @return the result of interpreting the object as an instance of '<em>Member</em>'. | ||
108 | * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) | ||
109 | * @generated | ||
110 | */ | ||
111 | public T caseMember(Member object) { | ||
112 | return null; | ||
113 | } | ||
114 | |||
115 | /** | ||
116 | * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. | ||
117 | * <!-- begin-user-doc --> | ||
118 | * This implementation returns null; | ||
119 | * returning a non-null result will terminate the switch, but this is the last case anyway. | ||
120 | * <!-- end-user-doc --> | ||
121 | * @param object the target of the switch. | ||
122 | * @return the result of interpreting the object as an instance of '<em>EObject</em>'. | ||
123 | * @see #doSwitch(org.eclipse.emf.ecore.EObject) | ||
124 | * @generated | ||
125 | */ | ||
126 | @Override | ||
127 | public T defaultCase(EObject object) { | ||
128 | return null; | ||
129 | } | ||
130 | |||
131 | } //FamilytreeSwitch | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/.classpath b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/.classpath new file mode 100644 index 00000000..4cc715d5 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/.classpath | |||
@@ -0,0 +1,8 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <classpath> | ||
3 | <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> | ||
4 | <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> | ||
5 | <classpathentry kind="src" path="src"/> | ||
6 | <classpathentry kind="src" path="src-gen"/> | ||
7 | <classpathentry kind="output" path="bin"/> | ||
8 | </classpath> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/.project b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/.project new file mode 100644 index 00000000..98c56323 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/.project | |||
@@ -0,0 +1,40 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <projectDescription> | ||
3 | <name>case.study.familyTree.run</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/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/.settings/org.eclipse.jdt.core.prefs b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..295926d9 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/.settings/org.eclipse.jdt.core.prefs | |||
@@ -0,0 +1,7 @@ | |||
1 | eclipse.preferences.version=1 | ||
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled | ||
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 | ||
4 | org.eclipse.jdt.core.compiler.compliance=1.8 | ||
5 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error | ||
6 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error | ||
7 | org.eclipse.jdt.core.compiler.source=1.8 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/META-INF/MANIFEST.MF b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/META-INF/MANIFEST.MF new file mode 100644 index 00000000..3f4abc65 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/META-INF/MANIFEST.MF | |||
@@ -0,0 +1,14 @@ | |||
1 | Manifest-Version: 1.0 | ||
2 | Bundle-ManifestVersion: 2 | ||
3 | Bundle-Name: case.study.familyTree.run | ||
4 | Bundle-SymbolicName: case.study.familyTree.run;singleton:=true | ||
5 | Bundle-Version: 0.0.1.qualifier | ||
6 | Export-Package: queries | ||
7 | Require-Bundle: org.eclipse.emf.ecore, | ||
8 | org.eclipse.viatra.query.runtime, | ||
9 | org.eclipse.viatra.query.runtime.rete, | ||
10 | org.eclipse.viatra.query.runtime.localsearch, | ||
11 | org.eclipse.xtext.xbase.lib, | ||
12 | case.study.familyTree.model;bundle-version="1.0.0" | ||
13 | Import-Package: hu.bme.mit.inf.dslreasoner.application.execution, | ||
14 | org.apache.log4j | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/queries/.FamilyTreeConstraints.java._trace b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/queries/.FamilyTreeConstraints.java._trace new file mode 100644 index 00000000..80158bd8 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/queries/.FamilyTreeConstraints.java._trace | |||
Binary files differ | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/queries/.MemberIsItsOwnParent.java._trace b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/queries/.MemberIsItsOwnParent.java._trace new file mode 100644 index 00000000..1b0dca98 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/queries/.MemberIsItsOwnParent.java._trace | |||
Binary files differ | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/queries/familyTreeConstraints.vql b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/queries/familyTreeConstraints.vql new file mode 100644 index 00000000..1b9b6659 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/queries/familyTreeConstraints.vql | |||
@@ -0,0 +1,24 @@ | |||
1 | package queries | ||
2 | |||
3 | import "http://www.example.org/familytree" | ||
4 | |||
5 | @Constraint(message="memberIsItsOwnParent", severity="error", key={m}) | ||
6 | pattern memberIsItsOwnParent(m: Member) = { | ||
7 | FamilyTree.members(_, m); | ||
8 | Member.parents(m, p); | ||
9 | m == p; | ||
10 | } | ||
11 | |||
12 | //@Constraint(message="parentTooYoung", severity="error", key={m, p}) | ||
13 | //pattern parentTooYoung(m: Member, p: Member) = { | ||
14 | // FamilyTree.members(_, m); | ||
15 | // Member.parents(m, p); | ||
16 | // Member.age(m, mAge); | ||
17 | // Member.age(p, pAge); | ||
18 | // check (mAge <= (pAge + 12)); | ||
19 | //} | ||
20 | |||
21 | |||
22 | |||
23 | |||
24 | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/build.properties b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/build.properties new file mode 100644 index 00000000..efae4b07 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/build.properties | |||
@@ -0,0 +1,6 @@ | |||
1 | bin.includes = META-INF/,\ | ||
2 | . | ||
3 | source.. = src/,\ | ||
4 | src-gen/,\ | ||
5 | src-gen/ | ||
6 | output.. = bin/ | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytree.ecore b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytree.ecore new file mode 100644 index 00000000..f2e51f65 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytree.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="familytree" nsURI="http://www.example.org/familytree" nsPrefix="familytree"> | ||
4 | <eClassifiers xsi:type="ecore:EClass" name="FamilyTree"> | ||
5 | <eStructuralFeatures xsi:type="ecore:EReference" name="members" upperBound="-1" | ||
6 | eType="#//Member" containment="true"/> | ||
7 | </eClassifiers> | ||
8 | <eClassifiers xsi:type="ecore:EClass" name="Member"> | ||
9 | <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> | ||
10 | <eStructuralFeatures xsi:type="ecore:EAttribute" name="age" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" | ||
11 | defaultValueLiteral="0"/> | ||
12 | <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1" | ||
13 | eType="#//Member" eOpposite="#//Member/parents"/> | ||
14 | <eStructuralFeatures xsi:type="ecore:EReference" name="parents" upperBound="2" | ||
15 | eType="#//Member" eOpposite="#//Member/children"/> | ||
16 | </eClassifiers> | ||
17 | </ecore:EPackage> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytreeGen.vsconfig b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytreeGen.vsconfig new file mode 100644 index 00000000..140523bf --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytreeGen.vsconfig | |||
@@ -0,0 +1,23 @@ | |||
1 | import epackage "inputs/familytree.ecore" | ||
2 | import viatra "src/queries/familyTreeConstraints.vql" | ||
3 | |||
4 | generate { | ||
5 | metamodel = { package familytree } | ||
6 | constraints = { package queries} | ||
7 | solver = ViatraSolver | ||
8 | scope = { | ||
9 | #node = 6, | ||
10 | #int = {1,2,3,4,5} | ||
11 | } | ||
12 | |||
13 | config = { | ||
14 | runtime = 10000, | ||
15 | log-level = normal | ||
16 | } | ||
17 | |||
18 | runs = 1 | ||
19 | |||
20 | debug = "outputs/debug" | ||
21 | log = "outputs/log.txt" | ||
22 | output = "outputs/models" | ||
23 | } \ No newline at end of file | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generated3valued.vql_deactivated b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generated3valued.vql_deactivated new file mode 100644 index 00000000..bbaa6a26 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generated3valued.vql_deactivated | |||
@@ -0,0 +1,672 @@ | |||
1 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" | ||
2 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" | ||
3 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" | ||
4 | |||
5 | ////////// | ||
6 | // 0. Util | ||
7 | ////////// | ||
8 | private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { | ||
9 | PartialInterpretation.problem(interpretation,problem); | ||
10 | } | ||
11 | |||
12 | ///////////////////////// | ||
13 | // 0.1 Existence | ||
14 | ///////////////////////// | ||
15 | /** [[exist(element)]]=1 */ | ||
16 | private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
17 | find interpretation(problem,interpretation); | ||
18 | LogicProblem.elements(problem,element); | ||
19 | } or { | ||
20 | find interpretation(problem,interpretation); | ||
21 | PartialInterpretation.newElements(interpretation,element); | ||
22 | } | ||
23 | |||
24 | /** [[exist(element)]]>=1/2 */ | ||
25 | private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
26 | find mustExist(problem,interpretation,element); | ||
27 | } or { | ||
28 | find interpretation(problem,interpretation); | ||
29 | neg find elementCloseWorld(element); | ||
30 | PartialInterpretation.openWorldElements(interpretation,element); | ||
31 | } | ||
32 | |||
33 | private pattern elementCloseWorld(element:DefinedElement) { | ||
34 | PartialInterpretation.openWorldElements(i,element); | ||
35 | PartialInterpretation.maxNewElements(i,0); | ||
36 | } or { | ||
37 | Scope.targetTypeInterpretation(scope,interpretation); | ||
38 | PartialTypeInterpratation.elements(interpretation,element); | ||
39 | Scope.maxNewElements(scope,0); | ||
40 | } | ||
41 | |||
42 | //////////////////////// | ||
43 | // 0.2 Equivalence | ||
44 | //////////////////////// | ||
45 | pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) | ||
46 | // For non-primitive type. Boolean types always must equivalent or cannot equivalent | ||
47 | { | ||
48 | find mayExist(problem,interpretation,a); | ||
49 | find mayExist(problem,interpretation,b); | ||
50 | a == b; | ||
51 | } or { | ||
52 | find mayExist(problem,interpretation,a); | ||
53 | find mayExist(problem,interpretation,b); | ||
54 | IntegerElement(a); | ||
55 | IntegerElement(b); | ||
56 | PrimitiveElement.valueSet(a,false); | ||
57 | } or { | ||
58 | find mayExist(problem,interpretation,a); | ||
59 | find mayExist(problem,interpretation,b); | ||
60 | IntegerElement(a); | ||
61 | IntegerElement(b); | ||
62 | PrimitiveElement.valueSet(b,false); | ||
63 | } or { | ||
64 | find mayExist(problem,interpretation,a); | ||
65 | find mayExist(problem,interpretation,b); | ||
66 | RealElement(a); | ||
67 | RealElement(b); | ||
68 | PrimitiveElement.valueSet(a,false); | ||
69 | } or { | ||
70 | find mayExist(problem,interpretation,a); | ||
71 | find mayExist(problem,interpretation,b); | ||
72 | RealElement(a); | ||
73 | RealElement(b); | ||
74 | PrimitiveElement.valueSet(b,false); | ||
75 | } or { | ||
76 | find mayExist(problem,interpretation,a); | ||
77 | find mayExist(problem,interpretation,b); | ||
78 | RealElement(a); | ||
79 | IntegerElement(b); | ||
80 | PrimitiveElement.valueSet(a,false); | ||
81 | } or { | ||
82 | find mayExist(problem,interpretation,a); | ||
83 | find mayExist(problem,interpretation,b); | ||
84 | RealElement(a); | ||
85 | IntegerElement(b); | ||
86 | PrimitiveElement.valueSet(b,false); | ||
87 | } or { | ||
88 | find mayExist(problem,interpretation,a); | ||
89 | find mayExist(problem,interpretation,b); | ||
90 | IntegerElement(a); | ||
91 | RealElement(b); | ||
92 | PrimitiveElement.valueSet(a,false); | ||
93 | } or { | ||
94 | find mayExist(problem,interpretation,a); | ||
95 | find mayExist(problem,interpretation,b); | ||
96 | IntegerElement(a); | ||
97 | RealElement(b); | ||
98 | PrimitiveElement.valueSet(b,false); | ||
99 | } or { | ||
100 | find mayExist(problem,interpretation,a); | ||
101 | find mayExist(problem,interpretation,b); | ||
102 | StringElement(a); | ||
103 | StringElement(b); | ||
104 | PrimitiveElement.valueSet(a,false); | ||
105 | } or { | ||
106 | find mayExist(problem,interpretation,a); | ||
107 | find mayExist(problem,interpretation,b); | ||
108 | StringElement(a); | ||
109 | StringElement(b); | ||
110 | PrimitiveElement.valueSet(b,false); | ||
111 | } | ||
112 | |||
113 | pattern mustEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { | ||
114 | // For non-primitive and Boolean primitive type | ||
115 | find mustExist(problem,interpretation,a); | ||
116 | find mustExist(problem,interpretation,b); | ||
117 | a == b; | ||
118 | } or { | ||
119 | find mustExist(problem,interpretation,a); | ||
120 | find mustExist(problem,interpretation,b); | ||
121 | PrimitiveElement.valueSet(a,true); | ||
122 | PrimitiveElement.valueSet(b,true); | ||
123 | IntegerElement.value(a,value); | ||
124 | IntegerElement.value(b,value); | ||
125 | } or { | ||
126 | find mustExist(problem,interpretation,a); | ||
127 | find mustExist(problem,interpretation,b); | ||
128 | PrimitiveElement.valueSet(a,true); | ||
129 | PrimitiveElement.valueSet(b,true); | ||
130 | RealElement.value(a,value); | ||
131 | RealElement.value(b,value); | ||
132 | } or { | ||
133 | find mustExist(problem,interpretation,a); | ||
134 | find mustExist(problem,interpretation,b); | ||
135 | PrimitiveElement.valueSet(a,true); | ||
136 | PrimitiveElement.valueSet(b,true); | ||
137 | RealElement.value(a,value); | ||
138 | IntegerElement.value(b,value); | ||
139 | } or { | ||
140 | find mustExist(problem,interpretation,a); | ||
141 | find mustExist(problem,interpretation,b); | ||
142 | PrimitiveElement.valueSet(a,true); | ||
143 | PrimitiveElement.valueSet(b,true); | ||
144 | IntegerElement.value(a,value); | ||
145 | RealElement.value(b,value); | ||
146 | } or { | ||
147 | find mustExist(problem,interpretation,a); | ||
148 | find mustExist(problem,interpretation,b); | ||
149 | PrimitiveElement.valueSet(a,true); | ||
150 | PrimitiveElement.valueSet(b,true); | ||
151 | StringElement.value(a,value); | ||
152 | StringElement.value(b,value); | ||
153 | } | ||
154 | |||
155 | ////////// | ||
156 | // 1. Problem-Specific Base Indexers | ||
157 | ////////// | ||
158 | // 1.1 Type Indexers | ||
159 | ////////// | ||
160 | // 1.1.1 Required Patterns by TypeIndexer | ||
161 | ////////// | ||
162 | private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { | ||
163 | find interpretation(problem,interpretation); | ||
164 | LogicProblem.types(problem,type); | ||
165 | PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); | ||
166 | PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); | ||
167 | } | ||
168 | |||
169 | private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { | ||
170 | find interpretation(problem,interpretation); | ||
171 | LogicProblem.types(problem,type); | ||
172 | TypeDefinition.elements(type,element); | ||
173 | } or { | ||
174 | find interpretation(problem,interpretation); | ||
175 | find typeInterpretation(problem,interpretation,type,typeInterpretation); | ||
176 | PartialComplexTypeInterpretation.elements(typeInterpretation,element); | ||
177 | } | ||
178 | |||
179 | private pattern isPrimitive(element: PrimitiveElement) { | ||
180 | PrimitiveElement(element); | ||
181 | } | ||
182 | ////////// | ||
183 | // 1.1.2 primitive Type Indexers | ||
184 | ////////// | ||
185 | // Currently unused. Refer primitive types as: | ||
186 | // > PrimitiveElement(element) | ||
187 | // specific types are referred as: | ||
188 | // > BooleanElement(variableName) | ||
189 | // > IntegerElement(variableName) | ||
190 | // > RealElement(variableName) | ||
191 | // > StringElement(variableName) | ||
192 | // And their value as | ||
193 | // > BooleanElement.value(variableName,value) | ||
194 | // > IntegerElement.value(variableName,value) | ||
195 | // > RealElement.value(variableName,value) | ||
196 | // > StringElement.value(variableName,value) | ||
197 | // Whether a value is set is defined by: | ||
198 | // > PrimitiveElement.valueSet(variableName,isFilled); | ||
199 | ////////// | ||
200 | // 1.1.3 domain-specific Type Indexers | ||
201 | ////////// | ||
202 | /** | ||
203 | * An element must be an instance of type "FamilyTree class". | ||
204 | */ | ||
205 | private pattern mustInstanceOfFamilyTree_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
206 | Type.name(type,"FamilyTree class"); | ||
207 | find directInstanceOf(problem,interpretation,element,type); | ||
208 | } | ||
209 | private pattern scopeDisallowsNewFamilyTree_class(problem:LogicProblem, interpretation:PartialInterpretation) { | ||
210 | find interpretation(problem,interpretation); | ||
211 | PartialInterpretation.scopes(interpretation,scope); | ||
212 | Scope.targetTypeInterpretation(scope,typeInterpretation); | ||
213 | Scope.maxNewElements(scope,0); | ||
214 | PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); | ||
215 | Type.name(type,"FamilyTree class"); | ||
216 | } | ||
217 | |||
218 | /** | ||
219 | * An element may be an instance of type "FamilyTree class". | ||
220 | */ | ||
221 | private pattern mayInstanceOfFamilyTree_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) | ||
222 | { | ||
223 | find interpretation(problem,interpretation); | ||
224 | PartialInterpretation.newElements(interpretation,element); | ||
225 | neg find mustInstanceOfMember_class(problem,interpretation,element); | ||
226 | neg find scopeDisallowsNewFamilyTree_class(problem, interpretation); | ||
227 | neg find isPrimitive(element); | ||
228 | } or { | ||
229 | find interpretation(problem,interpretation); | ||
230 | PartialInterpretation.openWorldElements(interpretation,element); | ||
231 | neg find mustInstanceOfMember_class(problem,interpretation,element); | ||
232 | neg find scopeDisallowsNewFamilyTree_class(problem, interpretation); | ||
233 | neg find isPrimitive(element); | ||
234 | } or | ||
235 | { find mustInstanceOfFamilyTree_class(problem,interpretation,element); } | ||
236 | /** | ||
237 | * An element must be an instance of type "Member class". | ||
238 | */ | ||
239 | private pattern mustInstanceOfMember_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
240 | Type.name(type,"Member class"); | ||
241 | find directInstanceOf(problem,interpretation,element,type); | ||
242 | } | ||
243 | private pattern scopeDisallowsNewMember_class(problem:LogicProblem, interpretation:PartialInterpretation) { | ||
244 | find interpretation(problem,interpretation); | ||
245 | PartialInterpretation.scopes(interpretation,scope); | ||
246 | Scope.targetTypeInterpretation(scope,typeInterpretation); | ||
247 | Scope.maxNewElements(scope,0); | ||
248 | PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); | ||
249 | Type.name(type,"Member class"); | ||
250 | } | ||
251 | |||
252 | /** | ||
253 | * An element may be an instance of type "Member class". | ||
254 | */ | ||
255 | private pattern mayInstanceOfMember_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) | ||
256 | { | ||
257 | find interpretation(problem,interpretation); | ||
258 | PartialInterpretation.newElements(interpretation,element); | ||
259 | neg find mustInstanceOfFamilyTree_class(problem,interpretation,element); | ||
260 | neg find scopeDisallowsNewMember_class(problem, interpretation); | ||
261 | neg find isPrimitive(element); | ||
262 | } or { | ||
263 | find interpretation(problem,interpretation); | ||
264 | PartialInterpretation.openWorldElements(interpretation,element); | ||
265 | neg find mustInstanceOfFamilyTree_class(problem,interpretation,element); | ||
266 | neg find scopeDisallowsNewMember_class(problem, interpretation); | ||
267 | neg find isPrimitive(element); | ||
268 | } or | ||
269 | { find mustInstanceOfMember_class(problem,interpretation,element); } | ||
270 | |||
271 | ////////// | ||
272 | // 1.2 Relation Declaration Indexers | ||
273 | ////////// | ||
274 | /** | ||
275 | * Matcher for detecting tuples t where []members reference FamilyTree(source,target) | ||
276 | */ | ||
277 | private pattern mustInRelationmembers_reference_FamilyTree( | ||
278 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
279 | source: DefinedElement, target:DefinedElement) | ||
280 | { | ||
281 | find interpretation(problem,interpretation); | ||
282 | PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); | ||
283 | PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"members reference FamilyTree"); | ||
284 | PartialRelationInterpretation.relationlinks(relationIterpretation,link); | ||
285 | BinaryElementRelationLink.param1(link,source); | ||
286 | BinaryElementRelationLink.param2(link,target); | ||
287 | } | ||
288 | /** | ||
289 | * Matcher for detecting tuples t where <>members reference FamilyTree(source,target) | ||
290 | */ | ||
291 | private pattern mayInRelationmembers_reference_FamilyTree( | ||
292 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
293 | source: DefinedElement, target:DefinedElement) | ||
294 | { | ||
295 | find interpretation(problem,interpretation); | ||
296 | // The two endpoint of the link have to exist | ||
297 | find mayExist(problem, interpretation, source); | ||
298 | find mayExist(problem, interpretation, target); | ||
299 | // Type consistency | ||
300 | find mayInstanceOfFamilyTree_class(problem,interpretation,source); | ||
301 | find mayInstanceOfMember_class(problem,interpretation,target); | ||
302 | // The reference is containment, then a new reference cannot be create if: | ||
303 | // 1. Multiple parents | ||
304 | neg find mustContains4(problem,interpretation,_,target); | ||
305 | // 2. Circle in the containment hierarchy | ||
306 | neg find mustTransitiveContains(source,target); | ||
307 | } or { | ||
308 | find mustInRelationmembers_reference_FamilyTree(problem,interpretation,source,target); | ||
309 | } | ||
310 | /** | ||
311 | * Matcher for detecting tuples t where []children reference Member(source,target) | ||
312 | */ | ||
313 | private pattern mustInRelationchildren_reference_Member( | ||
314 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
315 | source: DefinedElement, target:DefinedElement) | ||
316 | { | ||
317 | find interpretation(problem,interpretation); | ||
318 | PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); | ||
319 | PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"children reference Member"); | ||
320 | PartialRelationInterpretation.relationlinks(relationIterpretation,link); | ||
321 | BinaryElementRelationLink.param1(link,source); | ||
322 | BinaryElementRelationLink.param2(link,target); | ||
323 | } | ||
324 | /** | ||
325 | * Matcher for detecting tuples t where <>children reference Member(source,target) | ||
326 | */ | ||
327 | private pattern mayInRelationchildren_reference_Member( | ||
328 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
329 | source: DefinedElement, target:DefinedElement) | ||
330 | { | ||
331 | find interpretation(problem,interpretation); | ||
332 | // The two endpoint of the link have to exist | ||
333 | find mayExist(problem, interpretation, source); | ||
334 | find mayExist(problem, interpretation, target); | ||
335 | // Type consistency | ||
336 | find mayInstanceOfMember_class(problem,interpretation,source); | ||
337 | find mayInstanceOfMember_class(problem,interpretation,target); | ||
338 | // There are "numberOfExistingReferences" currently existing instances of the reference to the target, | ||
339 | // the upper bound of the opposite reference multiplicity should be considered. | ||
340 | numberOfExistingOppositeReferences == count find mustInRelationparents_reference_Member(problem,interpretation,target,_); | ||
341 | check(numberOfExistingOppositeReferences < 2); | ||
342 | } or { | ||
343 | find mustInRelationchildren_reference_Member(problem,interpretation,source,target); | ||
344 | } | ||
345 | /** | ||
346 | * Matcher for detecting tuples t where []parents reference Member(source,target) | ||
347 | */ | ||
348 | private pattern mustInRelationparents_reference_Member( | ||
349 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
350 | source: DefinedElement, target:DefinedElement) | ||
351 | { | ||
352 | find interpretation(problem,interpretation); | ||
353 | PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); | ||
354 | PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parents reference Member"); | ||
355 | PartialRelationInterpretation.relationlinks(relationIterpretation,link); | ||
356 | BinaryElementRelationLink.param1(link,source); | ||
357 | BinaryElementRelationLink.param2(link,target); | ||
358 | } | ||
359 | /** | ||
360 | * Matcher for detecting tuples t where <>parents reference Member(source,target) | ||
361 | */ | ||
362 | private pattern mayInRelationparents_reference_Member( | ||
363 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
364 | source: DefinedElement, target:DefinedElement) | ||
365 | { | ||
366 | find interpretation(problem,interpretation); | ||
367 | // The two endpoint of the link have to exist | ||
368 | find mayExist(problem, interpretation, source); | ||
369 | find mayExist(problem, interpretation, target); | ||
370 | // Type consistency | ||
371 | find mayInstanceOfMember_class(problem,interpretation,source); | ||
372 | find mayInstanceOfMember_class(problem,interpretation,target); | ||
373 | // There are "numberOfExistingReferences" currently existing instances of the reference from the source, | ||
374 | // the upper bound of the multiplicity should be considered. | ||
375 | numberOfExistingReferences == count find mustInRelationparents_reference_Member(problem,interpretation,source,_); | ||
376 | check(numberOfExistingReferences < 2); | ||
377 | } or { | ||
378 | find mustInRelationparents_reference_Member(problem,interpretation,source,target); | ||
379 | } | ||
380 | /** | ||
381 | * Matcher for detecting tuples t where []name attribute Member(source,target) | ||
382 | */ | ||
383 | private pattern mustInRelationname_attribute_Member( | ||
384 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
385 | source: DefinedElement, target:DefinedElement) | ||
386 | { | ||
387 | find interpretation(problem,interpretation); | ||
388 | PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); | ||
389 | PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute Member"); | ||
390 | PartialRelationInterpretation.relationlinks(relationIterpretation,link); | ||
391 | BinaryElementRelationLink.param1(link,source); | ||
392 | BinaryElementRelationLink.param2(link,target); | ||
393 | } | ||
394 | /** | ||
395 | * Matcher for detecting tuples t where <>name attribute Member(source,target) | ||
396 | */ | ||
397 | private pattern mayInRelationname_attribute_Member( | ||
398 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
399 | source: DefinedElement, target:DefinedElement) | ||
400 | { | ||
401 | find interpretation(problem,interpretation); | ||
402 | // The two endpoint of the link have to exist | ||
403 | find mayExist(problem, interpretation, source); | ||
404 | find mayExist(problem, interpretation, target); | ||
405 | // Type consistency | ||
406 | find mayInstanceOfMember_class(problem,interpretation,source); | ||
407 | StringElement(target); | ||
408 | // There are "numberOfExistingReferences" currently existing instances of the reference from the source, | ||
409 | // the upper bound of the multiplicity should be considered. | ||
410 | numberOfExistingReferences == count find mustInRelationname_attribute_Member(problem,interpretation,source,_); | ||
411 | check(numberOfExistingReferences < 1); | ||
412 | } or { | ||
413 | find mustInRelationname_attribute_Member(problem,interpretation,source,target); | ||
414 | } | ||
415 | /** | ||
416 | * Matcher for detecting tuples t where []age attribute Member(source,target) | ||
417 | */ | ||
418 | private pattern mustInRelationage_attribute_Member( | ||
419 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
420 | source: DefinedElement, target:DefinedElement) | ||
421 | { | ||
422 | find interpretation(problem,interpretation); | ||
423 | PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); | ||
424 | PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"age attribute Member"); | ||
425 | PartialRelationInterpretation.relationlinks(relationIterpretation,link); | ||
426 | BinaryElementRelationLink.param1(link,source); | ||
427 | BinaryElementRelationLink.param2(link,target); | ||
428 | } | ||
429 | /** | ||
430 | * Matcher for detecting tuples t where <>age attribute Member(source,target) | ||
431 | */ | ||
432 | private pattern mayInRelationage_attribute_Member( | ||
433 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
434 | source: DefinedElement, target:DefinedElement) | ||
435 | { | ||
436 | find interpretation(problem,interpretation); | ||
437 | // The two endpoint of the link have to exist | ||
438 | find mayExist(problem, interpretation, source); | ||
439 | find mayExist(problem, interpretation, target); | ||
440 | // Type consistency | ||
441 | find mayInstanceOfMember_class(problem,interpretation,source); | ||
442 | IntegerElement(target); | ||
443 | // There are "numberOfExistingReferences" currently existing instances of the reference from the source, | ||
444 | // the upper bound of the multiplicity should be considered. | ||
445 | numberOfExistingReferences == count find mustInRelationage_attribute_Member(problem,interpretation,source,_); | ||
446 | check(numberOfExistingReferences < 1); | ||
447 | } or { | ||
448 | find mustInRelationage_attribute_Member(problem,interpretation,source,target); | ||
449 | } | ||
450 | |||
451 | ////////// | ||
452 | // 1.3 Relation Definition Indexers | ||
453 | ////////// | ||
454 | // Must, May and Current queries for pattern queries memberIsItsOwnParent | ||
455 | private pattern mustInRelation_pattern_queries_memberIsItsOwnParent( | ||
456 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
457 | var_m) | ||
458 | { | ||
459 | find interpretation(problem,interpretation); | ||
460 | find mustInstanceOfMember_class(problem,interpretation,var_m); | ||
461 | // m is exported | ||
462 | find mustInstanceOfFamilyTree_class(problem,interpretation,var__0); | ||
463 | find mustInRelationmembers_reference_FamilyTree(problem,interpretation,var__0,var_virtual0); | ||
464 | find mustInstanceOfMember_class(problem,interpretation,var_virtual0); | ||
465 | find mustEquivalent(problem, interpretation, var_virtual0, var_m); | ||
466 | find mustInstanceOfMember_class(problem,interpretation,var_m); | ||
467 | find mustInRelationparents_reference_Member(problem,interpretation,var_m,var_virtual1); | ||
468 | find mustInstanceOfMember_class(problem,interpretation,var_virtual1); | ||
469 | find mustEquivalent(problem, interpretation, var_virtual1, var_p); | ||
470 | find mustEquivalent(problem, interpretation, var_m, var_p); | ||
471 | } | ||
472 | private pattern mayInRelation_pattern_queries_memberIsItsOwnParent( | ||
473 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
474 | var_m) | ||
475 | { | ||
476 | find interpretation(problem,interpretation); | ||
477 | find mayInstanceOfMember_class(problem,interpretation,var_m); | ||
478 | // m is exported | ||
479 | find mayInstanceOfFamilyTree_class(problem,interpretation,var__0); | ||
480 | find mayInRelationmembers_reference_FamilyTree(problem,interpretation,var__0,var_virtual0); | ||
481 | find mayInstanceOfMember_class(problem,interpretation,var_virtual0); | ||
482 | find mayEquivalent(problem, interpretation, var_virtual0, var_m); | ||
483 | find mayInstanceOfMember_class(problem,interpretation,var_m); | ||
484 | find mayInRelationparents_reference_Member(problem,interpretation,var_m,var_virtual1); | ||
485 | find mayInstanceOfMember_class(problem,interpretation,var_virtual1); | ||
486 | find mayEquivalent(problem, interpretation, var_virtual1, var_p); | ||
487 | find mayEquivalent(problem, interpretation, var_m, var_p); | ||
488 | } | ||
489 | private pattern currentInRelation_pattern_queries_memberIsItsOwnParent( | ||
490 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
491 | var_m) | ||
492 | { | ||
493 | find interpretation(problem,interpretation); | ||
494 | find mustInstanceOfMember_class(problem,interpretation,var_m); | ||
495 | // m is exported | ||
496 | find mustInstanceOfFamilyTree_class(problem,interpretation,var__0); | ||
497 | find mustInRelationmembers_reference_FamilyTree(problem,interpretation,var__0,var_virtual0); | ||
498 | find mustInstanceOfMember_class(problem,interpretation,var_virtual0); | ||
499 | find mustEquivalent(problem, interpretation, var_virtual0, var_m); | ||
500 | find mustInstanceOfMember_class(problem,interpretation,var_m); | ||
501 | find mustInRelationparents_reference_Member(problem,interpretation,var_m,var_virtual1); | ||
502 | find mustInstanceOfMember_class(problem,interpretation,var_virtual1); | ||
503 | find mustEquivalent(problem, interpretation, var_virtual1, var_p); | ||
504 | find mustEquivalent(problem, interpretation, var_m, var_p); | ||
505 | } | ||
506 | |||
507 | ////////// | ||
508 | // 1.4 Containment Indexer | ||
509 | ////////// | ||
510 | private pattern mustContains2(source: DefinedElement, target: DefinedElement) { | ||
511 | find mustContains4(_,_,source,target); | ||
512 | } | ||
513 | |||
514 | private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, | ||
515 | source: DefinedElement, target: DefinedElement) | ||
516 | { find mustInRelationmembers_reference_FamilyTree(problem,interpretation,source,target); } | ||
517 | |||
518 | private pattern mustTransitiveContains(source,target) { | ||
519 | find mustContains2+(source,target); | ||
520 | } | ||
521 | |||
522 | ////////// | ||
523 | // 2. Invalidation Indexers | ||
524 | ////////// | ||
525 | // 2.1 Invalidated by WF Queries | ||
526 | ////////// | ||
527 | pattern invalidatedBy_pattern_queries_memberIsItsOwnParent(problem:LogicProblem, interpretation:PartialInterpretation, | ||
528 | var_m) | ||
529 | { | ||
530 | find mustInRelation_pattern_queries_memberIsItsOwnParent(problem,interpretation,var_m); | ||
531 | } | ||
532 | |||
533 | ////////// | ||
534 | // 3. Unfinishedness Indexers | ||
535 | ////////// | ||
536 | // 3.1 Unfinishedness Measured by Multiplicity | ||
537 | ////////// | ||
538 | |||
539 | ////////// | ||
540 | // 3.2 Unfinishedness Measured by WF Queries | ||
541 | ////////// | ||
542 | pattern unfinishedBy_pattern_queries_memberIsItsOwnParent(problem:LogicProblem, interpretation:PartialInterpretation, | ||
543 | var_m) | ||
544 | { | ||
545 | find currentInRelation_pattern_queries_memberIsItsOwnParent(problem,interpretation,var_m); | ||
546 | } | ||
547 | |||
548 | ////////// | ||
549 | // 4. Refinement Indexers | ||
550 | ////////// | ||
551 | // 4.1 Object constructors | ||
552 | ////////// | ||
553 | private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) | ||
554 | { | ||
555 | find interpretation(problem,interpretation); | ||
556 | find mustInstanceOfFamilyTree_class(problem,interpretation,root); | ||
557 | find mustExist(problem, interpretation, root); | ||
558 | }or{ | ||
559 | find interpretation(problem,interpretation); | ||
560 | find mustInstanceOfMember_class(problem,interpretation,root); | ||
561 | find mustExist(problem, interpretation, root); | ||
562 | } | ||
563 | pattern createObject_FamilyTree_class( | ||
564 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
565 | typeInterpretation:PartialComplexTypeInterpretation) | ||
566 | { | ||
567 | find interpretation(problem,interpretation); | ||
568 | neg find hasElementInContainment(problem,interpretation); | ||
569 | PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); | ||
570 | PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FamilyTree class"); | ||
571 | find mayInstanceOfFamilyTree_class(problem,interpretation,newObject); | ||
572 | find mayExist(problem, interpretation, newObject); | ||
573 | neg find mustExist(problem, interpretation, newObject); | ||
574 | } | ||
575 | pattern createObject_Member_class_by_members_reference_FamilyTree( | ||
576 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
577 | relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, | ||
578 | container:DefinedElement) | ||
579 | { | ||
580 | find interpretation(problem,interpretation); | ||
581 | PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); | ||
582 | PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Member class"); | ||
583 | PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); | ||
584 | PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"members reference FamilyTree"); | ||
585 | find mustInstanceOfFamilyTree_class(problem,interpretation,container); | ||
586 | find mayInstanceOfMember_class(problem,interpretation,newObject); | ||
587 | find mayInRelationmembers_reference_FamilyTree(problem,interpretation,container,newObject); | ||
588 | find mustExist(problem, interpretation, container); | ||
589 | neg find mustExist(problem, interpretation, newObject); | ||
590 | } | ||
591 | pattern createObject_Member_class( | ||
592 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
593 | typeInterpretation:PartialComplexTypeInterpretation) | ||
594 | { | ||
595 | find interpretation(problem,interpretation); | ||
596 | neg find hasElementInContainment(problem,interpretation); | ||
597 | PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); | ||
598 | PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Member class"); | ||
599 | find mayInstanceOfMember_class(problem,interpretation,newObject); | ||
600 | find mayExist(problem, interpretation, newObject); | ||
601 | neg find mustExist(problem, interpretation, newObject); | ||
602 | } | ||
603 | |||
604 | ////////// | ||
605 | // 4.2 Type refinement | ||
606 | ////////// | ||
607 | pattern refineTypeTo_FamilyTree_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { | ||
608 | find interpretation(problem,interpretation); | ||
609 | PartialInterpretation.newElements(interpretation,element); | ||
610 | find mayInstanceOfFamilyTree_class(problem,interpretation,element); | ||
611 | neg find mustInstanceOfFamilyTree_class(problem,interpretation,element); | ||
612 | neg find mustInstanceOfMember_class(problem,interpretation,element); | ||
613 | } | ||
614 | pattern refineTypeTo_Member_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { | ||
615 | find interpretation(problem,interpretation); | ||
616 | PartialInterpretation.newElements(interpretation,element); | ||
617 | find mayInstanceOfMember_class(problem,interpretation,element); | ||
618 | neg find mustInstanceOfFamilyTree_class(problem,interpretation,element); | ||
619 | neg find mustInstanceOfMember_class(problem,interpretation,element); | ||
620 | } | ||
621 | |||
622 | ////////// | ||
623 | // 4.3 Relation refinement | ||
624 | ////////// | ||
625 | pattern refineRelation_children_reference_Member_and_parents_reference_Member( | ||
626 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
627 | relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, | ||
628 | from: DefinedElement, to: DefinedElement) | ||
629 | { | ||
630 | find interpretation(problem,interpretation); | ||
631 | PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); | ||
632 | PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"children reference Member"); | ||
633 | PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); | ||
634 | PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"parents reference Member"); | ||
635 | find mustExist(problem, interpretation, from); | ||
636 | find mustExist(problem, interpretation, to); | ||
637 | find mustInstanceOfMember_class(problem,interpretation,from); | ||
638 | find mustInstanceOfMember_class(problem,interpretation,to); | ||
639 | find mayInRelationchildren_reference_Member(problem,interpretation,from,to); | ||
640 | neg find mustInRelationchildren_reference_Member(problem,interpretation,from,to); | ||
641 | } | ||
642 | pattern refineRelation_name_attribute_Member( | ||
643 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
644 | relationIterpretation:PartialRelationInterpretation, | ||
645 | from: DefinedElement, to: DefinedElement) | ||
646 | { | ||
647 | find interpretation(problem,interpretation); | ||
648 | PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); | ||
649 | PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute Member"); | ||
650 | find mustExist(problem, interpretation, from); | ||
651 | find mustExist(problem, interpretation, to); | ||
652 | find mustInstanceOfMember_class(problem,interpretation,from); | ||
653 | StringElement(to); | ||
654 | find mayInRelationname_attribute_Member(problem,interpretation,from,to); | ||
655 | neg find mustInRelationname_attribute_Member(problem,interpretation,from,to); | ||
656 | } | ||
657 | pattern refineRelation_age_attribute_Member( | ||
658 | problem:LogicProblem, interpretation:PartialInterpretation, | ||
659 | relationIterpretation:PartialRelationInterpretation, | ||
660 | from: DefinedElement, to: DefinedElement) | ||
661 | { | ||
662 | find interpretation(problem,interpretation); | ||
663 | PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); | ||
664 | PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"age attribute Member"); | ||
665 | find mustExist(problem, interpretation, from); | ||
666 | find mustExist(problem, interpretation, to); | ||
667 | find mustInstanceOfMember_class(problem,interpretation,from); | ||
668 | IntegerElement(to); | ||
669 | find mayInRelationage_attribute_Member(problem,interpretation,from,to); | ||
670 | neg find mustInRelationage_attribute_Member(problem,interpretation,from,to); | ||
671 | } | ||
672 | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generation.logicproblem b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generation.logicproblem new file mode 100644 index 00000000..dd3b15b1 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generation.logicproblem | |||
@@ -0,0 +1,190 @@ | |||
1 | <?xml version="1.0" encoding="ASCII"?> | ||
2 | <language:LogicProblem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/ecore2logicannotation" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" xmlns:language_1="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:viatra2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/viatra2logicannotation"> | ||
3 | <types xsi:type="language_1:TypeDeclaration" name="FamilyTree class"/> | ||
4 | <types xsi:type="language_1:TypeDeclaration" name="Member class"/> | ||
5 | <assertions name="upperMultiplicity parents Member" annotations="//@annotations.0"> | ||
6 | <value xsi:type="language_1:Forall"> | ||
7 | <quantifiedVariables name="src"> | ||
8 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
9 | </quantifiedVariables> | ||
10 | <quantifiedVariables name="trg 1"> | ||
11 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
12 | </quantifiedVariables> | ||
13 | <quantifiedVariables name="trg 2"> | ||
14 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
15 | </quantifiedVariables> | ||
16 | <quantifiedVariables name="trg 3"> | ||
17 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
18 | </quantifiedVariables> | ||
19 | <expression xsi:type="language_1:Impl"> | ||
20 | <leftOperand xsi:type="language_1:And"> | ||
21 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2"> | ||
22 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.0"/> | ||
23 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.1"/> | ||
24 | </operands> | ||
25 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2"> | ||
26 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.0"/> | ||
27 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.2"/> | ||
28 | </operands> | ||
29 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2"> | ||
30 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.0"/> | ||
31 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.3"/> | ||
32 | </operands> | ||
33 | </leftOperand> | ||
34 | <rightOperand xsi:type="language_1:Not"> | ||
35 | <operand xsi:type="language_1:Distinct"> | ||
36 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.1"/> | ||
37 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.2"/> | ||
38 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.3"/> | ||
39 | </operand> | ||
40 | </rightOperand> | ||
41 | </expression> | ||
42 | </value> | ||
43 | </assertions> | ||
44 | <assertions name="oppositeReference children Member" annotations="//@annotations.1"> | ||
45 | <value xsi:type="language_1:Forall"> | ||
46 | <quantifiedVariables name="src"> | ||
47 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
48 | </quantifiedVariables> | ||
49 | <quantifiedVariables name="trg"> | ||
50 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
51 | </quantifiedVariables> | ||
52 | <expression xsi:type="language_1:Iff"> | ||
53 | <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1"> | ||
54 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/> | ||
55 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/> | ||
56 | </leftOperand> | ||
57 | <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2"> | ||
58 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/> | ||
59 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/> | ||
60 | </rightOperand> | ||
61 | </expression> | ||
62 | </value> | ||
63 | </assertions> | ||
64 | <assertions name="upperMultiplicity name Member" annotations="//@annotations.2"> | ||
65 | <value xsi:type="language_1:Forall"> | ||
66 | <quantifiedVariables name="src"> | ||
67 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
68 | </quantifiedVariables> | ||
69 | <quantifiedVariables name="trg 1"> | ||
70 | <range xsi:type="language_1:StringTypeReference"/> | ||
71 | </quantifiedVariables> | ||
72 | <quantifiedVariables name="trg 2"> | ||
73 | <range xsi:type="language_1:StringTypeReference"/> | ||
74 | </quantifiedVariables> | ||
75 | <expression xsi:type="language_1:Impl"> | ||
76 | <leftOperand xsi:type="language_1:And"> | ||
77 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3"> | ||
78 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/> | ||
79 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.1"/> | ||
80 | </operands> | ||
81 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3"> | ||
82 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/> | ||
83 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.2"/> | ||
84 | </operands> | ||
85 | </leftOperand> | ||
86 | <rightOperand xsi:type="language_1:Not"> | ||
87 | <operand xsi:type="language_1:Distinct"> | ||
88 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.1"/> | ||
89 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.2"/> | ||
90 | </operand> | ||
91 | </rightOperand> | ||
92 | </expression> | ||
93 | </value> | ||
94 | </assertions> | ||
95 | <assertions name="upperMultiplicity age Member" annotations="//@annotations.3"> | ||
96 | <value xsi:type="language_1:Forall"> | ||
97 | <quantifiedVariables name="src"> | ||
98 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
99 | </quantifiedVariables> | ||
100 | <quantifiedVariables name="trg 1"> | ||
101 | <range xsi:type="language_1:IntTypeReference"/> | ||
102 | </quantifiedVariables> | ||
103 | <quantifiedVariables name="trg 2"> | ||
104 | <range xsi:type="language_1:IntTypeReference"/> | ||
105 | </quantifiedVariables> | ||
106 | <expression xsi:type="language_1:Impl"> | ||
107 | <leftOperand xsi:type="language_1:And"> | ||
108 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4"> | ||
109 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/> | ||
110 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/> | ||
111 | </operands> | ||
112 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4"> | ||
113 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/> | ||
114 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.2"/> | ||
115 | </operands> | ||
116 | </leftOperand> | ||
117 | <rightOperand xsi:type="language_1:Not"> | ||
118 | <operand xsi:type="language_1:Distinct"> | ||
119 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/> | ||
120 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.2"/> | ||
121 | </operand> | ||
122 | </rightOperand> | ||
123 | </expression> | ||
124 | </value> | ||
125 | </assertions> | ||
126 | <assertions name="errorpattern queries memberIsItsOwnParent" annotations="//@annotations.5"> | ||
127 | <value xsi:type="language_1:Forall"> | ||
128 | <quantifiedVariables name="p0"> | ||
129 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
130 | </quantifiedVariables> | ||
131 | <expression xsi:type="language_1:Not"> | ||
132 | <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5"> | ||
133 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.0"/> | ||
134 | </operand> | ||
135 | </expression> | ||
136 | </value> | ||
137 | </assertions> | ||
138 | <relations xsi:type="language_1:RelationDeclaration" name="members reference FamilyTree"> | ||
139 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/> | ||
140 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
141 | </relations> | ||
142 | <relations xsi:type="language_1:RelationDeclaration" name="children reference Member"> | ||
143 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
144 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
145 | </relations> | ||
146 | <relations xsi:type="language_1:RelationDeclaration" name="parents reference Member"> | ||
147 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
148 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
149 | </relations> | ||
150 | <relations xsi:type="language_1:RelationDeclaration" name="name attribute Member"> | ||
151 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
152 | <parameters xsi:type="language_1:StringTypeReference"/> | ||
153 | </relations> | ||
154 | <relations xsi:type="language_1:RelationDeclaration" name="age attribute Member"> | ||
155 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
156 | <parameters xsi:type="language_1:IntTypeReference"/> | ||
157 | </relations> | ||
158 | <relations xsi:type="language_1:RelationDefinition" name="pattern queries memberIsItsOwnParent" annotations="//@annotations.4"> | ||
159 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
160 | <variables name="parameter m"> | ||
161 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/> | ||
162 | </variables> | ||
163 | <value xsi:type="language_1:Or"> | ||
164 | <operands xsi:type="language_1:Exists"> | ||
165 | <quantifiedVariables name="variable 0"> | ||
166 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/> | ||
167 | </quantifiedVariables> | ||
168 | <expression xsi:type="language_1:And"> | ||
169 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0"> | ||
170 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5/@value/@operands.0/@quantifiedVariables.0"/> | ||
171 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5/@variables.0"/> | ||
172 | </operands> | ||
173 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2"> | ||
174 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5/@variables.0"/> | ||
175 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5/@variables.0"/> | ||
176 | </operands> | ||
177 | </expression> | ||
178 | </operands> | ||
179 | </value> | ||
180 | </relations> | ||
181 | <containmentHierarchies typesOrderedInHierarchy="//@types.0 //@types.1" containmentRelations="//@relations.0"/> | ||
182 | <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.0" relation="//@relations.2" upper="2"/> | ||
183 | <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.1" inverseA="//@relations.1" inverseB="//@relations.2"/> | ||
184 | <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.3" upper="1"/> | ||
185 | <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.3" relation="//@relations.4" upper="1"/> | ||
186 | <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.5" patternFullyQualifiedName="queries.memberIsItsOwnParent"> | ||
187 | <variableTrace targetLogicVariable="//@relations.5/@value/@operands.0/@quantifiedVariables.0"/> | ||
188 | </annotations> | ||
189 | <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.4" query="//@annotations.4"/> | ||
190 | </language:LogicProblem> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/init.partialmodel b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/init.partialmodel new file mode 100644 index 00000000..949d6b64 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/init.partialmodel | |||
@@ -0,0 +1,51 @@ | |||
1 | <?xml version="1.0" encoding="ASCII"?> | ||
2 | <partialinterpretation:PartialInterpretation xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:partialinterpretation="http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" minNewElements="6" maxNewElements="6"> | ||
3 | <problem href="outputs/debug/generation.logicproblem#/"/> | ||
4 | <partialrelationinterpretation> | ||
5 | <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.0"/> | ||
6 | <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.0/@parameters.0"/> | ||
7 | <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.0/@parameters.1"/> | ||
8 | </partialrelationinterpretation> | ||
9 | <partialrelationinterpretation> | ||
10 | <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.1"/> | ||
11 | <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.1/@parameters.0"/> | ||
12 | <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.1/@parameters.1"/> | ||
13 | </partialrelationinterpretation> | ||
14 | <partialrelationinterpretation> | ||
15 | <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.2"/> | ||
16 | <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.2/@parameters.0"/> | ||
17 | <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.2/@parameters.1"/> | ||
18 | </partialrelationinterpretation> | ||
19 | <partialrelationinterpretation> | ||
20 | <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.3"/> | ||
21 | <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.3/@parameters.0"/> | ||
22 | <param2 xsi:type="language:StringTypeReference" href="outputs/debug/generation.logicproblem#//@relations.3/@parameters.1"/> | ||
23 | </partialrelationinterpretation> | ||
24 | <partialrelationinterpretation> | ||
25 | <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.4"/> | ||
26 | <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.4/@parameters.0"/> | ||
27 | <param2 xsi:type="language:IntTypeReference" href="outputs/debug/generation.logicproblem#//@relations.4/@parameters.1"/> | ||
28 | </partialrelationinterpretation> | ||
29 | <newElements xsi:type="partialinterpretation:BooleanElement" name="true" valueSet="true" value="true"/> | ||
30 | <newElements xsi:type="partialinterpretation:BooleanElement" name="false" valueSet="true"/> | ||
31 | <newElements xsi:type="partialinterpretation:IntegerElement" name="1" valueSet="true" value="1"/> | ||
32 | <newElements xsi:type="partialinterpretation:IntegerElement" name="2" valueSet="true" value="2"/> | ||
33 | <newElements xsi:type="partialinterpretation:IntegerElement" name="3" valueSet="true" value="3"/> | ||
34 | <newElements xsi:type="partialinterpretation:IntegerElement" name="4" valueSet="true" value="4"/> | ||
35 | <newElements xsi:type="partialinterpretation:IntegerElement" name="5" valueSet="true" value="5"/> | ||
36 | <partialtypeinterpratation xsi:type="partialinterpretation:PartialBooleanInterpretation" elements="//@newElements.0 //@newElements.1"/> | ||
37 | <partialtypeinterpratation xsi:type="partialinterpretation:PartialIntegerInterpretation" elements="//@newElements.2 //@newElements.3 //@newElements.4 //@newElements.5 //@newElements.6"/> | ||
38 | <partialtypeinterpratation xsi:type="partialinterpretation:PartialRealInterpretation" elements="//@openWorldElements.0"/> | ||
39 | <partialtypeinterpratation xsi:type="partialinterpretation:PartialStringInterpretation" elements="//@openWorldElements.1"/> | ||
40 | <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.0"> | ||
41 | <interpretationOf href="outputs/debug/generation.logicproblem#//@types.0"/> | ||
42 | </partialtypeinterpratation> | ||
43 | <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.1"> | ||
44 | <interpretationOf href="outputs/debug/generation.logicproblem#//@types.1"/> | ||
45 | </partialtypeinterpratation> | ||
46 | <openWorldElements xsi:type="partialinterpretation:RealElement" name="New Reals"/> | ||
47 | <openWorldElements xsi:type="partialinterpretation:StringElement" name="New Strings"/> | ||
48 | <openWorldElements name="New Objects"/> | ||
49 | <scopes targetTypeInterpretation="//@partialtypeinterpratation.4"/> | ||
50 | <scopes targetTypeInterpretation="//@partialtypeinterpratation.5"/> | ||
51 | </partialinterpretation:PartialInterpretation> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/log.txt b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/log.txt new file mode 100644 index 00000000..6186ec60 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/log.txt | |||
@@ -0,0 +1 @@ | |||
Model generation finished | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.gml b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.gml new file mode 100644 index 00000000..0182add9 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.gml | |||
@@ -0,0 +1,1011 @@ | |||
1 | graph | ||
2 | [ | ||
3 | node | ||
4 | [ | ||
5 | id 0 | ||
6 | graphics | ||
7 | [ | ||
8 | w 41.800000000000004 | ||
9 | h 26 | ||
10 | type "rectangle" | ||
11 | fill "#FFFFFF" | ||
12 | fill2 "#FFFFFF" | ||
13 | outline "#000000" | ||
14 | ] | ||
15 | LabelGraphics | ||
16 | [ | ||
17 | text "true" | ||
18 | outline "#000000" | ||
19 | fill "#FFFFFF" | ||
20 | fontSize 16 | ||
21 | fontName "Monospace" | ||
22 | autoSizePolicy "node_width" | ||
23 | anchor "t" | ||
24 | borderDistance 0.0 | ||
25 | ] | ||
26 | LabelGraphics | ||
27 | [ | ||
28 | text " | ||
29 | " | ||
30 | fontSize 14 | ||
31 | fontName "Consolas" | ||
32 | alignment "left" | ||
33 | anchor "tl" | ||
34 | borderDistance 6 | ||
35 | ] | ||
36 | ] | ||
37 | |||
38 | node | ||
39 | [ | ||
40 | id 1 | ||
41 | graphics | ||
42 | [ | ||
43 | w 50.6 | ||
44 | h 26 | ||
45 | type "rectangle" | ||
46 | fill "#FFFFFF" | ||
47 | fill2 "#FFFFFF" | ||
48 | outline "#000000" | ||
49 | ] | ||
50 | LabelGraphics | ||
51 | [ | ||
52 | text "false" | ||
53 | outline "#000000" | ||
54 | fill "#FFFFFF" | ||
55 | fontSize 16 | ||
56 | fontName "Monospace" | ||
57 | autoSizePolicy "node_width" | ||
58 | anchor "t" | ||
59 | borderDistance 0.0 | ||
60 | ] | ||
61 | LabelGraphics | ||
62 | [ | ||
63 | text " | ||
64 | " | ||
65 | fontSize 14 | ||
66 | fontName "Consolas" | ||
67 | alignment "left" | ||
68 | anchor "tl" | ||
69 | borderDistance 6 | ||
70 | ] | ||
71 | ] | ||
72 | |||
73 | node | ||
74 | [ | ||
75 | id 2 | ||
76 | graphics | ||
77 | [ | ||
78 | w 15.400000000000002 | ||
79 | h 26 | ||
80 | type "rectangle" | ||
81 | fill "#FFFFFF" | ||
82 | fill2 "#FFFFFF" | ||
83 | outline "#000000" | ||
84 | ] | ||
85 | LabelGraphics | ||
86 | [ | ||
87 | text "1" | ||
88 | outline "#000000" | ||
89 | fill "#FFFFFF" | ||
90 | fontSize 16 | ||
91 | fontName "Monospace" | ||
92 | autoSizePolicy "node_width" | ||
93 | anchor "t" | ||
94 | borderDistance 0.0 | ||
95 | ] | ||
96 | LabelGraphics | ||
97 | [ | ||
98 | text " | ||
99 | " | ||
100 | fontSize 14 | ||
101 | fontName "Consolas" | ||
102 | alignment "left" | ||
103 | anchor "tl" | ||
104 | borderDistance 6 | ||
105 | ] | ||
106 | ] | ||
107 | |||
108 | node | ||
109 | [ | ||
110 | id 3 | ||
111 | graphics | ||
112 | [ | ||
113 | w 15.400000000000002 | ||
114 | h 26 | ||
115 | type "rectangle" | ||
116 | fill "#FFFFFF" | ||
117 | fill2 "#FFFFFF" | ||
118 | outline "#000000" | ||
119 | ] | ||
120 | LabelGraphics | ||
121 | [ | ||
122 | text "2" | ||
123 | outline "#000000" | ||
124 | fill "#FFFFFF" | ||
125 | fontSize 16 | ||
126 | fontName "Monospace" | ||
127 | autoSizePolicy "node_width" | ||
128 | anchor "t" | ||
129 | borderDistance 0.0 | ||
130 | ] | ||
131 | LabelGraphics | ||
132 | [ | ||
133 | text " | ||
134 | " | ||
135 | fontSize 14 | ||
136 | fontName "Consolas" | ||
137 | alignment "left" | ||
138 | anchor "tl" | ||
139 | borderDistance 6 | ||
140 | ] | ||
141 | ] | ||
142 | |||
143 | node | ||
144 | [ | ||
145 | id 4 | ||
146 | graphics | ||
147 | [ | ||
148 | w 15.400000000000002 | ||
149 | h 26 | ||
150 | type "rectangle" | ||
151 | fill "#FFFFFF" | ||
152 | fill2 "#FFFFFF" | ||
153 | outline "#000000" | ||
154 | ] | ||
155 | LabelGraphics | ||
156 | [ | ||
157 | text "3" | ||
158 | outline "#000000" | ||
159 | fill "#FFFFFF" | ||
160 | fontSize 16 | ||
161 | fontName "Monospace" | ||
162 | autoSizePolicy "node_width" | ||
163 | anchor "t" | ||
164 | borderDistance 0.0 | ||
165 | ] | ||
166 | LabelGraphics | ||
167 | [ | ||
168 | text " | ||
169 | " | ||
170 | fontSize 14 | ||
171 | fontName "Consolas" | ||
172 | alignment "left" | ||
173 | anchor "tl" | ||
174 | borderDistance 6 | ||
175 | ] | ||
176 | ] | ||
177 | |||
178 | node | ||
179 | [ | ||
180 | id 5 | ||
181 | graphics | ||
182 | [ | ||
183 | w 15.400000000000002 | ||
184 | h 26 | ||
185 | type "rectangle" | ||
186 | fill "#FFFFFF" | ||
187 | fill2 "#FFFFFF" | ||
188 | outline "#000000" | ||
189 | ] | ||
190 | LabelGraphics | ||
191 | [ | ||
192 | text "4" | ||
193 | outline "#000000" | ||
194 | fill "#FFFFFF" | ||
195 | fontSize 16 | ||
196 | fontName "Monospace" | ||
197 | autoSizePolicy "node_width" | ||
198 | anchor "t" | ||
199 | borderDistance 0.0 | ||
200 | ] | ||
201 | LabelGraphics | ||
202 | [ | ||
203 | text " | ||
204 | " | ||
205 | fontSize 14 | ||
206 | fontName "Consolas" | ||
207 | alignment "left" | ||
208 | anchor "tl" | ||
209 | borderDistance 6 | ||
210 | ] | ||
211 | ] | ||
212 | |||
213 | node | ||
214 | [ | ||
215 | id 6 | ||
216 | graphics | ||
217 | [ | ||
218 | w 15.400000000000002 | ||
219 | h 26 | ||
220 | type "rectangle" | ||
221 | fill "#FFFFFF" | ||
222 | fill2 "#FFFFFF" | ||
223 | outline "#000000" | ||
224 | ] | ||
225 | LabelGraphics | ||
226 | [ | ||
227 | text "5" | ||
228 | outline "#000000" | ||
229 | fill "#FFFFFF" | ||
230 | fontSize 16 | ||
231 | fontName "Monospace" | ||
232 | autoSizePolicy "node_width" | ||
233 | anchor "t" | ||
234 | borderDistance 0.0 | ||
235 | ] | ||
236 | LabelGraphics | ||
237 | [ | ||
238 | text " | ||
239 | " | ||
240 | fontSize 14 | ||
241 | fontName "Consolas" | ||
242 | alignment "left" | ||
243 | anchor "tl" | ||
244 | borderDistance 6 | ||
245 | ] | ||
246 | ] | ||
247 | |||
248 | node | ||
249 | [ | ||
250 | id 7 | ||
251 | graphics | ||
252 | [ | ||
253 | w 138.60000000000002 | ||
254 | h 40 | ||
255 | type "rectangle" | ||
256 | fill "#FFFFFF" | ||
257 | fill2 "#FFFFFF" | ||
258 | outline "#000000" | ||
259 | ] | ||
260 | LabelGraphics | ||
261 | [ | ||
262 | text "null" | ||
263 | outline "#000000" | ||
264 | fill "#FFFFFF" | ||
265 | fontSize 16 | ||
266 | fontName "Monospace" | ||
267 | autoSizePolicy "node_width" | ||
268 | anchor "t" | ||
269 | borderDistance 0.0 | ||
270 | ] | ||
271 | LabelGraphics | ||
272 | [ | ||
273 | text " | ||
274 | FamilyTree class | ||
275 | " | ||
276 | fontSize 14 | ||
277 | fontName "Consolas" | ||
278 | alignment "left" | ||
279 | anchor "tl" | ||
280 | borderDistance 6 | ||
281 | ] | ||
282 | ] | ||
283 | |||
284 | node | ||
285 | [ | ||
286 | id 8 | ||
287 | graphics | ||
288 | [ | ||
289 | w 107.80000000000001 | ||
290 | h 40 | ||
291 | type "rectangle" | ||
292 | fill "#FFFFFF" | ||
293 | fill2 "#FFFFFF" | ||
294 | outline "#000000" | ||
295 | ] | ||
296 | LabelGraphics | ||
297 | [ | ||
298 | text "null" | ||
299 | outline "#000000" | ||
300 | fill "#FFFFFF" | ||
301 | fontSize 16 | ||
302 | fontName "Monospace" | ||
303 | autoSizePolicy "node_width" | ||
304 | anchor "t" | ||
305 | borderDistance 0.0 | ||
306 | ] | ||
307 | LabelGraphics | ||
308 | [ | ||
309 | text " | ||
310 | Member class | ||
311 | " | ||
312 | fontSize 14 | ||
313 | fontName "Consolas" | ||
314 | alignment "left" | ||
315 | anchor "tl" | ||
316 | borderDistance 6 | ||
317 | ] | ||
318 | ] | ||
319 | |||
320 | node | ||
321 | [ | ||
322 | id 9 | ||
323 | graphics | ||
324 | [ | ||
325 | w 107.80000000000001 | ||
326 | h 40 | ||
327 | type "rectangle" | ||
328 | fill "#FFFFFF" | ||
329 | fill2 "#FFFFFF" | ||
330 | outline "#000000" | ||
331 | ] | ||
332 | LabelGraphics | ||
333 | [ | ||
334 | text "null" | ||
335 | outline "#000000" | ||
336 | fill "#FFFFFF" | ||
337 | fontSize 16 | ||
338 | fontName "Monospace" | ||
339 | autoSizePolicy "node_width" | ||
340 | anchor "t" | ||
341 | borderDistance 0.0 | ||
342 | ] | ||
343 | LabelGraphics | ||
344 | [ | ||
345 | text " | ||
346 | Member class | ||
347 | " | ||
348 | fontSize 14 | ||
349 | fontName "Consolas" | ||
350 | alignment "left" | ||
351 | anchor "tl" | ||
352 | borderDistance 6 | ||
353 | ] | ||
354 | ] | ||
355 | |||
356 | node | ||
357 | [ | ||
358 | id 10 | ||
359 | graphics | ||
360 | [ | ||
361 | w 107.80000000000001 | ||
362 | h 40 | ||
363 | type "rectangle" | ||
364 | fill "#FFFFFF" | ||
365 | fill2 "#FFFFFF" | ||
366 | outline "#000000" | ||
367 | ] | ||
368 | LabelGraphics | ||
369 | [ | ||
370 | text "null" | ||
371 | outline "#000000" | ||
372 | fill "#FFFFFF" | ||
373 | fontSize 16 | ||
374 | fontName "Monospace" | ||
375 | autoSizePolicy "node_width" | ||
376 | anchor "t" | ||
377 | borderDistance 0.0 | ||
378 | ] | ||
379 | LabelGraphics | ||
380 | [ | ||
381 | text " | ||
382 | Member class | ||
383 | " | ||
384 | fontSize 14 | ||
385 | fontName "Consolas" | ||
386 | alignment "left" | ||
387 | anchor "tl" | ||
388 | borderDistance 6 | ||
389 | ] | ||
390 | ] | ||
391 | |||
392 | node | ||
393 | [ | ||
394 | id 11 | ||
395 | graphics | ||
396 | [ | ||
397 | w 107.80000000000001 | ||
398 | h 40 | ||
399 | type "rectangle" | ||
400 | fill "#FFFFFF" | ||
401 | fill2 "#FFFFFF" | ||
402 | outline "#000000" | ||
403 | ] | ||
404 | LabelGraphics | ||
405 | [ | ||
406 | text "null" | ||
407 | outline "#000000" | ||
408 | fill "#FFFFFF" | ||
409 | fontSize 16 | ||
410 | fontName "Monospace" | ||
411 | autoSizePolicy "node_width" | ||
412 | anchor "t" | ||
413 | borderDistance 0.0 | ||
414 | ] | ||
415 | LabelGraphics | ||
416 | [ | ||
417 | text " | ||
418 | Member class | ||
419 | " | ||
420 | fontSize 14 | ||
421 | fontName "Consolas" | ||
422 | alignment "left" | ||
423 | anchor "tl" | ||
424 | borderDistance 6 | ||
425 | ] | ||
426 | ] | ||
427 | |||
428 | node | ||
429 | [ | ||
430 | id 12 | ||
431 | graphics | ||
432 | [ | ||
433 | w 107.80000000000001 | ||
434 | h 40 | ||
435 | type "rectangle" | ||
436 | fill "#FFFFFF" | ||
437 | fill2 "#FFFFFF" | ||
438 | outline "#000000" | ||
439 | ] | ||
440 | LabelGraphics | ||
441 | [ | ||
442 | text "null" | ||
443 | outline "#000000" | ||
444 | fill "#FFFFFF" | ||
445 | fontSize 16 | ||
446 | fontName "Monospace" | ||
447 | autoSizePolicy "node_width" | ||
448 | anchor "t" | ||
449 | borderDistance 0.0 | ||
450 | ] | ||
451 | LabelGraphics | ||
452 | [ | ||
453 | text " | ||
454 | Member class | ||
455 | " | ||
456 | fontSize 14 | ||
457 | fontName "Consolas" | ||
458 | alignment "left" | ||
459 | anchor "tl" | ||
460 | borderDistance 6 | ||
461 | ] | ||
462 | ] | ||
463 | |||
464 | node | ||
465 | [ | ||
466 | id 13 | ||
467 | graphics | ||
468 | [ | ||
469 | w 85.80000000000001 | ||
470 | h 26 | ||
471 | type "rectangle" | ||
472 | fill "#FFFFFF" | ||
473 | fill2 "#FFFFFF" | ||
474 | outline "#000000" | ||
475 | ] | ||
476 | LabelGraphics | ||
477 | [ | ||
478 | text "New Reals" | ||
479 | outline "#000000" | ||
480 | fill "#FFFFFF" | ||
481 | fontSize 16 | ||
482 | fontName "Monospace" | ||
483 | autoSizePolicy "node_width" | ||
484 | anchor "t" | ||
485 | borderDistance 0.0 | ||
486 | ] | ||
487 | LabelGraphics | ||
488 | [ | ||
489 | text " | ||
490 | " | ||
491 | fontSize 14 | ||
492 | fontName "Consolas" | ||
493 | alignment "left" | ||
494 | anchor "tl" | ||
495 | borderDistance 6 | ||
496 | ] | ||
497 | ] | ||
498 | |||
499 | node | ||
500 | [ | ||
501 | id 14 | ||
502 | graphics | ||
503 | [ | ||
504 | w 103.4 | ||
505 | h 26 | ||
506 | type "rectangle" | ||
507 | fill "#FFFFFF" | ||
508 | fill2 "#FFFFFF" | ||
509 | outline "#000000" | ||
510 | ] | ||
511 | LabelGraphics | ||
512 | [ | ||
513 | text "New Strings" | ||
514 | outline "#000000" | ||
515 | fill "#FFFFFF" | ||
516 | fontSize 16 | ||
517 | fontName "Monospace" | ||
518 | autoSizePolicy "node_width" | ||
519 | anchor "t" | ||
520 | borderDistance 0.0 | ||
521 | ] | ||
522 | LabelGraphics | ||
523 | [ | ||
524 | text " | ||
525 | " | ||
526 | fontSize 14 | ||
527 | fontName "Consolas" | ||
528 | alignment "left" | ||
529 | anchor "tl" | ||
530 | borderDistance 6 | ||
531 | ] | ||
532 | ] | ||
533 | |||
534 | node | ||
535 | [ | ||
536 | id 15 | ||
537 | graphics | ||
538 | [ | ||
539 | w 103.4 | ||
540 | h 26 | ||
541 | type "rectangle" | ||
542 | fill "#FFFFFF" | ||
543 | fill2 "#FFFFFF" | ||
544 | outline "#000000" | ||
545 | ] | ||
546 | LabelGraphics | ||
547 | [ | ||
548 | text "New Objects" | ||
549 | outline "#000000" | ||
550 | fill "#FFFFFF" | ||
551 | fontSize 16 | ||
552 | fontName "Monospace" | ||
553 | autoSizePolicy "node_width" | ||
554 | anchor "t" | ||
555 | borderDistance 0.0 | ||
556 | ] | ||
557 | LabelGraphics | ||
558 | [ | ||
559 | text " | ||
560 | " | ||
561 | fontSize 14 | ||
562 | fontName "Consolas" | ||
563 | alignment "left" | ||
564 | anchor "tl" | ||
565 | borderDistance 6 | ||
566 | ] | ||
567 | ] | ||
568 | edge | ||
569 | [ | ||
570 | source 7 | ||
571 | target 8 | ||
572 | graphics | ||
573 | [ | ||
574 | fill "#000000" | ||
575 | width 3 | ||
576 | targetArrow "standard" | ||
577 | ] | ||
578 | LabelGraphics | ||
579 | [ | ||
580 | text "members reference FamilyTree" | ||
581 | fontSize 14 | ||
582 | fontName "Consolas" | ||
583 | configuration "AutoFlippingLabel" | ||
584 | model "six_pos" | ||
585 | position "thead" | ||
586 | ] | ||
587 | ] | ||
588 | edge | ||
589 | [ | ||
590 | source 7 | ||
591 | target 9 | ||
592 | graphics | ||
593 | [ | ||
594 | fill "#000000" | ||
595 | width 3 | ||
596 | targetArrow "standard" | ||
597 | ] | ||
598 | LabelGraphics | ||
599 | [ | ||
600 | text "members reference FamilyTree" | ||
601 | fontSize 14 | ||
602 | fontName "Consolas" | ||
603 | configuration "AutoFlippingLabel" | ||
604 | model "six_pos" | ||
605 | position "thead" | ||
606 | ] | ||
607 | ] | ||
608 | edge | ||
609 | [ | ||
610 | source 7 | ||
611 | target 10 | ||
612 | graphics | ||
613 | [ | ||
614 | fill "#000000" | ||
615 | width 3 | ||
616 | targetArrow "standard" | ||
617 | ] | ||
618 | LabelGraphics | ||
619 | [ | ||
620 | text "members reference FamilyTree" | ||
621 | fontSize 14 | ||
622 | fontName "Consolas" | ||
623 | configuration "AutoFlippingLabel" | ||
624 | model "six_pos" | ||
625 | position "thead" | ||
626 | ] | ||
627 | ] | ||
628 | edge | ||
629 | [ | ||
630 | source 7 | ||
631 | target 11 | ||
632 | graphics | ||
633 | [ | ||
634 | fill "#000000" | ||
635 | width 3 | ||
636 | targetArrow "standard" | ||
637 | ] | ||
638 | LabelGraphics | ||
639 | [ | ||
640 | text "members reference FamilyTree" | ||
641 | fontSize 14 | ||
642 | fontName "Consolas" | ||
643 | configuration "AutoFlippingLabel" | ||
644 | model "six_pos" | ||
645 | position "thead" | ||
646 | ] | ||
647 | ] | ||
648 | edge | ||
649 | [ | ||
650 | source 7 | ||
651 | target 12 | ||
652 | graphics | ||
653 | [ | ||
654 | fill "#000000" | ||
655 | width 3 | ||
656 | targetArrow "standard" | ||
657 | ] | ||
658 | LabelGraphics | ||
659 | [ | ||
660 | text "members reference FamilyTree" | ||
661 | fontSize 14 | ||
662 | fontName "Consolas" | ||
663 | configuration "AutoFlippingLabel" | ||
664 | model "six_pos" | ||
665 | position "thead" | ||
666 | ] | ||
667 | ] | ||
668 | edge | ||
669 | [ | ||
670 | source 9 | ||
671 | target 8 | ||
672 | graphics | ||
673 | [ | ||
674 | fill "#000000" | ||
675 | targetArrow "standard" | ||
676 | ] | ||
677 | LabelGraphics | ||
678 | [ | ||
679 | text "children reference Member" | ||
680 | fontSize 14 | ||
681 | fontName "Consolas" | ||
682 | configuration "AutoFlippingLabel" | ||
683 | model "six_pos" | ||
684 | position "thead" | ||
685 | ] | ||
686 | ] | ||
687 | edge | ||
688 | [ | ||
689 | source 8 | ||
690 | target 9 | ||
691 | graphics | ||
692 | [ | ||
693 | fill "#000000" | ||
694 | targetArrow "standard" | ||
695 | ] | ||
696 | LabelGraphics | ||
697 | [ | ||
698 | text "children reference Member" | ||
699 | fontSize 14 | ||
700 | fontName "Consolas" | ||
701 | configuration "AutoFlippingLabel" | ||
702 | model "six_pos" | ||
703 | position "thead" | ||
704 | ] | ||
705 | ] | ||
706 | edge | ||
707 | [ | ||
708 | source 10 | ||
709 | target 11 | ||
710 | graphics | ||
711 | [ | ||
712 | fill "#000000" | ||
713 | targetArrow "standard" | ||
714 | ] | ||
715 | LabelGraphics | ||
716 | [ | ||
717 | text "children reference Member" | ||
718 | fontSize 14 | ||
719 | fontName "Consolas" | ||
720 | configuration "AutoFlippingLabel" | ||
721 | model "six_pos" | ||
722 | position "thead" | ||
723 | ] | ||
724 | ] | ||
725 | edge | ||
726 | [ | ||
727 | source 8 | ||
728 | target 10 | ||
729 | graphics | ||
730 | [ | ||
731 | fill "#000000" | ||
732 | targetArrow "standard" | ||
733 | ] | ||
734 | LabelGraphics | ||
735 | [ | ||
736 | text "children reference Member" | ||
737 | fontSize 14 | ||
738 | fontName "Consolas" | ||
739 | configuration "AutoFlippingLabel" | ||
740 | model "six_pos" | ||
741 | position "thead" | ||
742 | ] | ||
743 | ] | ||
744 | edge | ||
745 | [ | ||
746 | source 11 | ||
747 | target 9 | ||
748 | graphics | ||
749 | [ | ||
750 | fill "#000000" | ||
751 | targetArrow "standard" | ||
752 | ] | ||
753 | LabelGraphics | ||
754 | [ | ||
755 | text "children reference Member" | ||
756 | fontSize 14 | ||
757 | fontName "Consolas" | ||
758 | configuration "AutoFlippingLabel" | ||
759 | model "six_pos" | ||
760 | position "thead" | ||
761 | ] | ||
762 | ] | ||
763 | edge | ||
764 | [ | ||
765 | source 11 | ||
766 | target 10 | ||
767 | graphics | ||
768 | [ | ||
769 | fill "#000000" | ||
770 | targetArrow "standard" | ||
771 | ] | ||
772 | LabelGraphics | ||
773 | [ | ||
774 | text "children reference Member" | ||
775 | fontSize 14 | ||
776 | fontName "Consolas" | ||
777 | configuration "AutoFlippingLabel" | ||
778 | model "six_pos" | ||
779 | position "thead" | ||
780 | ] | ||
781 | ] | ||
782 | edge | ||
783 | [ | ||
784 | source 10 | ||
785 | target 8 | ||
786 | graphics | ||
787 | [ | ||
788 | fill "#000000" | ||
789 | targetArrow "standard" | ||
790 | ] | ||
791 | LabelGraphics | ||
792 | [ | ||
793 | text "children reference Member" | ||
794 | fontSize 14 | ||
795 | fontName "Consolas" | ||
796 | configuration "AutoFlippingLabel" | ||
797 | model "six_pos" | ||
798 | position "thead" | ||
799 | ] | ||
800 | ] | ||
801 | edge | ||
802 | [ | ||
803 | source 8 | ||
804 | target 9 | ||
805 | graphics | ||
806 | [ | ||
807 | fill "#000000" | ||
808 | targetArrow "standard" | ||
809 | ] | ||
810 | LabelGraphics | ||
811 | [ | ||
812 | text "parents reference Member" | ||
813 | fontSize 14 | ||
814 | fontName "Consolas" | ||
815 | configuration "AutoFlippingLabel" | ||
816 | model "six_pos" | ||
817 | position "thead" | ||
818 | ] | ||
819 | ] | ||
820 | edge | ||
821 | [ | ||
822 | source 9 | ||
823 | target 8 | ||
824 | graphics | ||
825 | [ | ||
826 | fill "#000000" | ||
827 | targetArrow "standard" | ||
828 | ] | ||
829 | LabelGraphics | ||
830 | [ | ||
831 | text "parents reference Member" | ||
832 | fontSize 14 | ||
833 | fontName "Consolas" | ||
834 | configuration "AutoFlippingLabel" | ||
835 | model "six_pos" | ||
836 | position "thead" | ||
837 | ] | ||
838 | ] | ||
839 | edge | ||
840 | [ | ||
841 | source 11 | ||
842 | target 10 | ||
843 | graphics | ||
844 | [ | ||
845 | fill "#000000" | ||
846 | targetArrow "standard" | ||
847 | ] | ||
848 | LabelGraphics | ||
849 | [ | ||
850 | text "parents reference Member" | ||
851 | fontSize 14 | ||
852 | fontName "Consolas" | ||
853 | configuration "AutoFlippingLabel" | ||
854 | model "six_pos" | ||
855 | position "thead" | ||
856 | ] | ||
857 | ] | ||
858 | edge | ||
859 | [ | ||
860 | source 10 | ||
861 | target 8 | ||
862 | graphics | ||
863 | [ | ||
864 | fill "#000000" | ||
865 | targetArrow "standard" | ||
866 | ] | ||
867 | LabelGraphics | ||
868 | [ | ||
869 | text "parents reference Member" | ||
870 | fontSize 14 | ||
871 | fontName "Consolas" | ||
872 | configuration "AutoFlippingLabel" | ||
873 | model "six_pos" | ||
874 | position "thead" | ||
875 | ] | ||
876 | ] | ||
877 | edge | ||
878 | [ | ||
879 | source 9 | ||
880 | target 11 | ||
881 | graphics | ||
882 | [ | ||
883 | fill "#000000" | ||
884 | targetArrow "standard" | ||
885 | ] | ||
886 | LabelGraphics | ||
887 | [ | ||
888 | text "parents reference Member" | ||
889 | fontSize 14 | ||
890 | fontName "Consolas" | ||
891 | configuration "AutoFlippingLabel" | ||
892 | model "six_pos" | ||
893 | position "thead" | ||
894 | ] | ||
895 | ] | ||
896 | edge | ||
897 | [ | ||
898 | source 10 | ||
899 | target 11 | ||
900 | graphics | ||
901 | [ | ||
902 | fill "#000000" | ||
903 | targetArrow "standard" | ||
904 | ] | ||
905 | LabelGraphics | ||
906 | [ | ||
907 | text "parents reference Member" | ||
908 | fontSize 14 | ||
909 | fontName "Consolas" | ||
910 | configuration "AutoFlippingLabel" | ||
911 | model "six_pos" | ||
912 | position "thead" | ||
913 | ] | ||
914 | ] | ||
915 | edge | ||
916 | [ | ||
917 | source 8 | ||
918 | target 10 | ||
919 | graphics | ||
920 | [ | ||
921 | fill "#000000" | ||
922 | targetArrow "standard" | ||
923 | ] | ||
924 | LabelGraphics | ||
925 | [ | ||
926 | text "parents reference Member" | ||
927 | fontSize 14 | ||
928 | fontName "Consolas" | ||
929 | configuration "AutoFlippingLabel" | ||
930 | model "six_pos" | ||
931 | position "thead" | ||
932 | ] | ||
933 | ] | ||
934 | edge | ||
935 | [ | ||
936 | source 8 | ||
937 | target 6 | ||
938 | graphics | ||
939 | [ | ||
940 | fill "#000000" | ||
941 | targetArrow "standard" | ||
942 | ] | ||
943 | LabelGraphics | ||
944 | [ | ||
945 | text "age attribute Member" | ||
946 | fontSize 14 | ||
947 | fontName "Consolas" | ||
948 | configuration "AutoFlippingLabel" | ||
949 | model "six_pos" | ||
950 | position "thead" | ||
951 | ] | ||
952 | ] | ||
953 | edge | ||
954 | [ | ||
955 | source 9 | ||
956 | target 5 | ||
957 | graphics | ||
958 | [ | ||
959 | fill "#000000" | ||
960 | targetArrow "standard" | ||
961 | ] | ||
962 | LabelGraphics | ||
963 | [ | ||
964 | text "age attribute Member" | ||
965 | fontSize 14 | ||
966 | fontName "Consolas" | ||
967 | configuration "AutoFlippingLabel" | ||
968 | model "six_pos" | ||
969 | position "thead" | ||
970 | ] | ||
971 | ] | ||
972 | edge | ||
973 | [ | ||
974 | source 10 | ||
975 | target 2 | ||
976 | graphics | ||
977 | [ | ||
978 | fill "#000000" | ||
979 | targetArrow "standard" | ||
980 | ] | ||
981 | LabelGraphics | ||
982 | [ | ||
983 | text "age attribute Member" | ||
984 | fontSize 14 | ||
985 | fontName "Consolas" | ||
986 | configuration "AutoFlippingLabel" | ||
987 | model "six_pos" | ||
988 | position "thead" | ||
989 | ] | ||
990 | ] | ||
991 | edge | ||
992 | [ | ||
993 | source 11 | ||
994 | target 4 | ||
995 | graphics | ||
996 | [ | ||
997 | fill "#000000" | ||
998 | targetArrow "standard" | ||
999 | ] | ||
1000 | LabelGraphics | ||
1001 | [ | ||
1002 | text "age attribute Member" | ||
1003 | fontSize 14 | ||
1004 | fontName "Consolas" | ||
1005 | configuration "AutoFlippingLabel" | ||
1006 | model "six_pos" | ||
1007 | position "thead" | ||
1008 | ] | ||
1009 | ] | ||
1010 | ] | ||
1011 | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.png b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.png new file mode 100644 index 00000000..391d902b --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.png | |||
Binary files differ | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.xmi b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.xmi new file mode 100644 index 00000000..11e0e7c3 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.xmi | |||
@@ -0,0 +1,8 @@ | |||
1 | <?xml version="1.0" encoding="ASCII"?> | ||
2 | <familytree:FamilyTree xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:familytree="http://www.example.org/familytree" xsi:schemaLocation="http://www.example.org/familytree inputs/familytree.ecore"> | ||
3 | <members age="4" children="//@members.4" parents="//@members.3 //@members.4"/> | ||
4 | <members/> | ||
5 | <members age="1" children="//@members.3 //@members.4" parents="//@members.3 //@members.4"/> | ||
6 | <members age="3" children="//@members.0 //@members.2" parents="//@members.2"/> | ||
7 | <members age="5" children="//@members.0 //@members.2" parents="//@members.0 //@members.2"/> | ||
8 | </familytree:FamilyTree> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/plugin.xml b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/plugin.xml new file mode 100644 index 00000000..b32b0215 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/plugin.xml | |||
@@ -0,0 +1,7 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?><plugin> | ||
2 | <extension id="queries.FamilyTreeConstraints" point="org.eclipse.viatra.query.runtime.queryspecification"> | ||
3 | <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:queries.FamilyTreeConstraints" id="queries.FamilyTreeConstraints"> | ||
4 | <query-specification fqn="queries.memberIsItsOwnParent"/> | ||
5 | </group> | ||
6 | </extension> | ||
7 | </plugin> | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/.FamilyTreeConstraints.java._trace b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/.FamilyTreeConstraints.java._trace new file mode 100644 index 00000000..80158bd8 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/.FamilyTreeConstraints.java._trace | |||
Binary files differ | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/.MemberIsItsOwnParent.java._trace b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/.MemberIsItsOwnParent.java._trace new file mode 100644 index 00000000..1b0dca98 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/.MemberIsItsOwnParent.java._trace | |||
Binary files differ | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/FamilyTreeConstraints.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/FamilyTreeConstraints.java new file mode 100644 index 00000000..a5c375c6 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/FamilyTreeConstraints.java | |||
@@ -0,0 +1,53 @@ | |||
1 | /** | ||
2 | * Generated from platform:/resource/case.study.familyTree.run/src/queries/familyTreeConstraints.vql | ||
3 | */ | ||
4 | package queries; | ||
5 | |||
6 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; | ||
7 | import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup; | ||
8 | import queries.MemberIsItsOwnParent; | ||
9 | |||
10 | /** | ||
11 | * A pattern group formed of all public patterns defined in familyTreeConstraints.vql. | ||
12 | * | ||
13 | * <p>Use the static instance as any {@link interface org.eclipse.viatra.query.runtime.api.IQueryGroup}, to conveniently prepare | ||
14 | * a VIATRA Query engine for matching all patterns originally defined in file familyTreeConstraints.vql, | ||
15 | * in order to achieve better performance than one-by-one on-demand matcher initialization. | ||
16 | * | ||
17 | * <p> From package queries, the group contains the definition of the following patterns: <ul> | ||
18 | * <li>memberIsItsOwnParent</li> | ||
19 | * </ul> | ||
20 | * | ||
21 | * @see IQueryGroup | ||
22 | * | ||
23 | */ | ||
24 | @SuppressWarnings("all") | ||
25 | public final class FamilyTreeConstraints extends BaseGeneratedPatternGroup { | ||
26 | /** | ||
27 | * Access the pattern group. | ||
28 | * | ||
29 | * @return the singleton instance of the group | ||
30 | * @throws ViatraQueryRuntimeException if there was an error loading the generated code of pattern specifications | ||
31 | * | ||
32 | */ | ||
33 | public static FamilyTreeConstraints instance() { | ||
34 | if (INSTANCE == null) { | ||
35 | INSTANCE = new FamilyTreeConstraints(); | ||
36 | } | ||
37 | return INSTANCE; | ||
38 | } | ||
39 | |||
40 | private static FamilyTreeConstraints INSTANCE; | ||
41 | |||
42 | private FamilyTreeConstraints() { | ||
43 | querySpecifications.add(MemberIsItsOwnParent.instance()); | ||
44 | } | ||
45 | |||
46 | public MemberIsItsOwnParent getMemberIsItsOwnParent() { | ||
47 | return MemberIsItsOwnParent.instance(); | ||
48 | } | ||
49 | |||
50 | public MemberIsItsOwnParent.Matcher getMemberIsItsOwnParent(final ViatraQueryEngine engine) { | ||
51 | return MemberIsItsOwnParent.Matcher.on(engine); | ||
52 | } | ||
53 | } | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/MemberIsItsOwnParent.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/MemberIsItsOwnParent.java new file mode 100644 index 00000000..67cdafb5 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src-gen/queries/MemberIsItsOwnParent.java | |||
@@ -0,0 +1,577 @@ | |||
1 | /** | ||
2 | * Generated from platform:/resource/case.study.familyTree.run/src/queries/familyTreeConstraints.vql | ||
3 | */ | ||
4 | package queries; | ||
5 | |||
6 | import familytree.Member; | ||
7 | import java.util.Arrays; | ||
8 | import java.util.Collection; | ||
9 | import java.util.LinkedHashSet; | ||
10 | import java.util.List; | ||
11 | import java.util.Objects; | ||
12 | import java.util.Optional; | ||
13 | import java.util.Set; | ||
14 | import java.util.function.Consumer; | ||
15 | import java.util.stream.Collectors; | ||
16 | import java.util.stream.Stream; | ||
17 | import org.apache.log4j.Logger; | ||
18 | import org.eclipse.emf.ecore.EClass; | ||
19 | import org.eclipse.viatra.query.runtime.api.IPatternMatch; | ||
20 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification; | ||
21 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; | ||
22 | import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; | ||
23 | import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; | ||
24 | import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; | ||
25 | import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; | ||
26 | import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; | ||
27 | import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey; | ||
28 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | ||
29 | import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; | ||
30 | import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; | ||
31 | import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation; | ||
32 | import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference; | ||
33 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality; | ||
34 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; | ||
35 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; | ||
36 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; | ||
37 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; | ||
38 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; | ||
39 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | ||
40 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | ||
41 | import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; | ||
42 | |||
43 | /** | ||
44 | * A pattern-specific query specification that can instantiate Matcher in a type-safe way. | ||
45 | * | ||
46 | * <p>Original source: | ||
47 | * <code><pre> | ||
48 | * {@literal @}Constraint(message="memberIsItsOwnParent", severity="error", key={m}) | ||
49 | * pattern memberIsItsOwnParent(m: Member) = { | ||
50 | * FamilyTree.members(_, m); | ||
51 | * Member.parents(m, p); | ||
52 | * m == p; | ||
53 | * } | ||
54 | * </pre></code> | ||
55 | * | ||
56 | * @see Matcher | ||
57 | * @see Match | ||
58 | * | ||
59 | */ | ||
60 | @SuppressWarnings("all") | ||
61 | public final class MemberIsItsOwnParent extends BaseGeneratedEMFQuerySpecification<MemberIsItsOwnParent.Matcher> { | ||
62 | /** | ||
63 | * Pattern-specific match representation of the queries.memberIsItsOwnParent 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 Member fM; | ||
76 | |||
77 | private static List<String> parameterNames = makeImmutableList("m"); | ||
78 | |||
79 | private Match(final Member pM) { | ||
80 | this.fM = pM; | ||
81 | } | ||
82 | |||
83 | @Override | ||
84 | public Object get(final String parameterName) { | ||
85 | switch(parameterName) { | ||
86 | case "m": return this.fM; | ||
87 | default: return null; | ||
88 | } | ||
89 | } | ||
90 | |||
91 | @Override | ||
92 | public Object get(final int index) { | ||
93 | switch(index) { | ||
94 | case 0: return this.fM; | ||
95 | default: return null; | ||
96 | } | ||
97 | } | ||
98 | |||
99 | public Member getM() { | ||
100 | return this.fM; | ||
101 | } | ||
102 | |||
103 | @Override | ||
104 | public boolean set(final String parameterName, final Object newValue) { | ||
105 | if (!isMutable()) throw new java.lang.UnsupportedOperationException(); | ||
106 | if ("m".equals(parameterName) ) { | ||
107 | this.fM = (Member) newValue; | ||
108 | return true; | ||
109 | } | ||
110 | return false; | ||
111 | } | ||
112 | |||
113 | public void setM(final Member pM) { | ||
114 | if (!isMutable()) throw new java.lang.UnsupportedOperationException(); | ||
115 | this.fM = pM; | ||
116 | } | ||
117 | |||
118 | @Override | ||
119 | public String patternName() { | ||
120 | return "queries.memberIsItsOwnParent"; | ||
121 | } | ||
122 | |||
123 | @Override | ||
124 | public List<String> parameterNames() { | ||
125 | return MemberIsItsOwnParent.Match.parameterNames; | ||
126 | } | ||
127 | |||
128 | @Override | ||
129 | public Object[] toArray() { | ||
130 | return new Object[]{fM}; | ||
131 | } | ||
132 | |||
133 | @Override | ||
134 | public MemberIsItsOwnParent.Match toImmutable() { | ||
135 | return isMutable() ? newMatch(fM) : this; | ||
136 | } | ||
137 | |||
138 | @Override | ||
139 | public String prettyPrint() { | ||
140 | StringBuilder result = new StringBuilder(); | ||
141 | result.append("\"m\"=" + prettyPrintValue(fM)); | ||
142 | return result.toString(); | ||
143 | } | ||
144 | |||
145 | @Override | ||
146 | public int hashCode() { | ||
147 | return Objects.hash(fM); | ||
148 | } | ||
149 | |||
150 | @Override | ||
151 | public boolean equals(final Object obj) { | ||
152 | if (this == obj) | ||
153 | return true; | ||
154 | if (obj == null) { | ||
155 | return false; | ||
156 | } | ||
157 | if ((obj instanceof MemberIsItsOwnParent.Match)) { | ||
158 | MemberIsItsOwnParent.Match other = (MemberIsItsOwnParent.Match) obj; | ||
159 | return Objects.equals(fM, other.fM); | ||
160 | } else { | ||
161 | // this should be infrequent | ||
162 | if (!(obj instanceof IPatternMatch)) { | ||
163 | return false; | ||
164 | } | ||
165 | IPatternMatch otherSig = (IPatternMatch) obj; | ||
166 | return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); | ||
167 | } | ||
168 | } | ||
169 | |||
170 | @Override | ||
171 | public MemberIsItsOwnParent specification() { | ||
172 | return MemberIsItsOwnParent.instance(); | ||
173 | } | ||
174 | |||
175 | /** | ||
176 | * Returns an empty, mutable match. | ||
177 | * Fields of the mutable match can be filled to create a partial match, usable as matcher input. | ||
178 | * | ||
179 | * @return the empty match. | ||
180 | * | ||
181 | */ | ||
182 | public static MemberIsItsOwnParent.Match newEmptyMatch() { | ||
183 | return new Mutable(null); | ||
184 | } | ||
185 | |||
186 | /** | ||
187 | * Returns a mutable (partial) match. | ||
188 | * Fields of the mutable match can be filled to create a partial match, usable as matcher input. | ||
189 | * | ||
190 | * @param pM the fixed value of pattern parameter m, or null if not bound. | ||
191 | * @return the new, mutable (partial) match object. | ||
192 | * | ||
193 | */ | ||
194 | public static MemberIsItsOwnParent.Match newMutableMatch(final Member pM) { | ||
195 | return new Mutable(pM); | ||
196 | } | ||
197 | |||
198 | /** | ||
199 | * Returns a new (partial) match. | ||
200 | * This can be used e.g. to call the matcher with a partial match. | ||
201 | * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. | ||
202 | * @param pM the fixed value of pattern parameter m, or null if not bound. | ||
203 | * @return the (partial) match object. | ||
204 | * | ||
205 | */ | ||
206 | public static MemberIsItsOwnParent.Match newMatch(final Member pM) { | ||
207 | return new Immutable(pM); | ||
208 | } | ||
209 | |||
210 | private static final class Mutable extends MemberIsItsOwnParent.Match { | ||
211 | Mutable(final Member pM) { | ||
212 | super(pM); | ||
213 | } | ||
214 | |||
215 | @Override | ||
216 | public boolean isMutable() { | ||
217 | return true; | ||
218 | } | ||
219 | } | ||
220 | |||
221 | private static final class Immutable extends MemberIsItsOwnParent.Match { | ||
222 | Immutable(final Member pM) { | ||
223 | super(pM); | ||
224 | } | ||
225 | |||
226 | @Override | ||
227 | public boolean isMutable() { | ||
228 | return false; | ||
229 | } | ||
230 | } | ||
231 | } | ||
232 | |||
233 | /** | ||
234 | * Generated pattern matcher API of the queries.memberIsItsOwnParent pattern, | ||
235 | * providing pattern-specific query methods. | ||
236 | * | ||
237 | * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, | ||
238 | * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. | ||
239 | * | ||
240 | * <p>Matches of the pattern will be represented as {@link Match}. | ||
241 | * | ||
242 | * <p>Original source: | ||
243 | * <code><pre> | ||
244 | * {@literal @}Constraint(message="memberIsItsOwnParent", severity="error", key={m}) | ||
245 | * pattern memberIsItsOwnParent(m: Member) = { | ||
246 | * FamilyTree.members(_, m); | ||
247 | * Member.parents(m, p); | ||
248 | * m == p; | ||
249 | * } | ||
250 | * </pre></code> | ||
251 | * | ||
252 | * @see Match | ||
253 | * @see MemberIsItsOwnParent | ||
254 | * | ||
255 | */ | ||
256 | public static class Matcher extends BaseMatcher<MemberIsItsOwnParent.Match> { | ||
257 | /** | ||
258 | * Initializes the pattern matcher within an existing VIATRA Query engine. | ||
259 | * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. | ||
260 | * | ||
261 | * @param engine the existing VIATRA Query engine in which this matcher will be created. | ||
262 | * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation | ||
263 | * | ||
264 | */ | ||
265 | public static MemberIsItsOwnParent.Matcher on(final ViatraQueryEngine engine) { | ||
266 | // check if matcher already exists | ||
267 | Matcher matcher = engine.getExistingMatcher(querySpecification()); | ||
268 | if (matcher == null) { | ||
269 | matcher = (Matcher)engine.getMatcher(querySpecification()); | ||
270 | } | ||
271 | return matcher; | ||
272 | } | ||
273 | |||
274 | /** | ||
275 | * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation | ||
276 | * @return an initialized matcher | ||
277 | * @noreference This method is for internal matcher initialization by the framework, do not call it manually. | ||
278 | * | ||
279 | */ | ||
280 | public static MemberIsItsOwnParent.Matcher create() { | ||
281 | return new Matcher(); | ||
282 | } | ||
283 | |||
284 | private static final int POSITION_M = 0; | ||
285 | |||
286 | private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(MemberIsItsOwnParent.Matcher.class); | ||
287 | |||
288 | /** | ||
289 | * Initializes the pattern matcher within an existing VIATRA Query engine. | ||
290 | * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. | ||
291 | * | ||
292 | * @param engine the existing VIATRA Query engine in which this matcher will be created. | ||
293 | * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation | ||
294 | * | ||
295 | */ | ||
296 | private Matcher() { | ||
297 | super(querySpecification()); | ||
298 | } | ||
299 | |||
300 | /** | ||
301 | * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. | ||
302 | * @param pM the fixed value of pattern parameter m, or null if not bound. | ||
303 | * @return matches represented as a Match object. | ||
304 | * | ||
305 | */ | ||
306 | public Collection<MemberIsItsOwnParent.Match> getAllMatches(final Member pM) { | ||
307 | return rawStreamAllMatches(new Object[]{pM}).collect(Collectors.toSet()); | ||
308 | } | ||
309 | |||
310 | /** | ||
311 | * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. | ||
312 | * </p> | ||
313 | * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed. | ||
314 | * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>. | ||
315 | * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. | ||
316 | * @param pM the fixed value of pattern parameter m, or null if not bound. | ||
317 | * @return a stream of matches represented as a Match object. | ||
318 | * | ||
319 | */ | ||
320 | public Stream<MemberIsItsOwnParent.Match> streamAllMatches(final Member pM) { | ||
321 | return rawStreamAllMatches(new Object[]{pM}); | ||
322 | } | ||
323 | |||
324 | /** | ||
325 | * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. | ||
326 | * Neither determinism nor randomness of selection is guaranteed. | ||
327 | * @param pM the fixed value of pattern parameter m, or null if not bound. | ||
328 | * @return a match represented as a Match object, or null if no match is found. | ||
329 | * | ||
330 | */ | ||
331 | public Optional<MemberIsItsOwnParent.Match> getOneArbitraryMatch(final Member pM) { | ||
332 | return rawGetOneArbitraryMatch(new Object[]{pM}); | ||
333 | } | ||
334 | |||
335 | /** | ||
336 | * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, | ||
337 | * under any possible substitution of the unspecified parameters (if any). | ||
338 | * @param pM the fixed value of pattern parameter m, or null if not bound. | ||
339 | * @return true if the input is a valid (partial) match of the pattern. | ||
340 | * | ||
341 | */ | ||
342 | public boolean hasMatch(final Member pM) { | ||
343 | return rawHasMatch(new Object[]{pM}); | ||
344 | } | ||
345 | |||
346 | /** | ||
347 | * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. | ||
348 | * @param pM the fixed value of pattern parameter m, or null if not bound. | ||
349 | * @return the number of pattern matches found. | ||
350 | * | ||
351 | */ | ||
352 | public int countMatches(final Member pM) { | ||
353 | return rawCountMatches(new Object[]{pM}); | ||
354 | } | ||
355 | |||
356 | /** | ||
357 | * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. | ||
358 | * Neither determinism nor randomness of selection is guaranteed. | ||
359 | * @param pM the fixed value of pattern parameter m, or null if not bound. | ||
360 | * @param processor the action that will process the selected match. | ||
361 | * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked | ||
362 | * | ||
363 | */ | ||
364 | public boolean forOneArbitraryMatch(final Member pM, final Consumer<? super MemberIsItsOwnParent.Match> processor) { | ||
365 | return rawForOneArbitraryMatch(new Object[]{pM}, processor); | ||
366 | } | ||
367 | |||
368 | /** | ||
369 | * Returns a new (partial) match. | ||
370 | * This can be used e.g. to call the matcher with a partial match. | ||
371 | * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. | ||
372 | * @param pM the fixed value of pattern parameter m, or null if not bound. | ||
373 | * @return the (partial) match object. | ||
374 | * | ||
375 | */ | ||
376 | public MemberIsItsOwnParent.Match newMatch(final Member pM) { | ||
377 | return MemberIsItsOwnParent.Match.newMatch(pM); | ||
378 | } | ||
379 | |||
380 | /** | ||
381 | * Retrieve the set of values that occur in matches for m. | ||
382 | * @return the Set of all values or empty set if there are no matches | ||
383 | * | ||
384 | */ | ||
385 | protected Stream<Member> rawStreamAllValuesOfm(final Object[] parameters) { | ||
386 | return rawStreamAllValues(POSITION_M, parameters).map(Member.class::cast); | ||
387 | } | ||
388 | |||
389 | /** | ||
390 | * Retrieve the set of values that occur in matches for m. | ||
391 | * @return the Set of all values or empty set if there are no matches | ||
392 | * | ||
393 | */ | ||
394 | public Set<Member> getAllValuesOfm() { | ||
395 | return rawStreamAllValuesOfm(emptyArray()).collect(Collectors.toSet()); | ||
396 | } | ||
397 | |||
398 | /** | ||
399 | * Retrieve the set of values that occur in matches for m. | ||
400 | * @return the Set of all values or empty set if there are no matches | ||
401 | * | ||
402 | */ | ||
403 | public Stream<Member> streamAllValuesOfm() { | ||
404 | return rawStreamAllValuesOfm(emptyArray()); | ||
405 | } | ||
406 | |||
407 | @Override | ||
408 | protected MemberIsItsOwnParent.Match tupleToMatch(final Tuple t) { | ||
409 | try { | ||
410 | return MemberIsItsOwnParent.Match.newMatch((Member) t.get(POSITION_M)); | ||
411 | } catch(ClassCastException e) { | ||
412 | LOGGER.error("Element(s) in tuple not properly typed!",e); | ||
413 | return null; | ||
414 | } | ||
415 | } | ||
416 | |||
417 | @Override | ||
418 | protected MemberIsItsOwnParent.Match arrayToMatch(final Object[] match) { | ||
419 | try { | ||
420 | return MemberIsItsOwnParent.Match.newMatch((Member) match[POSITION_M]); | ||
421 | } catch(ClassCastException e) { | ||
422 | LOGGER.error("Element(s) in array not properly typed!",e); | ||
423 | return null; | ||
424 | } | ||
425 | } | ||
426 | |||
427 | @Override | ||
428 | protected MemberIsItsOwnParent.Match arrayToMatchMutable(final Object[] match) { | ||
429 | try { | ||
430 | return MemberIsItsOwnParent.Match.newMutableMatch((Member) match[POSITION_M]); | ||
431 | } catch(ClassCastException e) { | ||
432 | LOGGER.error("Element(s) in array not properly typed!",e); | ||
433 | return null; | ||
434 | } | ||
435 | } | ||
436 | |||
437 | /** | ||
438 | * @return the singleton instance of the query specification of this pattern | ||
439 | * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded | ||
440 | * | ||
441 | */ | ||
442 | public static IQuerySpecification<MemberIsItsOwnParent.Matcher> querySpecification() { | ||
443 | return MemberIsItsOwnParent.instance(); | ||
444 | } | ||
445 | } | ||
446 | |||
447 | private MemberIsItsOwnParent() { | ||
448 | super(GeneratedPQuery.INSTANCE); | ||
449 | } | ||
450 | |||
451 | /** | ||
452 | * @return the singleton instance of the query specification | ||
453 | * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded | ||
454 | * | ||
455 | */ | ||
456 | public static MemberIsItsOwnParent instance() { | ||
457 | try{ | ||
458 | return LazyHolder.INSTANCE; | ||
459 | } catch (ExceptionInInitializerError err) { | ||
460 | throw processInitializerError(err); | ||
461 | } | ||
462 | } | ||
463 | |||
464 | @Override | ||
465 | protected MemberIsItsOwnParent.Matcher instantiate(final ViatraQueryEngine engine) { | ||
466 | return MemberIsItsOwnParent.Matcher.on(engine); | ||
467 | } | ||
468 | |||
469 | @Override | ||
470 | public MemberIsItsOwnParent.Matcher instantiate() { | ||
471 | return MemberIsItsOwnParent.Matcher.create(); | ||
472 | } | ||
473 | |||
474 | @Override | ||
475 | public MemberIsItsOwnParent.Match newEmptyMatch() { | ||
476 | return MemberIsItsOwnParent.Match.newEmptyMatch(); | ||
477 | } | ||
478 | |||
479 | @Override | ||
480 | public MemberIsItsOwnParent.Match newMatch(final Object... parameters) { | ||
481 | return MemberIsItsOwnParent.Match.newMatch((familytree.Member) parameters[0]); | ||
482 | } | ||
483 | |||
484 | /** | ||
485 | * Inner class allowing the singleton instance of {@link MemberIsItsOwnParent} to be created | ||
486 | * <b>not</b> at the class load time of the outer class, | ||
487 | * but rather at the first call to {@link MemberIsItsOwnParent#instance()}. | ||
488 | * | ||
489 | * <p> This workaround is required e.g. to support recursion. | ||
490 | * | ||
491 | */ | ||
492 | private static class LazyHolder { | ||
493 | private static final MemberIsItsOwnParent INSTANCE = new MemberIsItsOwnParent(); | ||
494 | |||
495 | /** | ||
496 | * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned. | ||
497 | * This initialization order is required to support indirect recursion. | ||
498 | * | ||
499 | * <p> The static initializer is defined using a helper field to work around limitations of the code generator. | ||
500 | * | ||
501 | */ | ||
502 | private static final Object STATIC_INITIALIZER = ensureInitialized(); | ||
503 | |||
504 | public static Object ensureInitialized() { | ||
505 | INSTANCE.ensureInitializedInternal(); | ||
506 | return null; | ||
507 | } | ||
508 | } | ||
509 | |||
510 | private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { | ||
511 | private static final MemberIsItsOwnParent.GeneratedPQuery INSTANCE = new GeneratedPQuery(); | ||
512 | |||
513 | private final PParameter parameter_m = new PParameter("m", "familytree.Member", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/familytree", "Member")), PParameterDirection.INOUT); | ||
514 | |||
515 | private final List<PParameter> parameters = Arrays.asList(parameter_m); | ||
516 | |||
517 | private GeneratedPQuery() { | ||
518 | super(PVisibility.PUBLIC); | ||
519 | } | ||
520 | |||
521 | @Override | ||
522 | public String getFullyQualifiedName() { | ||
523 | return "queries.memberIsItsOwnParent"; | ||
524 | } | ||
525 | |||
526 | @Override | ||
527 | public List<String> getParameterNames() { | ||
528 | return Arrays.asList("m"); | ||
529 | } | ||
530 | |||
531 | @Override | ||
532 | public List<PParameter> getParameters() { | ||
533 | return parameters; | ||
534 | } | ||
535 | |||
536 | @Override | ||
537 | public Set<PBody> doGetContainedBodies() { | ||
538 | setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); | ||
539 | Set<PBody> bodies = new LinkedHashSet<>(); | ||
540 | { | ||
541 | PBody body = new PBody(this); | ||
542 | PVariable var_m = body.getOrCreateVariableByName("m"); | ||
543 | PVariable var___0_ = body.getOrCreateVariableByName("_<0>"); | ||
544 | PVariable var_p = body.getOrCreateVariableByName("p"); | ||
545 | new TypeConstraint(body, Tuples.flatTupleOf(var_m), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); | ||
546 | body.setSymbolicParameters(Arrays.<ExportedParameter>asList( | ||
547 | new ExportedParameter(body, var_m, parameter_m) | ||
548 | )); | ||
549 | // FamilyTree.members(_, m) | ||
550 | new TypeConstraint(body, Tuples.flatTupleOf(var___0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "FamilyTree"))); | ||
551 | PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}"); | ||
552 | new TypeConstraint(body, Tuples.flatTupleOf(var___0_, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/familytree", "FamilyTree", "members"))); | ||
553 | new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); | ||
554 | new Equality(body, var__virtual_0_, var_m); | ||
555 | // Member.parents(m, p) | ||
556 | new TypeConstraint(body, Tuples.flatTupleOf(var_m), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); | ||
557 | PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}"); | ||
558 | new TypeConstraint(body, Tuples.flatTupleOf(var_m, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/familytree", "Member", "parents"))); | ||
559 | new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); | ||
560 | new Equality(body, var__virtual_1_, var_p); | ||
561 | // m == p | ||
562 | new Equality(body, var_m, var_p); | ||
563 | bodies.add(body); | ||
564 | } | ||
565 | { | ||
566 | PAnnotation annotation = new PAnnotation("Constraint"); | ||
567 | annotation.addAttribute("message", "memberIsItsOwnParent"); | ||
568 | annotation.addAttribute("severity", "error"); | ||
569 | annotation.addAttribute("key", Arrays.asList(new Object[] { | ||
570 | new ParameterReference("m") | ||
571 | })); | ||
572 | addAnnotation(annotation); | ||
573 | } | ||
574 | return bodies; | ||
575 | } | ||
576 | } | ||
577 | } | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/queries/familyTreeConstraints.vql b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/queries/familyTreeConstraints.vql new file mode 100644 index 00000000..1b9b6659 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/queries/familyTreeConstraints.vql | |||
@@ -0,0 +1,24 @@ | |||
1 | package queries | ||
2 | |||
3 | import "http://www.example.org/familytree" | ||
4 | |||
5 | @Constraint(message="memberIsItsOwnParent", severity="error", key={m}) | ||
6 | pattern memberIsItsOwnParent(m: Member) = { | ||
7 | FamilyTree.members(_, m); | ||
8 | Member.parents(m, p); | ||
9 | m == p; | ||
10 | } | ||
11 | |||
12 | //@Constraint(message="parentTooYoung", severity="error", key={m, p}) | ||
13 | //pattern parentTooYoung(m: Member, p: Member) = { | ||
14 | // FamilyTree.members(_, m); | ||
15 | // Member.parents(m, p); | ||
16 | // Member.age(m, mAge); | ||
17 | // Member.age(p, pAge); | ||
18 | // check (mAge <= (pAge + 12)); | ||
19 | //} | ||
20 | |||
21 | |||
22 | |||
23 | |||
24 | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/run/FamilyTreeGen.java b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/run/FamilyTreeGen.java new file mode 100644 index 00000000..4dcd77a5 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/run/FamilyTreeGen.java | |||
@@ -0,0 +1,13 @@ | |||
1 | package run; | ||
2 | |||
3 | import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor; | ||
4 | |||
5 | public class FamilyTreeGen { | ||
6 | public static void main(String[] args) { | ||
7 | String errorMessages = StandaloneScriptExecutor.executeScript("inputs/familytreeGen.vsconfig"); | ||
8 | if(errorMessages!=null) { | ||
9 | System.out.println(errorMessages); | ||
10 | } | ||
11 | } | ||
12 | |||
13 | } | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.project b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.project index 0f411358..fec454ab 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.project +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.project | |||
@@ -1,6 +1,6 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <projectDescription> | 2 | <projectDescription> |
3 | <name>case.study.a.model</name> | 3 | <name>case.study.pledge.model</name> |
4 | <comment></comment> | 4 | <comment></comment> |
5 | <projects> | 5 | <projects> |
6 | </projects> | 6 | </projects> |
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/META-INF/MANIFEST.MF b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/META-INF/MANIFEST.MF index e4fce672..5df271f3 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/META-INF/MANIFEST.MF +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/META-INF/MANIFEST.MF | |||
@@ -1,7 +1,7 @@ | |||
1 | Manifest-Version: 1.0 | 1 | Manifest-Version: 1.0 |
2 | Bundle-ManifestVersion: 2 | 2 | Bundle-ManifestVersion: 2 |
3 | Bundle-Name: %pluginName | 3 | Bundle-Name: %pluginName |
4 | Bundle-SymbolicName: case.study.a.model;singleton:=true | 4 | Bundle-SymbolicName: case.study.pledge.model;singleton:=true |
5 | Bundle-Version: 1.0.0.qualifier | 5 | Bundle-Version: 1.0.0.qualifier |
6 | Bundle-ClassPath: . | 6 | Bundle-ClassPath: . |
7 | Bundle-Vendor: %providerName | 7 | Bundle-Vendor: %providerName |
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.project b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.project index 35f74f1f..2d3d0119 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.project +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.project | |||
@@ -1,6 +1,6 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <projectDescription> | 2 | <projectDescription> |
3 | <name>original.PLEDGE.case.studies</name> | 3 | <name>case.study.pledge.originalFiles</name> |
4 | <comment></comment> | 4 | <comment></comment> |
5 | <projects> | 5 | <projects> |
6 | </projects> | 6 | </projects> |
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.project b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.project index f6cc6b58..9080c4bb 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.project +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.project | |||
@@ -1,6 +1,6 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <projectDescription> | 2 | <projectDescription> |
3 | <name>case.study.a.queries</name> | 3 | <name>case.study.pledge.run</name> |
4 | <comment></comment> | 4 | <comment></comment> |
5 | <projects> | 5 | <projects> |
6 | </projects> | 6 | </projects> |
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/META-INF/MANIFEST.MF b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/META-INF/MANIFEST.MF index c1bf0110..1ab2d276 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/META-INF/MANIFEST.MF +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/META-INF/MANIFEST.MF | |||
@@ -1,7 +1,7 @@ | |||
1 | Manifest-Version: 1.0 | 1 | Manifest-Version: 1.0 |
2 | Bundle-ManifestVersion: 2 | 2 | Bundle-ManifestVersion: 2 |
3 | Bundle-Name: case.study.a.queries | 3 | Bundle-Name: case.study.a.queries |
4 | Bundle-SymbolicName: case.study.a.queries;singleton:=true | 4 | Bundle-SymbolicName: case.study.pledge.run;singleton:=true |
5 | Bundle-Version: 0.0.1.qualifier | 5 | Bundle-Version: 0.0.1.qualifier |
6 | Export-Package: queries | 6 | Export-Package: queries |
7 | Require-Bundle: org.eclipse.emf.ecore, | 7 | Require-Bundle: org.eclipse.emf.ecore, |
@@ -10,7 +10,7 @@ Require-Bundle: org.eclipse.emf.ecore, | |||
10 | org.eclipse.viatra.query.runtime.localsearch, | 10 | org.eclipse.viatra.query.runtime.localsearch, |
11 | org.eclipse.viatra.addon.querybasedfeatures.runtime;bundle-version="2.3.0", | 11 | org.eclipse.viatra.addon.querybasedfeatures.runtime;bundle-version="2.3.0", |
12 | org.eclipse.xtext.xbase.lib, | 12 | org.eclipse.xtext.xbase.lib, |
13 | case.study.a.model;bundle-version="1.0.0", | 13 | case.study.pledge.model;bundle-version="1.0.0", |
14 | test;bundle-version="0.1.0", | 14 | test;bundle-version="0.1.0", |
15 | hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0", | 15 | hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0", |
16 | hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0", | 16 | hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0", |
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/.gitignore new file mode 100644 index 00000000..3d70f0da --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/.gitignore | |||
@@ -0,0 +1,2 @@ | |||
1 | /queries/ | ||
2 | /run/ | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/.gitignore index 16afa8c0..527f3a0e 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/.gitignore +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/.gitignore | |||
@@ -73,3 +73,40 @@ | |||
73 | /.Inv07.java._trace | 73 | /.Inv07.java._trace |
74 | /.Inv10.java._trace | 74 | /.Inv10.java._trace |
75 | /.X_inv15.java._trace | 75 | /.X_inv15.java._trace |
76 | /Inv03.java | ||
77 | /Inv05.java | ||
78 | /Inv06.java | ||
79 | /X_inv03_eligAll.java | ||
80 | /X_inv03_hasAll.java | ||
81 | /X_inv05_inRange.java | ||
82 | /Case_study_A.java | ||
83 | /Inv07.java | ||
84 | /Inv08.java | ||
85 | /Inv10.java | ||
86 | /Inv11.java | ||
87 | /Inv12.java | ||
88 | /Inv13.java | ||
89 | /Inv15.java | ||
90 | /Inv17.java | ||
91 | /Inv20.java | ||
92 | /Inv33.java | ||
93 | /Inv34.java | ||
94 | /Inv35.java | ||
95 | /Inv47.java | ||
96 | /Inv48.java | ||
97 | /Inv49.java | ||
98 | /X_inv08_inRange.java | ||
99 | /X_inv08_noType.java | ||
100 | /X_inv08_notEI.java | ||
101 | /X_inv11_incNotOver100.java | ||
102 | /X_inv11_incOver100.java | ||
103 | /X_inv12_notNonRes.java | ||
104 | /X_inv12_notZZ.java | ||
105 | /X_inv13.java | ||
106 | /X_inv15.java | ||
107 | /X_inv47.java | ||
108 | /X_inv48_3.java | ||
109 | /X_inv48_Dis.java | ||
110 | /X_inv48_notDis.java | ||
111 | /X_inv49_1.java | ||
112 | /X_inv49_2.java | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.RunGenerator.xtendbin b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.RunGenerator.xtendbin index 325fee79..e2021169 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.RunGenerator.xtendbin +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.RunGenerator.xtendbin | |||
Binary files differ | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.gitignore index bd13352d..8e503b4a 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.gitignore +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.gitignore | |||
@@ -1,2 +1,4 @@ | |||
1 | /.GenerateScenarios.java._trace | 1 | /.GenerateScenarios.java._trace |
2 | /.checkQueries.java._trace | 2 | /.checkQueries.java._trace |
3 | /.RunGenerator.xtendbin | ||
4 | /GenerateScenarios.java | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/.gitignore index 16afa8c0..527f3a0e 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/.gitignore +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/.gitignore | |||
@@ -73,3 +73,40 @@ | |||
73 | /.Inv07.java._trace | 73 | /.Inv07.java._trace |
74 | /.Inv10.java._trace | 74 | /.Inv10.java._trace |
75 | /.X_inv15.java._trace | 75 | /.X_inv15.java._trace |
76 | /Inv03.java | ||
77 | /Inv05.java | ||
78 | /Inv06.java | ||
79 | /X_inv03_eligAll.java | ||
80 | /X_inv03_hasAll.java | ||
81 | /X_inv05_inRange.java | ||
82 | /Case_study_A.java | ||
83 | /Inv07.java | ||
84 | /Inv08.java | ||
85 | /Inv10.java | ||
86 | /Inv11.java | ||
87 | /Inv12.java | ||
88 | /Inv13.java | ||
89 | /Inv15.java | ||
90 | /Inv17.java | ||
91 | /Inv20.java | ||
92 | /Inv33.java | ||
93 | /Inv34.java | ||
94 | /Inv35.java | ||
95 | /Inv47.java | ||
96 | /Inv48.java | ||
97 | /Inv49.java | ||
98 | /X_inv08_inRange.java | ||
99 | /X_inv08_noType.java | ||
100 | /X_inv08_notEI.java | ||
101 | /X_inv11_incNotOver100.java | ||
102 | /X_inv11_incOver100.java | ||
103 | /X_inv12_notNonRes.java | ||
104 | /X_inv12_notZZ.java | ||
105 | /X_inv13.java | ||
106 | /X_inv15.java | ||
107 | /X_inv47.java | ||
108 | /X_inv48_3.java | ||
109 | /X_inv48_Dis.java | ||
110 | /X_inv48_notDis.java | ||
111 | /X_inv49_1.java | ||
112 | /X_inv49_2.java | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Case_study_A.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Case_study_A.java index a8ab2996..11c60d6f 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Case_study_A.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Case_study_A.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv03.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv03.java index cfe496bd..9038ec4d 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv03.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv03.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv05.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv05.java index ba1f8552..2dee094d 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv05.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv05.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv06.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv06.java index fcf7ac89..aafdbe41 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv06.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv06.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
@@ -8,6 +8,7 @@ import java.util.Arrays; | |||
8 | import java.util.Collection; | 8 | import java.util.Collection; |
9 | import java.util.LinkedHashSet; | 9 | import java.util.LinkedHashSet; |
10 | import java.util.List; | 10 | import java.util.List; |
11 | import java.util.Objects; | ||
11 | import java.util.Optional; | 12 | import java.util.Optional; |
12 | import java.util.Set; | 13 | import java.util.Set; |
13 | import java.util.function.Consumer; | 14 | import java.util.function.Consumer; |
@@ -16,6 +17,7 @@ import java.util.stream.Stream; | |||
16 | import org.apache.log4j.Logger; | 17 | import org.apache.log4j.Logger; |
17 | import org.eclipse.emf.ecore.EClass; | 18 | import org.eclipse.emf.ecore.EClass; |
18 | import org.eclipse.emf.ecore.EDataType; | 19 | import org.eclipse.emf.ecore.EDataType; |
20 | import org.eclipse.viatra.query.runtime.api.IPatternMatch; | ||
19 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification; | 21 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification; |
20 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; | 22 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; |
21 | import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; | 23 | import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; |
@@ -82,6 +84,162 @@ public final class Inv06 extends BaseGeneratedEMFQuerySpecification<Inv06.Matche | |||
82 | * | 84 | * |
83 | */ | 85 | */ |
84 | public static abstract class Match extends BasePatternMatch { | 86 | public static abstract class Match extends BasePatternMatch { |
87 | private Tax_Payer fTp; | ||
88 | |||
89 | private static List<String> parameterNames = makeImmutableList("tp"); | ||
90 | |||
91 | private Match(final Tax_Payer pTp) { | ||
92 | this.fTp = pTp; | ||
93 | } | ||
94 | |||
95 | @Override | ||
96 | public Object get(final String parameterName) { | ||
97 | switch(parameterName) { | ||
98 | case "tp": return this.fTp; | ||
99 | default: return null; | ||
100 | } | ||
101 | } | ||
102 | |||
103 | @Override | ||
104 | public Object get(final int index) { | ||
105 | switch(index) { | ||
106 | case 0: return this.fTp; | ||
107 | default: return null; | ||
108 | } | ||
109 | } | ||
110 | |||
111 | public Tax_Payer getTp() { | ||
112 | return this.fTp; | ||
113 | } | ||
114 | |||
115 | @Override | ||
116 | public boolean set(final String parameterName, final Object newValue) { | ||
117 | if (!isMutable()) throw new java.lang.UnsupportedOperationException(); | ||
118 | if ("tp".equals(parameterName) ) { | ||
119 | this.fTp = (Tax_Payer) newValue; | ||
120 | return true; | ||
121 | } | ||
122 | return false; | ||
123 | } | ||
124 | |||
125 | public void setTp(final Tax_Payer pTp) { | ||
126 | if (!isMutable()) throw new java.lang.UnsupportedOperationException(); | ||
127 | this.fTp = pTp; | ||
128 | } | ||
129 | |||
130 | @Override | ||
131 | public String patternName() { | ||
132 | return "queries.inv06"; | ||
133 | } | ||
134 | |||
135 | @Override | ||
136 | public List<String> parameterNames() { | ||
137 | return Inv06.Match.parameterNames; | ||
138 | } | ||
139 | |||
140 | @Override | ||
141 | public Object[] toArray() { | ||
142 | return new Object[]{fTp}; | ||
143 | } | ||
144 | |||
145 | @Override | ||
146 | public Inv06.Match toImmutable() { | ||
147 | return isMutable() ? newMatch(fTp) : this; | ||
148 | } | ||
149 | |||
150 | @Override | ||
151 | public String prettyPrint() { | ||
152 | StringBuilder result = new StringBuilder(); | ||
153 | result.append("\"tp\"=" + prettyPrintValue(fTp)); | ||
154 | return result.toString(); | ||
155 | } | ||
156 | |||
157 | @Override | ||
158 | public int hashCode() { | ||
159 | return Objects.hash(fTp); | ||
160 | } | ||
161 | |||
162 | @Override | ||
163 | public boolean equals(final Object obj) { | ||
164 | if (this == obj) | ||
165 | return true; | ||
166 | if (obj == null) { | ||
167 | return false; | ||
168 | } | ||
169 | if ((obj instanceof Inv06.Match)) { | ||
170 | Inv06.Match other = (Inv06.Match) obj; | ||
171 | return Objects.equals(fTp, other.fTp); | ||
172 | } else { | ||
173 | // this should be infrequent | ||
174 | if (!(obj instanceof IPatternMatch)) { | ||
175 | return false; | ||
176 | } | ||
177 | IPatternMatch otherSig = (IPatternMatch) obj; | ||
178 | return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); | ||
179 | } | ||
180 | } | ||
181 | |||
182 | @Override | ||
183 | public Inv06 specification() { | ||
184 | return Inv06.instance(); | ||
185 | } | ||
186 | |||
187 | /** | ||
188 | * Returns an empty, mutable match. | ||
189 | * Fields of the mutable match can be filled to create a partial match, usable as matcher input. | ||
190 | * | ||
191 | * @return the empty match. | ||
192 | * | ||
193 | */ | ||
194 | public static Inv06.Match newEmptyMatch() { | ||
195 | return new Mutable(null); | ||
196 | } | ||
197 | |||
198 | /** | ||
199 | * Returns a mutable (partial) match. | ||
200 | * Fields of the mutable match can be filled to create a partial match, usable as matcher input. | ||
201 | * | ||
202 | * @param pTp the fixed value of pattern parameter tp, or null if not bound. | ||
203 | * @return the new, mutable (partial) match object. | ||
204 | * | ||
205 | */ | ||
206 | public static Inv06.Match newMutableMatch(final Tax_Payer pTp) { | ||
207 | return new Mutable(pTp); | ||
208 | } | ||
209 | |||
210 | /** | ||
211 | * Returns a new (partial) match. | ||
212 | * This can be used e.g. to call the matcher with a partial match. | ||
213 | * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. | ||
214 | * @param pTp the fixed value of pattern parameter tp, or null if not bound. | ||
215 | * @return the (partial) match object. | ||
216 | * | ||
217 | */ | ||
218 | public static Inv06.Match newMatch(final Tax_Payer pTp) { | ||
219 | return new Immutable(pTp); | ||
220 | } | ||
221 | |||
222 | private static final class Mutable extends Inv06.Match { | ||
223 | Mutable(final Tax_Payer pTp) { | ||
224 | super(pTp); | ||
225 | } | ||
226 | |||
227 | @Override | ||
228 | public boolean isMutable() { | ||
229 | return true; | ||
230 | } | ||
231 | } | ||
232 | |||
233 | private static final class Immutable extends Inv06.Match { | ||
234 | Immutable(final Tax_Payer pTp) { | ||
235 | super(pTp); | ||
236 | } | ||
237 | |||
238 | @Override | ||
239 | public boolean isMutable() { | ||
240 | return false; | ||
241 | } | ||
242 | } | ||
85 | } | 243 | } |
86 | 244 | ||
87 | /** | 245 | /** |
@@ -189,7 +347,9 @@ public final class Inv06 extends BaseGeneratedEMFQuerySpecification<Inv06.Matche | |||
189 | * @return a match represented as a Match object, or null if no match is found. | 347 | * @return a match represented as a Match object, or null if no match is found. |
190 | * | 348 | * |
191 | */ | 349 | */ |
192 | public Optional<Inv06.Match> getOneArbitraryMatch(); | 350 | public Optional<Inv06.Match> getOneArbitraryMatch(final Tax_Payer pTp) { |
351 | return rawGetOneArbitraryMatch(new Object[]{pTp}); | ||
352 | } | ||
193 | 353 | ||
194 | /** | 354 | /** |
195 | * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, | 355 | * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, |
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv07.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv07.java index d9fed653..81665825 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv07.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv07.java | |||
@@ -1,14 +1,14 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
6 | import Taxation.Income; | 6 | import Taxation.Income; |
7 | import com.google.common.base.Objects; | ||
8 | import java.util.Arrays; | 7 | import java.util.Arrays; |
9 | import java.util.Collection; | 8 | import java.util.Collection; |
10 | import java.util.LinkedHashSet; | 9 | import java.util.LinkedHashSet; |
11 | import java.util.List; | 10 | import java.util.List; |
11 | import java.util.Objects; | ||
12 | import java.util.Optional; | 12 | import java.util.Optional; |
13 | import java.util.Set; | 13 | import java.util.Set; |
14 | import java.util.function.Consumer; | 14 | import java.util.function.Consumer; |
@@ -17,6 +17,7 @@ import java.util.stream.Stream; | |||
17 | import org.apache.log4j.Logger; | 17 | import org.apache.log4j.Logger; |
18 | import org.eclipse.emf.ecore.EClass; | 18 | import org.eclipse.emf.ecore.EClass; |
19 | import org.eclipse.emf.ecore.EDataType; | 19 | import org.eclipse.emf.ecore.EDataType; |
20 | import org.eclipse.viatra.query.runtime.api.IPatternMatch; | ||
20 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification; | 21 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification; |
21 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; | 22 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; |
22 | import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; | 23 | import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; |
@@ -77,6 +78,162 @@ public final class Inv07 extends BaseGeneratedEMFQuerySpecification<Inv07.Matche | |||
77 | * | 78 | * |
78 | */ | 79 | */ |
79 | public static abstract class Match extends BasePatternMatch { | 80 | public static abstract class Match extends BasePatternMatch { |
81 | private Income fInc; | ||
82 | |||
83 | private static List<String> parameterNames = makeImmutableList("inc"); | ||
84 | |||
85 | private Match(final Income pInc) { | ||
86 | this.fInc = pInc; | ||
87 | } | ||
88 | |||
89 | @Override | ||
90 | public Object get(final String parameterName) { | ||
91 | switch(parameterName) { | ||
92 | case "inc": return this.fInc; | ||
93 | default: return null; | ||
94 | } | ||
95 | } | ||
96 | |||
97 | @Override | ||
98 | public Object get(final int index) { | ||
99 | switch(index) { | ||
100 | case 0: return this.fInc; | ||
101 | default: return null; | ||
102 | } | ||
103 | } | ||
104 | |||
105 | public Income getInc() { | ||
106 | return this.fInc; | ||
107 | } | ||
108 | |||
109 | @Override | ||
110 | public boolean set(final String parameterName, final Object newValue) { | ||
111 | if (!isMutable()) throw new java.lang.UnsupportedOperationException(); | ||
112 | if ("inc".equals(parameterName) ) { | ||
113 | this.fInc = (Income) newValue; | ||
114 | return true; | ||
115 | } | ||
116 | return false; | ||
117 | } | ||
118 | |||
119 | public void setInc(final Income pInc) { | ||
120 | if (!isMutable()) throw new java.lang.UnsupportedOperationException(); | ||
121 | this.fInc = pInc; | ||
122 | } | ||
123 | |||
124 | @Override | ||
125 | public String patternName() { | ||
126 | return "queries.inv07"; | ||
127 | } | ||
128 | |||
129 | @Override | ||
130 | public List<String> parameterNames() { | ||
131 | return Inv07.Match.parameterNames; | ||
132 | } | ||
133 | |||
134 | @Override | ||
135 | public Object[] toArray() { | ||
136 | return new Object[]{fInc}; | ||
137 | } | ||
138 | |||
139 | @Override | ||
140 | public Inv07.Match toImmutable() { | ||
141 | return isMutable() ? newMatch(fInc) : this; | ||
142 | } | ||
143 | |||
144 | @Override | ||
145 | public String prettyPrint() { | ||
146 | StringBuilder result = new StringBuilder(); | ||
147 | result.append("\"inc\"=" + prettyPrintValue(fInc)); | ||
148 | return result.toString(); | ||
149 | } | ||
150 | |||
151 | @Override | ||
152 | public int hashCode() { | ||
153 | return Objects.hash(fInc); | ||
154 | } | ||
155 | |||
156 | @Override | ||
157 | public boolean equals(final Object obj) { | ||
158 | if (this == obj) | ||
159 | return true; | ||
160 | if (obj == null) { | ||
161 | return false; | ||
162 | } | ||
163 | if ((obj instanceof Inv07.Match)) { | ||
164 | Inv07.Match other = (Inv07.Match) obj; | ||
165 | return Objects.equals(fInc, other.fInc); | ||
166 | } else { | ||
167 | // this should be infrequent | ||
168 | if (!(obj instanceof IPatternMatch)) { | ||
169 | return false; | ||
170 | } | ||
171 | IPatternMatch otherSig = (IPatternMatch) obj; | ||
172 | return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); | ||
173 | } | ||
174 | } | ||
175 | |||
176 | @Override | ||
177 | public Inv07 specification() { | ||
178 | return Inv07.instance(); | ||
179 | } | ||
180 | |||
181 | /** | ||
182 | * Returns an empty, mutable match. | ||
183 | * Fields of the mutable match can be filled to create a partial match, usable as matcher input. | ||
184 | * | ||
185 | * @return the empty match. | ||
186 | * | ||
187 | */ | ||
188 | public static Inv07.Match newEmptyMatch() { | ||
189 | return new Mutable(null); | ||
190 | } | ||
191 | |||
192 | /** | ||
193 | * Returns a mutable (partial) match. | ||
194 | * Fields of the mutable match can be filled to create a partial match, usable as matcher input. | ||
195 | * | ||
196 | * @param pInc the fixed value of pattern parameter inc, or null if not bound. | ||
197 | * @return the new, mutable (partial) match object. | ||
198 | * | ||
199 | */ | ||
200 | public static Inv07.Match newMutableMatch(final Income pInc) { | ||
201 | return new Mutable(pInc); | ||
202 | } | ||
203 | |||
204 | /** | ||
205 | * Returns a new (partial) match. | ||
206 | * This can be used e.g. to call the matcher with a partial match. | ||
207 | * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. | ||
208 | * @param pInc the fixed value of pattern parameter inc, or null if not bound. | ||
209 | * @return the (partial) match object. | ||
210 | * | ||
211 | */ | ||
212 | public static Inv07.Match newMatch(final Income pInc) { | ||
213 | return new Immutable(pInc); | ||
214 | } | ||
215 | |||
216 | private static final class Mutable extends Inv07.Match { | ||
217 | Mutable(final Income pInc) { | ||
218 | super(pInc); | ||
219 | } | ||
220 | |||
221 | @Override | ||
222 | public boolean isMutable() { | ||
223 | return true; | ||
224 | } | ||
225 | } | ||
226 | |||
227 | private static final class Immutable extends Inv07.Match { | ||
228 | Immutable(final Income pInc) { | ||
229 | super(pInc); | ||
230 | } | ||
231 | |||
232 | @Override | ||
233 | public boolean isMutable() { | ||
234 | return false; | ||
235 | } | ||
236 | } | ||
80 | } | 237 | } |
81 | 238 | ||
82 | /** | 239 | /** |
@@ -449,7 +606,7 @@ public final class Inv07 extends BaseGeneratedEMFQuerySpecification<Inv07.Matche | |||
449 | } | 606 | } |
450 | 607 | ||
451 | private static boolean evaluateExpression_1_1(final Double d1, final Double d2) { | 608 | private static boolean evaluateExpression_1_1(final Double d1, final Double d2) { |
452 | boolean _notEquals = (!Objects.equal(d1, d2)); | 609 | boolean _notEquals = (!com.google.common.base.Objects.equal(d1, d2)); |
453 | return _notEquals; | 610 | return _notEquals; |
454 | } | 611 | } |
455 | } | 612 | } |
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv08.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv08.java index d2f869c6..9ecadd34 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv08.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv08.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv10.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv10.java index 3c36b831..6ee0111e 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv10.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv10.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv11.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv11.java index a64ef7ff..5dc82fc9 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv11.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv11.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv12.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv12.java index 2a539a1d..fc1b0c62 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv12.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv12.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
@@ -35,6 +35,7 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedP | |||
35 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall; | 35 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall; |
36 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; | 36 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; |
37 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; | 37 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; |
38 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; | ||
38 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; | 39 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; |
39 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | 40 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; |
40 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | 41 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; |
@@ -215,6 +216,10 @@ public final class Inv12 extends BaseGeneratedEMFQuerySpecification<Inv12.Matche | |||
215 | } | 216 | } |
216 | 217 | ||
217 | private static final class Mutable extends Inv12.Match { | 218 | private static final class Mutable extends Inv12.Match { |
219 | Mutable(final Tax_Payer pTp) { | ||
220 | super(pTp); | ||
221 | } | ||
222 | |||
218 | @Override | 223 | @Override |
219 | public boolean isMutable() { | 224 | public boolean isMutable() { |
220 | return true; | 225 | return true; |
@@ -381,7 +386,9 @@ public final class Inv12 extends BaseGeneratedEMFQuerySpecification<Inv12.Matche | |||
381 | * @return the (partial) match object. | 386 | * @return the (partial) match object. |
382 | * | 387 | * |
383 | */ | 388 | */ |
384 | public Inv12.Match newMatch(); | 389 | public Inv12.Match newMatch(final Tax_Payer pTp) { |
390 | return Inv12.Match.newMatch(pTp); | ||
391 | } | ||
385 | 392 | ||
386 | /** | 393 | /** |
387 | * Retrieve the set of values that occur in matches for tp. | 394 | * Retrieve the set of values that occur in matches for tp. |
@@ -516,7 +523,7 @@ public final class Inv12 extends BaseGeneratedEMFQuerySpecification<Inv12.Matche | |||
516 | private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { | 523 | private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { |
517 | private static final Inv12.GeneratedPQuery INSTANCE = new GeneratedPQuery(); | 524 | private static final Inv12.GeneratedPQuery INSTANCE = new GeneratedPQuery(); |
518 | 525 | ||
519 | private final PParameter parameter_tp; | 526 | private final PParameter parameter_tp = new PParameter("tp", "Taxation.Tax_Payer", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Tax_Payer")), PParameterDirection.INOUT); |
520 | 527 | ||
521 | private final List<PParameter> parameters = Arrays.asList(parameter_tp); | 528 | private final List<PParameter> parameters = Arrays.asList(parameter_tp); |
522 | 529 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv13.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv13.java index c162969f..a4aea47c 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv13.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv13.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv15.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv15.java index 50799179..3bfab503 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv15.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv15.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv17.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv17.java index 8019db8c..4a10d4f4 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv17.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv17.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv20.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv20.java index 2d5bd266..6fcc3b7d 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv20.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv20.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv33.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv33.java index f90cca26..1672290c 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv33.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv33.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv34.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv34.java index 89a24686..b9b28986 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv34.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv34.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv35.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv35.java index b5da21b4..c67325ac 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv35.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv35.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv47.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv47.java index d86f31c9..10ba19d6 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv47.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv47.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv48.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv48.java index 66c66988..67133328 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv48.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv48.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv49.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv49.java index 3f8b975e..66bca24a 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv49.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv49.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_eligAll.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_eligAll.java index 89ae2bcc..0bfffe93 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_eligAll.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_eligAll.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_hasAll.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_hasAll.java index 66e47407..90deb92d 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_hasAll.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_hasAll.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv05_inRange.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv05_inRange.java index 4c2a7299..aea94873 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv05_inRange.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv05_inRange.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
@@ -344,7 +344,9 @@ public final class X_inv05_inRange extends BaseGeneratedEMFQuerySpecification<X_ | |||
344 | * @return true if the input is a valid (partial) match of the pattern. | 344 | * @return true if the input is a valid (partial) match of the pattern. |
345 | * | 345 | * |
346 | */ | 346 | */ |
347 | public boolean hasMatch(); | 347 | public boolean hasMatch(final Income pInc) { |
348 | return rawHasMatch(new Object[]{pInc}); | ||
349 | } | ||
348 | 350 | ||
349 | /** | 351 | /** |
350 | * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. | 352 | * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. |
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_inRange.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_inRange.java index 7974c256..b3efea21 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_inRange.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_inRange.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_noType.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_noType.java index 2bffe499..451d7d66 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_noType.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_noType.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_notEI.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_notEI.java index 4b4029a8..07236028 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_notEI.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_notEI.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incNotOver100.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incNotOver100.java index 35b30b0f..995946eb 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incNotOver100.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incNotOver100.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
@@ -11,11 +11,14 @@ import java.util.List; | |||
11 | import java.util.Objects; | 11 | import java.util.Objects; |
12 | import java.util.Optional; | 12 | import java.util.Optional; |
13 | import java.util.Set; | 13 | import java.util.Set; |
14 | import java.util.function.Consumer; | ||
15 | import java.util.stream.Collectors; | ||
14 | import java.util.stream.Stream; | 16 | import java.util.stream.Stream; |
15 | import org.apache.log4j.Logger; | 17 | import org.apache.log4j.Logger; |
16 | import org.eclipse.emf.ecore.EClass; | 18 | import org.eclipse.emf.ecore.EClass; |
17 | import org.eclipse.emf.ecore.EDataType; | 19 | import org.eclipse.emf.ecore.EDataType; |
18 | import org.eclipse.viatra.query.runtime.api.IPatternMatch; | 20 | import org.eclipse.viatra.query.runtime.api.IPatternMatch; |
21 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification; | ||
19 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; | 22 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; |
20 | import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; | 23 | import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; |
21 | import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; | 24 | import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; |
@@ -36,6 +39,7 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeCo | |||
36 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; | 39 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; |
37 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; | 40 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; |
38 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; | 41 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; |
42 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | ||
39 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | 43 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; |
40 | import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; | 44 | import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; |
41 | 45 | ||
@@ -312,7 +316,9 @@ public final class X_inv11_incNotOver100 extends BaseGeneratedEMFQuerySpecificat | |||
312 | * @return matches represented as a Match object. | 316 | * @return matches represented as a Match object. |
313 | * | 317 | * |
314 | */ | 318 | */ |
315 | public Collection<X_inv11_incNotOver100.Match> getAllMatches(); | 319 | public Collection<X_inv11_incNotOver100.Match> getAllMatches(final Expense pExp) { |
320 | return rawStreamAllMatches(new Object[]{pExp}).collect(Collectors.toSet()); | ||
321 | } | ||
316 | 322 | ||
317 | /** | 323 | /** |
318 | * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. | 324 | * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. |
@@ -368,7 +374,9 @@ public final class X_inv11_incNotOver100 extends BaseGeneratedEMFQuerySpecificat | |||
368 | * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked | 374 | * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked |
369 | * | 375 | * |
370 | */ | 376 | */ |
371 | public boolean forOneArbitraryMatch(); | 377 | public boolean forOneArbitraryMatch(final Expense pExp, final Consumer<? super X_inv11_incNotOver100.Match> processor) { |
378 | return rawForOneArbitraryMatch(new Object[]{pExp}, processor); | ||
379 | } | ||
372 | 380 | ||
373 | /** | 381 | /** |
374 | * Returns a new (partial) match. | 382 | * Returns a new (partial) match. |
@@ -381,6 +389,72 @@ public final class X_inv11_incNotOver100 extends BaseGeneratedEMFQuerySpecificat | |||
381 | public X_inv11_incNotOver100.Match newMatch(final Expense pExp) { | 389 | public X_inv11_incNotOver100.Match newMatch(final Expense pExp) { |
382 | return X_inv11_incNotOver100.Match.newMatch(pExp); | 390 | return X_inv11_incNotOver100.Match.newMatch(pExp); |
383 | } | 391 | } |
392 | |||
393 | /** | ||
394 | * Retrieve the set of values that occur in matches for exp. | ||
395 | * @return the Set of all values or empty set if there are no matches | ||
396 | * | ||
397 | */ | ||
398 | protected Stream<Expense> rawStreamAllValuesOfexp(final Object[] parameters) { | ||
399 | return rawStreamAllValues(POSITION_EXP, parameters).map(Expense.class::cast); | ||
400 | } | ||
401 | |||
402 | /** | ||
403 | * Retrieve the set of values that occur in matches for exp. | ||
404 | * @return the Set of all values or empty set if there are no matches | ||
405 | * | ||
406 | */ | ||
407 | public Set<Expense> getAllValuesOfexp() { | ||
408 | return rawStreamAllValuesOfexp(emptyArray()).collect(Collectors.toSet()); | ||
409 | } | ||
410 | |||
411 | /** | ||
412 | * Retrieve the set of values that occur in matches for exp. | ||
413 | * @return the Set of all values or empty set if there are no matches | ||
414 | * | ||
415 | */ | ||
416 | public Stream<Expense> streamAllValuesOfexp() { | ||
417 | return rawStreamAllValuesOfexp(emptyArray()); | ||
418 | } | ||
419 | |||
420 | @Override | ||
421 | protected X_inv11_incNotOver100.Match tupleToMatch(final Tuple t) { | ||
422 | try { | ||
423 | return X_inv11_incNotOver100.Match.newMatch((Expense) t.get(POSITION_EXP)); | ||
424 | } catch(ClassCastException e) { | ||
425 | LOGGER.error("Element(s) in tuple not properly typed!",e); | ||
426 | return null; | ||
427 | } | ||
428 | } | ||
429 | |||
430 | @Override | ||
431 | protected X_inv11_incNotOver100.Match arrayToMatch(final Object[] match) { | ||
432 | try { | ||
433 | return X_inv11_incNotOver100.Match.newMatch((Expense) match[POSITION_EXP]); | ||
434 | } catch(ClassCastException e) { | ||
435 | LOGGER.error("Element(s) in array not properly typed!",e); | ||
436 | return null; | ||
437 | } | ||
438 | } | ||
439 | |||
440 | @Override | ||
441 | protected X_inv11_incNotOver100.Match arrayToMatchMutable(final Object[] match) { | ||
442 | try { | ||
443 | return X_inv11_incNotOver100.Match.newMutableMatch((Expense) match[POSITION_EXP]); | ||
444 | } catch(ClassCastException e) { | ||
445 | LOGGER.error("Element(s) in array not properly typed!",e); | ||
446 | return null; | ||
447 | } | ||
448 | } | ||
449 | |||
450 | /** | ||
451 | * @return the singleton instance of the query specification of this pattern | ||
452 | * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded | ||
453 | * | ||
454 | */ | ||
455 | public static IQuerySpecification<X_inv11_incNotOver100.Matcher> querySpecification() { | ||
456 | return X_inv11_incNotOver100.instance(); | ||
457 | } | ||
384 | } | 458 | } |
385 | 459 | ||
386 | private X_inv11_incNotOver100() { | 460 | private X_inv11_incNotOver100() { |
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incOver100.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incOver100.java index 27f7a2dc..65ae5dd6 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incOver100.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incOver100.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notNonRes.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notNonRes.java index 1c0e5109..96aea5e8 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notNonRes.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notNonRes.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
@@ -30,6 +30,7 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; | |||
30 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; | 30 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; |
31 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; | 31 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; |
32 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; | 32 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; |
33 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; | ||
33 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; | 34 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; |
34 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | 35 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; |
35 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | 36 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; |
@@ -499,7 +500,7 @@ public final class X_inv12_notNonRes extends BaseGeneratedEMFQuerySpecification< | |||
499 | private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { | 500 | private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { |
500 | private static final X_inv12_notNonRes.GeneratedPQuery INSTANCE = new GeneratedPQuery(); | 501 | private static final X_inv12_notNonRes.GeneratedPQuery INSTANCE = new GeneratedPQuery(); |
501 | 502 | ||
502 | private final PParameter parameter_tp; | 503 | private final PParameter parameter_tp = new PParameter("tp", "Taxation.Non_Resident_Tax_Payer", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Non_Resident_Tax_Payer")), PParameterDirection.INOUT); |
503 | 504 | ||
504 | private final List<PParameter> parameters = Arrays.asList(parameter_tp); | 505 | private final List<PParameter> parameters = Arrays.asList(parameter_tp); |
505 | 506 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notZZ.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notZZ.java index 68a4098f..f8e7da17 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notZZ.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notZZ.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv13.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv13.java index ac0dd914..42afdd70 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv13.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv13.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv15.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv15.java index 70d0a290..d162542d 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv15.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv15.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv47.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv47.java index c1477d21..c602f8d4 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv47.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv47.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_3.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_3.java index 2a522290..913e9c7e 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_3.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_3.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_Dis.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_Dis.java index 2013f033..08de1250 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_Dis.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_Dis.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_notDis.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_notDis.java index 678a96d3..21dcc068 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_notDis.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_notDis.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_1.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_1.java index e05ec5cd..67915440 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_1.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_1.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_2.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_2.java index 43ce44b4..66decdb4 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_2.java +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_2.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql | 2 | * Generated from platform:/resource/case.study.pledge.run/src/queries/case_study_A.vql |
3 | */ | 3 | */ |
4 | package queries; | 4 | package queries; |
5 | 5 | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.RunGenerator.xtendbin b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.RunGenerator.xtendbin index 325fee79..e2021169 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.RunGenerator.xtendbin +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.RunGenerator.xtendbin | |||
Binary files differ | |||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.gitignore index bd13352d..8e503b4a 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.gitignore +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.gitignore | |||
@@ -1,2 +1,4 @@ | |||
1 | /.GenerateScenarios.java._trace | 1 | /.GenerateScenarios.java._trace |
2 | /.checkQueries.java._trace | 2 | /.checkQueries.java._trace |
3 | /.RunGenerator.xtendbin | ||
4 | /GenerateScenarios.java | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/.project b/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/.project index d5638068..19d0f33d 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/.project +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/.project | |||
@@ -1,6 +1,6 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <projectDescription> | 2 | <projectDescription> |
3 | <name>case.study.a.instances</name> | 3 | <name>case.study.pledge.instances</name> |
4 | <comment></comment> | 4 | <comment></comment> |
5 | <projects> | 5 | <projects> |
6 | </projects> | 6 | </projects> |