Skip to content

Commit

Permalink
Add a metamodel for Timed FSM
Browse files Browse the repository at this point in the history
  • Loading branch information
fcoulon committed Feb 19, 2015
1 parent ad9b437 commit 19c2b4a
Show file tree
Hide file tree
Showing 43 changed files with 5,830 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ Require-Bundle: org.eclipse.xtend.lib,
com.google.guava,
org.eclipse.xtext.xbase.lib,
fr.inria.diverse.k3.al.annotationprocessor.plugin;bundle-version="3.0.0",
fr.inria.diverse.examples.fsm.metamodel;bundle-version="0.0.0";visibility:=reexport,
fr.inria.diverse.example.fsm.metamodel.timed;bundle-version="0.0.0";visibility:=reexport,
fr.inria.diverse.examples.fsm.interfaces;bundle-version="1.0.0"

Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package finitestatemachines.timed

import FSM.interfaces.Context
import finitestatemachines.Fork
import finitestatemachines.InitialState
import finitestatemachines.Join
import finitestatemachines.State
import finitestatemachines.StateMachine
import finitestatemachines.Transition
import finitestatemachinestimed.Fork
import finitestatemachinestimed.InitialState
import finitestatemachinestimed.Join
import finitestatemachinestimed.State
import finitestatemachinestimed.StateMachine
import finitestatemachinestimed.Transition
import fr.inria.diverse.k3.al.annotationprocessor.Aspect
import fr.inria.diverse.k3.al.annotationprocessor.OverrideAspectMethod
import java.util.ArrayList
Expand Down Expand Up @@ -157,9 +157,6 @@ class StateAspect {

@Aspect(className=Transition)
class TransitionAspect {

int time = 0

def public void process(Context context) {
Context.stateWorking(_self.time)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import static extension finitestatemachines.timed.StateAspect.*

class ForkThread extends Thread {

finitestatemachines.State state
finitestatemachinestimed.State state
Context context

new (finitestatemachines.State _state, Context _context){
new (finitestatemachinestimed.State _state, Context _context){
state = _state
context = _context
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ import com.itextpdf.awt.DefaultFontMapper
import java.awt.Graphics2D
import java.awt.geom.Rectangle2D

import finitestatemachines.State
import finitestatemachines.StateMachine
import finitestatemachines.Fork
import finitestatemachines.Join
import finitestatemachinestimed.State
import finitestatemachinestimed.StateMachine
import finitestatemachinestimed.Fork
import finitestatemachinestimed.Join

class Printer {

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
28 changes: 28 additions & 0 deletions examples/fr.inria.diverse.example.fsm.metamodel.timed/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>fr.inria.diverse.example.fsm.metamodel.timed</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: fr.inria.diverse.example.fsm.metamodel.timed;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Export-Package: finitestatemachinestimed,
finitestatemachinestimed.impl,
finitestatemachinestimed.util
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.emf.ecore;visibility:=reexport
Bundle-ActivationPolicy: lazy
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#

bin.includes = .,\
model/,\
META-INF/,\
plugin.xml,\
plugin.properties
jars.compile.order = .
source.. = src/
output.. = bin/
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?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="finitestatemachinestimed" nsURI="http://fr.inria.diverse.examples.fsm.timed" nsPrefix="finitestatemachinestimed">
<eClassifiers xsi:type="ecore:EClass" name="NamedElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StateMachine" eSuperTypes="//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="states" upperBound="-1" eType="//State" containment="true" eOpposite="//State/stateMachine"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="transitions" upperBound="-1" eType="//Transition" containment="true" eOpposite="//Transition/stateMachine"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" upperBound="-1" eType="//Transition" eOpposite="//Transition/source"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="incoming" upperBound="-1" eType="//Transition" eOpposite="//Transition/target"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine" eType="//StateMachine" eOpposite="//StateMachine/states"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="initialTime">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="finalTime">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="//State"/>
<eClassifiers xsi:type="ecore:EClass" name="InitialState" eSuperTypes="//State"/>
<eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1" eType="//State" eOpposite="//State/incoming"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1" eType="//State" eOpposite="//State/outgoing"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="trigger" eType="//Trigger" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine" lowerBound="1" eType="//StateMachine" eOpposite="//StateMachine/transitions"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="initialTime">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="finalTime">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="time">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimedTransition" eSuperTypes="//Transition">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="duration">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Trigger">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="expression" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Pseudostate" eSuperTypes="//State"/>
<eClassifiers xsi:type="ecore:EClass" name="Fork" eSuperTypes="//Pseudostate"/>
<eClassifiers xsi:type="ecore:EClass" name="Join" eSuperTypes="//Pseudostate"/>
</ecore:EPackage>
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="ASCII"?>
<genmodel:GenModel 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" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/fr.inria.diverse.example.fsm.metamodel.timed/src" modelPluginID="fr.inria.diverse.example.fsm.metamodel.timed" modelName="Fsm" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" importerID="org.eclipse.emf.importer.ecore" complianceLevel="7.0" copyrightFields="false" operationReflection="true" importOrganizing="true">
<foreignModel>fsm.ecore</foreignModel>
<genPackages prefix="Finitestatemachinestimed" disposableProviderFactory="true">
<ecorePackage href="fsm.ecore#/"/>
<genClasses>
<ecoreClass href="fsm.ecore#//NamedElement"/>
<genFeatures createChild="false">
<ecoreFeature xsi:type="ecore:EAttribute" href="fsm.ecore#//NamedElement/name"/>
</genFeatures>
</genClasses>
<genClasses>
<ecoreClass href="fsm.ecore#//StateMachine"/>
<genFeatures property="None" children="true" createChild="true">
<ecoreFeature xsi:type="ecore:EReference" href="fsm.ecore#//StateMachine/states"/>
</genFeatures>
<genFeatures property="None" children="true" createChild="true">
<ecoreFeature xsi:type="ecore:EReference" href="fsm.ecore#//StateMachine/transitions"/>
</genFeatures>
</genClasses>
<genClasses>
<ecoreClass href="fsm.ecore#//State"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true">
<ecoreFeature xsi:type="ecore:EReference" href="fsm.ecore#//State/outgoing"/>
</genFeatures>
<genFeatures notify="false" createChild="false" propertySortChoices="true">
<ecoreFeature xsi:type="ecore:EReference" href="fsm.ecore#//State/incoming"/>
</genFeatures>
<genFeatures property="None" notify="false" createChild="false">
<ecoreFeature xsi:type="ecore:EReference" href="fsm.ecore#//State/stateMachine"/>
</genFeatures>
<genFeatures createChild="false">
<ecoreFeature xsi:type="ecore:EAttribute" href="fsm.ecore#//State/initialTime"/>
</genFeatures>
<genFeatures createChild="false">
<ecoreFeature xsi:type="ecore:EAttribute" href="fsm.ecore#//State/finalTime"/>
</genFeatures>
</genClasses>
<genClasses>
<ecoreClass href="fsm.ecore#//FinalState"/>
</genClasses>
<genClasses>
<ecoreClass href="fsm.ecore#//InitialState"/>
</genClasses>
<genClasses>
<ecoreClass href="fsm.ecore#//Transition"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true">
<ecoreFeature xsi:type="ecore:EReference" href="fsm.ecore#//Transition/target"/>
</genFeatures>
<genFeatures notify="false" createChild="false" propertySortChoices="true">
<ecoreFeature xsi:type="ecore:EReference" href="fsm.ecore#//Transition/source"/>
</genFeatures>
<genFeatures property="None" children="true" createChild="true">
<ecoreFeature xsi:type="ecore:EReference" href="fsm.ecore#//Transition/trigger"/>
</genFeatures>
<genFeatures property="None" notify="false" createChild="false">
<ecoreFeature xsi:type="ecore:EReference" href="fsm.ecore#//Transition/stateMachine"/>
</genFeatures>
<genFeatures createChild="false">
<ecoreFeature xsi:type="ecore:EAttribute" href="fsm.ecore#//Transition/initialTime"/>
</genFeatures>
<genFeatures createChild="false">
<ecoreFeature xsi:type="ecore:EAttribute" href="fsm.ecore#//Transition/finalTime"/>
</genFeatures>
<genFeatures createChild="false">
<ecoreFeature xsi:type="ecore:EAttribute" href="fsm.ecore#//Transition/time"/>
</genFeatures>
</genClasses>
<genClasses>
<ecoreClass href="fsm.ecore#//TimedTransition"/>
<genFeatures createChild="false">
<ecoreFeature xsi:type="ecore:EAttribute" href="fsm.ecore#//TimedTransition/duration"/>
</genFeatures>
</genClasses>
<genClasses>
<ecoreClass href="fsm.ecore#//Trigger"/>
<genFeatures createChild="false">
<ecoreFeature xsi:type="ecore:EAttribute" href="fsm.ecore#//Trigger/expression"/>
</genFeatures>
</genClasses>
<genClasses>
<ecoreClass href="fsm.ecore#//Pseudostate"/>
</genClasses>
<genClasses>
<ecoreClass href="fsm.ecore#//Fork"/>
</genClasses>
<genClasses>
<ecoreClass href="fsm.ecore#//Join"/>
</genClasses>
</genPackages>
</genmodel:GenModel>
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#

pluginName = Fsm Model
providerName = www.example.org
17 changes: 17 additions & 0 deletions examples/fr.inria.diverse.example.fsm.metamodel.timed/plugin.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>

<!--
-->

<plugin>

<extension point="org.eclipse.emf.ecore.generated_package">
<!-- @generated fsm -->
<package
uri="http://fr.inria.diverse.examples.fsm.timed"
class="finitestatemachinestimed.FinitestatemachinestimedPackage"
genModel="model/fsm.genmodel"/>
</extension>

</plugin>
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
*/
package finitestatemachinestimed;


/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Final State</b></em>'.
* <!-- end-user-doc -->
*
*
* @see finitestatemachinestimed.FinitestatemachinestimedPackage#getFinalState()
* @model
* @generated
*/
public interface FinalState extends State {
} // FinalState
Loading

0 comments on commit 19c2b4a

Please sign in to comment.