Browse Source

Added validation rule:
Buildin event specs are not allowed for transitions.

Andreas Mülder 14 years ago
parent
commit
59cf4e529d

+ 22 - 7
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextJavaValidator.java

@@ -1,13 +1,28 @@
 package org.yakindu.sct.model.stext.validation;
- 
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.xtext.validation.Check;
+import org.eclipse.xtext.validation.CheckType;
+import org.yakindu.sct.model.sgraph.Trigger;
+import org.yakindu.sct.model.stext.stext.BuiltinEventSpec;
+import org.yakindu.sct.model.stext.stext.EventSpec;
+import org.yakindu.sct.model.stext.stext.ReactionTrigger;
+import org.yakindu.sct.model.stext.stext.StextPackage;
+import org.yakindu.sct.model.stext.stext.TransitionReaction;
 
 public class STextJavaValidator extends AbstractSTextJavaValidator {
 
-//	@Check
-//	public void checkGreetingStartsWithCapital(Greeting greeting) {
-//		if (!Character.isUpperCase(greeting.getName().charAt(0))) {
-//			warning("Name should start with a capital", MyDslPackage.Literals.GREETING__NAME);
-//		}
-//	}
+	@Check(CheckType.FAST)
+	public void checkTransitionReactionTrigger(TransitionReaction reaction) {
 
+		Trigger trigger = reaction.getTrigger();
+		ReactionTrigger reactionTrigger = (ReactionTrigger) trigger;
+		EList<EventSpec> triggers = reactionTrigger.getTriggers();
+		for (EventSpec eventSpec : triggers) {
+			if (eventSpec instanceof BuiltinEventSpec) {
+				error("Buildin event specs are not allowed for transitions.",
+						StextPackage.Literals.REACTION_TRIGGER__TRIGGERS);
+			}
+		}
+	}
 }