Parcourir la source

Refactorings of sexec extensions.

markus.muehlbrandt@gmail.com il y a 12 ans
Parent
commit
1e9a0d70e5

+ 13 - 20
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/Navigation.xtend

@@ -7,21 +7,20 @@
   Contributors:
   	Commiters of Yakindu - Initial contribution and API
  */
-package org.yakindu.sct.generator.java
-
-import java.util.ArrayList
-import java.util.List
-import org.yakindu.sct.model.sexec.ExecutionFlow
-import org.yakindu.sct.model.sexec.TimeEvent
-import org.yakindu.sct.model.sgraph.Event
-import org.yakindu.sct.model.sgraph.Scope
-import org.yakindu.sct.model.sgraph.Variable
-import org.yakindu.sct.model.stext.stext.EventDefinition
-import org.yakindu.sct.model.stext.stext.InterfaceScope
-import org.yakindu.sct.model.stext.stext.InternalScope
-import org.yakindu.sct.model.stext.stext.OperationDefinition
-import org.yakindu.sct.model.stext.stext.VariableDefinition
+package org.yakindu.sct.generator.java
+
+import java.util.ArrayList
+import java.util.List
+import org.yakindu.sct.model.sexec.ExecutionFlow
 import org.yakindu.sct.model.sexec.extensions.SExecExtensions
+import org.yakindu.sct.model.sgraph.Event
+import org.yakindu.sct.model.sgraph.Scope
+import org.yakindu.sct.model.sgraph.Variable
+import org.yakindu.sct.model.stext.stext.EventDefinition
+import org.yakindu.sct.model.stext.stext.InterfaceScope
+import org.yakindu.sct.model.stext.stext.InternalScope
+import org.yakindu.sct.model.stext.stext.OperationDefinition
+import org.yakindu.sct.model.stext.stext.VariableDefinition
 
 class Navigation extends SExecExtensions {
 	
@@ -38,12 +37,6 @@ class Navigation extends SExecExtensions {
 		return !outgoingEvents.empty
 	}
 	
-	def getTimeEvents(ExecutionFlow flow) {
-		val timeEvents = new ArrayList<TimeEvent>
-		flow.scopes.forEach[timeEvents.addAll(declarations.filter(typeof(TimeEvent)))]
-		return timeEvents
-	} 
-	
 	def getInternalScopeEvents(ExecutionFlow flow) {
 		val events = new ArrayList<EventDefinition>
 		flow.internalScopes.forEach[events.addAll(eventDefinitions)]

+ 8 - 7
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/extensions/SExecExtensions.xtend

@@ -34,6 +34,7 @@ import org.eclipse.emf.ecore.EObject
 import org.yakindu.sct.model.sexec.Check
 import org.yakindu.sct.model.stext.stext.InterfaceScope
 import org.yakindu.sct.model.sexec.Sequence
+import java.util.LinkedList
 
 class SExecExtensions {
 	
@@ -41,6 +42,10 @@ class SExecExtensions {
 		scopes.filter[declarations.filter( typeof(TimeEvent) ).size > 0].size > 0
 	}
 	
+	def getTimeEvents(ExecutionFlow it) {
+		scopes.fold(new LinkedList<TimeEvent>, [l, s | l += s.declarations.filter(typeof(TimeEvent)) return l])
+	}
+	
 	def hasHistory(ExecutionFlow it) {
 		historyVector != null && historyVector.size > 0;		
 	}
@@ -49,10 +54,8 @@ class SExecExtensions {
 		!outgoingEvents.empty
 	}
 	
-	def List<EventDefinition> getOutgoingEvents(Scope it) {
-		val events = new ArrayList<EventDefinition>()
-		declarations.filter(typeof(EventDefinition)).forEach(ev | if (ev.direction == Direction::OUT) events += ev)
-		events
+	def getOutgoingEvents(Scope it) {
+		declarations.filter(typeof(EventDefinition)).filter[direction == Direction::OUT].fold(new LinkedList<EventDefinition>, [l, ev | l += ev l])
 	}
 	
 	def hasIncomingEvents(Scope it) {
@@ -60,9 +63,7 @@ class SExecExtensions {
 	}
 		
 	def List<EventDefinition> getIncomingEvents(Scope it) {
-		val events = new ArrayList<EventDefinition>()
-		declarations.filter(typeof(EventDefinition)).forEach(ev | if (ev.direction == Direction::IN) events += ev)
-		events
+		declarations.filter(typeof(EventDefinition)).filter[direction == Direction::IN].fold(new LinkedList<EventDefinition>, [l, ev | l += ev l])
 	}
 	
 	def getInterfaceScopes(ExecutionFlow it) {