benjamin.schwertfeger@gmail.com пре 14 година
родитељ
комит
c12da6e2c4

+ 19 - 19
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/CustomCycleBasedStatemachine.xpt

@@ -45,12 +45,12 @@ Contributors:
 
 «DEFINE ActionCode FOR ScheduleTimeEvent-»
 «getComment()-»
-getTimerService().setTimer(«timeEvent.getName()», «timeValue.toCode()», cycleStartTime);
+getTimerService().setTimer(«timeEvent.getEventName()», «timeValue.toCode()», cycleStartTime);
 «ENDDEFINE»
 
 «DEFINE ActionCode FOR UnscheduleTimeEvent-»
 «getComment()-»
-getTimerService().resetTimer(«timeEvent.getName()»);
+getTimerService().resetTimer(«timeEvent.getEventName()»);
 «ENDDEFINE»
 
 «DEFINE ActionCode FOR Execution-»
@@ -221,17 +221,17 @@ else {
 	«FOREACH getInternalScopeEvents() AS event-»
 	
 		«IF !event.type.isVoid()-»
-			private void raise«event.name.toFirstUpper()»(«event.type.getJavaType()» value) {
-				«event.getName()».setValue(value);
-				getOccuredEvents().add(«event.getName()»);
+			private void raise«event.getEventName()»(«event.type.getJavaType()» value) {
+				«event.getEventName()».setValue(value);
+				getOccuredEvents().add(«event.getEventName()»);
 			}
 		«ELSE-»
-			private void raise«event.name.toFirstUpper()»() {
-				getOccuredEvents().add(«event.getName()»);
+			private void raise«event.getEventName()»() {
+				getOccuredEvents().add(«event.getEventName()»);
 			}
 		«ENDIF-»
-		private «event.getEventType()» get«event.getName()»() {
-			return «event.getName()»;
+		private «event.getEventType()» get«event.getEventName()»() {
+			return «event.getEventName()»;
 		}
 	
 	«ENDFOREACH-»
@@ -253,18 +253,18 @@ else {
 	
 	«IF event.direction == Direction::IN-»
 		«IF !event.type.isVoid()-»
-		public void raise«event.name.toFirstUpper()»(«event.type.getJavaType()» value) {
-			getDefaultInterface().raise«event.name.toFirstUpper()»(value);
+		public void raise«event.getEventName()»(«event.type.getJavaType()» value) {
+			getDefaultInterface().raise«event.getEventName()»(value);
 		}
 		«ELSE»
-		public void raise«event.name.toFirstUpper()»() {
-			getDefaultInterface().raise«event.name.toFirstUpper()»();
+		public void raise«event.getEventName()»() {
+			getDefaultInterface().raise«event.getEventName()»();
 		}
 		«ENDIF-»
 	«ENDIF-»
 	
 	«IF event.direction ==  Direction::OUT-»
-	public boolean isRaised«event.name.toFirstUpper()»() {
+	public boolean isRaised«event.getEventName()»() {
 		return getOutEvents().contains(«event.getter()»);
 	}
 	
@@ -340,7 +340,7 @@ public class 
 	«IF getInternalScopeEvents().size > 0-»
 	private enum Events {
 	«FOREACH getInternalScopeEvents() AS event-»
-		«event.name.toFirstUpper()»,
+		«event.getEventName()»,
 	«ENDFOREACH-»
 	}
 	«ENDIF-»
@@ -348,17 +348,17 @@ public class 
 	«IF isTimedStatemachine()-»
 	private enum TimeEvents {
 	«FOREACH getTimeEvents() AS timeEvent-»
-		«timeEvent.getName().toFirstUpper()»,
+		«timeEvent.getEventName().toFirstUpper()»,
 	«ENDFOREACH-»
 	}
 	«ENDIF-»
 	
 	«FOREACH getInternalScopeEvents() AS event-»
-	private final «event.getEventType()» «event.getName()» = new «event.getEventType()»(«event.getCreationSignature()»); 
+	private final «event.getEventType()» «event.getEventName()» = new «event.getEventType()»(«event.getCreationSignature()»); 
 	«ENDFOREACH-»
 	
 	«FOREACH getTimeEvents() AS timeEvent-»
-	private static final TimeEvent<TimeEvents> «timeEvent.getName()» = new TimeEvent<TimeEvents>(TimeEvents.«timeEvent.getName().toFirstUpper()»,«((Scope)timeEvent.eContainer).getOffset()», «timeEvent.periodic»); 
+	private static final TimeEvent<TimeEvents> «timeEvent.getEventName()» = new TimeEvent<TimeEvents>(TimeEvents.«timeEvent.getEventName().toFirstUpper()»,«((Scope)timeEvent.eContainer).getOffset()», «timeEvent.periodic»); 
 	«ENDFOREACH»
 	
 	public enum State {
@@ -413,7 +413,7 @@ public class 
 			«ENDFOREACH-»
 		«ENDIF-»
 		«FOREACH getTimeEvents() AS timeEvent-»
-			«timeEvent.getName()».setStatemachine(this);
+			«timeEvent.getEventName()».setStatemachine(this);
 		«ENDFOREACH»
 	}
 	

+ 4 - 4
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/CustomEventBasedInterfaceImpl.xpt

@@ -29,13 +29,13 @@ public class 
 		
 	«FOREACH declarations.typeSelect(EventDefinition) AS event-»
 		«IF !event.type.isVoid()-»
-		public void raise«event.name.toFirstUpper()»(«event.type.getJavaType()» value) {
-			super.raise«event.name.toFirstUpper()»(value);
+		public void raise«event.getEventName()»(«event.type.getJavaType()» value) {
+			super.raise«event.getEventName()»(value);
 			statemachine.runCycle();
 		}
 		«ELSE-»
-		public void raise«event.name.toFirstUpper()»() {
-			super.raise«event.name.toFirstUpper()»();
+		public void raise«event.getEventName()»() {
+			super.raise«event.getEventName()»();
 		statemachine.runCycle();
 		}
 		«ENDIF-»

+ 2 - 2
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/CustomIInterfaceImpl.xpt

@@ -33,9 +33,9 @@ public interface 
 	«FOREACH declarations.typeSelect(EventDefinition) AS event-»
 	«IF event.direction == Direction::OUT-»
 		«IF !event.type.isVoid()-»
-		public void raise«event.name.toFirstUpper()»(«event.type.getJavaType()» value);
+		public void raise«event.getEventName()»(«event.type.getJavaType()» value);
 		«ELSE»
-		public void raise«event.name.toFirstUpper()»();
+		public void raise«event.getEventName()»();
 		«ENDIF-»
 	«ELSE-»
 		public «event.getEventType()» «event.getter()»;

+ 5 - 5
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/CustomInterface.xpt

@@ -39,7 +39,7 @@ public interface 
 	«IF declarations.typeSelect(EventDefinition).size > 0-»
 	public enum Events {
 	«FOREACH declarations.typeSelect(EventDefinition) AS event-»
-		«event.name.toFirstUpper()»,
+		«event.getEventName()»,
 	«ENDFOREACH-»
 	}
 	«ENDIF-»
@@ -55,14 +55,14 @@ public interface 
 	«FOREACH declarations.typeSelect(EventDefinition) AS event-»
 	«IF  event.direction ==  Direction::IN-»
 		«IF !event.type.isVoid()-»
-			public void raise«event.name.toFirstUpper()»(«event.type.getJavaType()» value);
+			public void raise«event.getEventName()»(«event.type.getJavaType()» value);
 		«ELSE»
-			public void raise«event.name.toFirstUpper()»();
+			public void raise«event.getEventName()»();
 		«ENDIF-»
 	«ELSEIF event.direction ==  Direction::OUT-»
-	public boolean isRaised«event.name.toFirstUpper()»();
+	public boolean isRaised«event.getEventName()»();
 		
-	public «event.getEventType()» get«event.getName()»();
+	public «event.getEventType()» getEvent«event.getEventName()»();
 	
 	«ENDIF-»
 	«ENDFOREACH-»

+ 5 - 5
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/CustomInterfaceImpl.xpt

@@ -54,7 +54,7 @@ public class 
 		«ENDIF-»
 	«ELSE-»
 		«FOREACH declarations.typeSelect(EventDefinition) AS event-»
-		protected final «event.getEventType()» «event.getName()» = new «event.getEventType()»(«event.getCreationSignature()»);
+		protected final «event.getEventType()» «event.getEventName()» = new «event.getEventType()»(«event.getCreationSignature()»);
 		«ENDFOREACH-»
 	«ENDIF-» 
 	
@@ -96,7 +96,7 @@ public class 
 	«FOREACH declarations.typeSelect(EventDefinition) AS event-»
 	
 	«IF !event.type.isVoid()-»
-	public void raise«event.name.toFirstUpper()»(«event.type.getJavaType()» value) {
+	public void raise«event.getEventName()»(«event.type.getJavaType()» value) {
 		«event.getter()».setValue(value);
 		statemachine.getOccuredEvents().add(«event.getter()»);
 		«IF event.direction ==  Direction::OUT-»
@@ -107,7 +107,7 @@ public class 
 		«ENDIF-»
 	}
 	«ELSE»
-	public void raise«event.name.toFirstUpper()»() {
+	public void raise«event.getEventName()»() {
 		statemachine.getOccuredEvents().add(«event.getter()»);
 		«IF event.direction ==  Direction::OUT-»
 			statemachine.getOutEvents().add(«event.getter()»);
@@ -137,12 +137,12 @@ public class 
 				«ENDIF-»
 			«ENDIF-»
 		«ELSE-»
-		return «event.getName()»;
+		return «event.getEventName()»;
 		«ENDIF-»
 	}
 	
 	«IF event.direction ==  Direction::OUT-»
-	public boolean isRaised«event.name.toFirstUpper()»() {
+	public boolean isRaised«event.getEventName()»() {
 		return statemachine.getOutEvents().contains(«event.getter()»);
 	}
 	«ENDIF-»

+ 23 - 12
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/Expression.ext

@@ -24,6 +24,15 @@ String toCode(Void o, String statechartReference) :
 String toCode(Expression expression) : 
 	"/* Unknown expression: "+expression+" */"; 
 
+String toCode(TypedElementReferenceExpression ref) :
+	ref.reference.toCode();
+String toCode(base::NamedElement ref) :
+	"/* toCode not defined for: "+ref+" */";
+String toCode(types::Feature ref) :
+	"/* toCode not defined for: "+ref+" */";
+String toCode(FeatureCall ref) :
+	ref.feature.toCode();
+
 //polymorphic placeholder (abstract rule) 
 String toCode(Statement statement) : 
 	"/* Unknown statement: "+statement+" */";
@@ -36,10 +45,10 @@ String toCode(PrimitiveValueExpression primValue) :
 	primValue.value.toCode();
 	
 String getterCall(AssignmentExpression this) :
-	getContext(varRef).toFirstLower()+"getVar"+ varRef.getName().toFirstUpper()+ "()";
+	getContext(varRef).toFirstLower()+"get"+ varRef.getVarName().toFirstUpper()+ "()";
 	
 String setterCall(AssignmentExpression this, String expression) :
-	getContext(varRef).toFirstLower()+"setVar" + varRef.getName().toFirstUpper() + "(" + expression + ");";
+	getContext(varRef).toFirstLower()+"set" + varRef.getVarName().toFirstUpper() + "(" + expression + ");";
 
 /* Assignment */
 String toCode(AssignmentExpression this) :
@@ -69,7 +78,7 @@ String toCode(RealLiteral expression) :
 	expression.value.toString();
 
 String toCode(EventValueReferenceExpression expression):
-	expression.value.getContext().toFirstLower()+"get"+expression.value.getName()+"().getValue()";
+	expression.value.getContext().toFirstLower()+"getEvent"+expression.value.getEventName()+"().getValue()";
 
 /* Logical Expressions */
 String toCode(LogicalOrExpression expression) :
@@ -102,13 +111,15 @@ String toCode(NumericalMultiplyDivideExpression expression) :
 String toCode(NumericalUnaryExpression expression) :
     getOperator(expression.operator) + " ( " + expression.operand.toCode() + " ) ";
 
-String toCode(TypedElementReferenceExpression exp) :
-    if (EventDefinition.isInstance(exp.reference)) then
-    	"occuredEvents.contains("+((EventDefinition)exp.reference).getContext().toFirstLower()+"get"+((EventDefinition)exp.reference).getName()+"())"
-    else if (VariableDefinition.isInstance(exp.reference)) then
-    	getContext((VariableDefinition)exp.reference)+"getVar"+exp.reference.name.toFirstUpper()+"()"
-    else if (TimeEvent.isInstance(exp.reference)) then
-    	"occuredEvents.contains("+getName((TimeEvent)exp.reference)+")";
+String toCode(TimeEvent exp) :
+	"occuredEvents.contains("+getEventName(exp)+")";
+String toCode(VariableDefinition exp) :
+	getContext(exp)+"get"+exp.getVarName()+"()";
+String toCode(EventDefinition exp) :
+	"occuredEvents.contains("+exp.getContext().toFirstLower()+exp.getter()+")";
+
+String toCode(ActiveStateReferenceExpression this):
+	"isStateActive(State."+this.value.getName()+")";
 
 String getOperator(AdditiveOperator operator) : 
     switch(operator) {
@@ -146,9 +157,9 @@ String getOperator(RelationalOperator operator) :
 	
 String toCode(EventRaisingExpression this) :
 	if this.value != null then
-		event.getContext().toFirstLower()+"raise"+event.getName().toFirstUpper()+"("+value.toCode()+");"
+		event.getContext().toFirstLower()+"raise"+event.getEventName()+"("+value.toCode()+");"
 	else
-		event.getContext().toFirstLower()+"raise"+event.getName().toFirstUpper()+"();";
+		event.getContext().toFirstLower()+"raise"+event.getEventName()+"();";
 		
 String getInitialValue(EventDefinition this) :
 	if derivation != null then

+ 45 - 9
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/Naming.ext

@@ -19,8 +19,8 @@ extension org::yakindu::sct::generator::java::templates::GenmodelEntries;
 extension org::yakindu::sct::generator::java::templates::TypeModelExtensions;
 
 //TODO Workaround (WA) for error in Typesystem
-String getNameWA(Declaration this) : this.metaType.getProperty("name").toString();
-String getNameWA(Vertex this) : this.metaType.getProperty("name").toString();
+String getNameWA(Declaration this) : this.metaType.getProperty("name").get(this).toString();
+String getNameWA(Vertex this) : this.metaType.getProperty("name").get(this).toString();
 
 String getStatemachineName(String name) :
 	JAVA org.yakindu.sct.generator.java.features.JavaFeatureConstants.getValidStatemachineName(java.lang.String);
@@ -56,9 +56,9 @@ String getInterfaceParameter(InterfaceScope this) :
 
 String getCreationSignature(EventDefinition this) :
 	if type.isVoid() then
-		"Events."+name.toFirstUpper()+", "+((Scope)eContainer).getOffset()
+		"Events."+this.getEventName()+", "+((Scope)eContainer).getOffset()
 	else
-		"Events."+name.toFirstUpper()+", "+((Scope)eContainer).getOffset()+", "+getInitialValue();
+		"Events."+this.getEventName()+", "+((Scope)eContainer).getOffset()+", "+getInitialValue();
 
 String getEventType(EventDefinition this) :
 	if type.isVoid() then
@@ -80,6 +80,9 @@ String getter(VariableDefinition this) : "get" + getValueName().toFirstUpper() +
 String getName(ExecutionState this) :
 	simpleName.replaceAll(" ","").toFirstUpper();
 	
+String getName(State this) :
+	this.getNameWA().replaceAll(" ","").toFirstUpper();
+	
 String getName(ExecutionNode this) :
 	simpleName.replaceAll(" ","").toFirstUpper();
 
@@ -106,15 +109,29 @@ private getNullSafeRegionName(ExecutionRegion this) :
 String getName(ExecutionFlow this) :
 	name.replaceAll(" ","").toFirstUpper();
 
-String getName(Event this) :
-	"Event"+getNameWA().toFirstUpper();
+String getVarName(VariableDefinition this) :
+	"Var"+name.toFirstUpper();
+String getVarName(base::NamedElement this) : "/* Variable expected, but got: "+this+" */";
+String getVarName(TypedElementReferenceExpression this) : this.reference.getVarName();
+String getVarName(FeatureCall this) : this.feature.getVarName();
+String getVarName(Expression this) : "/* Variable expected, but got Expression: "+this+" */";
+
+
+String getEventName(Event this) :
+	getNameWA().toFirstUpper();
+
+String getEventName(EventDefinition this) :
+	getNameWA().toFirstUpper();
 
-String getName(Expression this) : "/* Event expected, but got Expression: "+this+" */";
+String getEventName(base::NamedElement this) : "/* Event expected, but got: "+this+" */";
+String getEventName(TypedElementReferenceExpression this) : this.reference.getEventName();
+String getEventName(FeatureCall this) : this.feature.getEventName();
+String getEventName(Expression this) : "/* Event expected, but got Expression: "+this+" */";
 
 String getter(Event this) :
-	"get"+getName()+"()";
+	"getEvent"+this.getEventName()+"()";
 
-String getName(TimeEvent this) :
+String getEventName(TimeEvent this) :
 	name.replaceAll(" ","").toFirstUpper();
 				
 cached String functionName(Step step) : 
@@ -172,10 +189,29 @@ String getContext(Variable this) :
 		"get"+getInterfaceImplName((InterfaceScope)eContainer)+"()."
 	else 
 		"";
+String getContext(VariableDefinition this) : 
+	if (InterfaceScope.isInstance(eContainer)) then  
+		"get"+getInterfaceImplName((InterfaceScope)eContainer)+"()."
+	else 
+		"";
 		
 String getContext(Expression this) : 
 	"/* getContext for unknown element: "+this+"*/";
+
+String getContext(TypedElementReferenceExpression this) : 
+	this.reference.getContext();
+
+String getContext(FeatureCall this) : 
+	this.feature.getContext();
+
+String getContext(base::NamedElement this) : 
+	"/* getContext for unknown element: "+this+"*/";
 	
+String getContext(EventDefinition this) : 
+	if (InterfaceScope.isInstance(eContainer)) then  
+		"get"+getInterfaceImplName((InterfaceScope)eContainer)+"()."
+	else 
+		"";
 String getContext(Event this) : 
 	if (InterfaceScope.isInstance(eContainer)) then  
 		"get"+getInterfaceImplName((InterfaceScope)eContainer)+"()."