Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example')
-rw-r--r--plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Checks.chk9
-rw-r--r--plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Extensions.ext7
-rw-r--r--plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/GeneratorExtensions.ext10
-rw-r--r--plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Model.xmi15
-rw-r--r--plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Template.xpt25
-rw-r--r--plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/generator.oaw34
-rw-r--r--plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/metamodel.ecore22
7 files changed, 122 insertions, 0 deletions
diff --git a/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Checks.chk b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Checks.chk
new file mode 100644
index 00000000..768814b2
--- /dev/null
+++ b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Checks.chk
@@ -0,0 +1,9 @@
+import metamodel;
+
+extension metamodel::Extensions;
+
+context Model ERROR "No entities defined" :
+ types.exists(e|Entity.isInstance(e));
+
+context Entity ERROR "Duplicate entity "+name :
+ model().entities().select(e|e.name==name).size==1; \ No newline at end of file
diff --git a/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Extensions.ext b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Extensions.ext
new file mode 100644
index 00000000..95ecffc1
--- /dev/null
+++ b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Extensions.ext
@@ -0,0 +1,7 @@
+import metamodel;
+
+Model model(Type this) :
+ eContainer;
+
+List[Entity] entities(Model this) :
+ types.typeSelect(Entity); \ No newline at end of file
diff --git a/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/GeneratorExtensions.ext b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/GeneratorExtensions.ext
new file mode 100644
index 00000000..79db57c3
--- /dev/null
+++ b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/GeneratorExtensions.ext
@@ -0,0 +1,10 @@
+import metamodel;
+
+extension metamodel::Extensions reexport;
+
+getter(Feature this) :
+ "get"+name.toFirstUpper();
+
+setter(Feature this) :
+ "set"+name.toFirstUpper();
+
diff --git a/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Model.xmi b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Model.xmi
new file mode 100644
index 00000000..da379a88
--- /dev/null
+++ b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Model.xmi
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="ASCII"?>
+<metamodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:metamodel="http://www.example.org/metamodel" xsi:schemaLocation="http://www.example.org/metamodel metamodel/metamodel.ecore">
+ <types xsi:type="metamodel:Datatype" name="String"/>
+ <types xsi:type="metamodel:Datatype" name="Integer"/>
+ <types xsi:type="metamodel:Entity" name="Person">
+ <features name="name" type="//@types.0"/>
+ <features name="age" type="//@types.1"/>
+ <features name="address" type="//@types.3"/>
+ </types>
+ <types xsi:type="metamodel:Entity" name="Address">
+ <features name="street" type="//@types.0"/>
+ <features name="zip" type="//@types.0"/>
+ <features name="city" type="//@types.0"/>
+ </types>
+</metamodel:Model>
diff --git a/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Template.xpt b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Template.xpt
new file mode 100644
index 00000000..6df7bca5
--- /dev/null
+++ b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/Template.xpt
@@ -0,0 +1,25 @@
+«IMPORT metamodel»
+
+«EXTENSION template::GeneratorExtensions»
+
+«DEFINE main FOR Model»
+«EXPAND javaClass FOREACH entities()»
+«ENDDEFINE»
+
+«DEFINE javaClass FOR Entity»
+ «FILE name+".java"»
+ public class «name» {
+ «FOREACH features AS f»
+ private «f.type.name» «f.name»;
+
+ public void «f.setter()»(«f.type.name» «f.name») {
+ this.«f.name» = «f.name»;
+ }
+
+ public «f.type.name» «f.getter()»() {
+ return «f.name»;
+ }
+ «ENDFOREACH»
+ }
+ «ENDFILE»
+«ENDDEFINE» \ No newline at end of file
diff --git a/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/generator.oaw b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/generator.oaw
new file mode 100644
index 00000000..564016ae
--- /dev/null
+++ b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/generator.oaw
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<workflow>
+ <property name="model" value="PROJECTNAME/src/Model.xmi" />
+ <property name="src-gen" value="src-gen" />
+
+ <!-- set up EMF for standalone execution -->
+ <bean class="org.eclipse.mwe.emf.StandaloneSetup" >
+ <platformUri value=".."/>
+ </bean>
+
+ <!-- load model and store it in slot 'model' -->
+ <component class="org.eclipse.mwe.emf.Reader">
+ <uri value="platform:/resource/${model}" />
+ <modelSlot value="model" />
+ </component>
+
+ <!-- check model -->
+ <component class="org.eclipse.xtend.check.CheckComponent">
+ <metaModel id="mm"
+ class="org.eclipse.m2t.type.emf.EmfRegistryMetaModel"/>
+ <checkFile value="metamodel::Checks" />
+ <emfAllChildrenSlot value="model" />
+ </component>
+
+ <!-- generate code -->
+ <component class="org.eclipse.xtend.xpand2.Generator">
+ <metaModel idRef="mm"/>
+ <expand
+ value="template::Template::main FOR model" />
+ <outlet path="${src-gen}" >
+ <postprocessor class="org.eclipse.xtend.xpand2.output.JavaBeautifier" />
+ </outlet>
+ </component>
+</workflow>
diff --git a/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/metamodel.ecore b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/metamodel.ecore
new file mode 100644
index 00000000..ea563857
--- /dev/null
+++ b/plugins/org.eclipse.xtend.shared.ui/src/org/eclipse/xtend/shared/ui/wizards/example/metamodel.ecore
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="metamodel"
+ nsURI="http://www.example.org/metamodel" nsPrefix="metamodel">
+ <eClassifiers xsi:type="ecore:EClass" name="Model">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
+ eType="#//Type" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Type" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Datatype" eSuperTypes="#//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Entity" eSuperTypes="#//Type">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="features" upperBound="-1"
+ eType="#//Feature" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Feature">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//Type"/>
+ </eClassifiers>
+</ecore:EPackage>

Back to the top