aboutsummaryrefslogtreecommitdiffstats
path: root/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.xtend')
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.xtend18
1 files changed, 16 insertions, 2 deletions
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.xtend
index 7353bfe5..158ab2e1 100644
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.xtend
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.xtend
@@ -6,18 +6,23 @@ import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentDefinition
6import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentFaultTree 6import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentFaultTree
7import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.EventDeclaration 7import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.EventDeclaration
8import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.InputEvent 8import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.InputEvent
9import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Modality
9import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output 10import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output
10import java.util.Map 11import java.util.Map
11 12
13import static extension hu.bme.mit.inf.dslreasoner.faulttree.model.util.CftExtensions.*
14
12class ComponentInstanceTrace { 15class ComponentInstanceTrace {
13 val componentInstance = CftFactory.eINSTANCE.createComponent 16 val componentInstance = CftFactory.eINSTANCE.createComponent
14 val Map<InputEvent, InputTrace> inputEventsMap 17 val Map<InputEvent, InputTrace> inputEventsMap
15 val Map<EventDeclaration, Output> outputEventsMap 18 val Map<EventDeclaration, Output> outputEventsMap
16 19
17 protected new(ComponentFaultTree faultTree, ComponentDefinition componentDefinition, 20 protected new(ComponentFaultTree faultTree, ComponentDefinition componentDefinition,
18 ComponentNameGenerator nameGenerator) { 21 ComponentNameGenerator nameGenerator, Modality exists, boolean multipleAllowed) {
19 componentInstance.componentDefinition = componentDefinition 22 componentInstance.componentDefinition = componentDefinition
20 componentInstance.name = nameGenerator.nextName(componentDefinition) 23 componentInstance.name = nameGenerator.nextName(componentDefinition)
24 componentInstance.exists = exists
25 componentInstance.multipleAllowed = multipleAllowed
21 inputEventsMap = Maps.newHashMapWithExpectedSize(componentDefinition.inputEvents.size) 26 inputEventsMap = Maps.newHashMapWithExpectedSize(componentDefinition.inputEvents.size)
22 for (inputEvent : componentDefinition.inputEvents) { 27 for (inputEvent : componentDefinition.inputEvents) {
23 val inputTrace = new InputTrace(componentInstance, inputEvent) 28 val inputTrace = new InputTrace(componentInstance, inputEvent)
@@ -34,6 +39,11 @@ class ComponentInstanceTrace {
34 } 39 }
35 40
36 def void assign(EventDeclaration inputEvent, ComponentInstanceTrace sourceComponent, EventDeclaration outputEvent) { 41 def void assign(EventDeclaration inputEvent, ComponentInstanceTrace sourceComponent, EventDeclaration outputEvent) {
42 assign(inputEvent, sourceComponent, outputEvent, Modality.MUST)
43 }
44
45 def void assign(EventDeclaration inputEvent, ComponentInstanceTrace sourceComponent, EventDeclaration outputEvent,
46 Modality exists) {
37 val inputTrace = inputEventsMap.get(inputEvent) 47 val inputTrace = inputEventsMap.get(inputEvent)
38 if (inputTrace === null) { 48 if (inputTrace === null) {
39 throw new IllegalArgumentException("Unknown input: " + inputEvent) 49 throw new IllegalArgumentException("Unknown input: " + inputEvent)
@@ -42,10 +52,14 @@ class ComponentInstanceTrace {
42 if (output === null) { 52 if (output === null) {
43 throw new IllegalArgumentException("Unknown output: " + outputEvent) 53 throw new IllegalArgumentException("Unknown output: " + outputEvent)
44 } 54 }
45 inputTrace.assign(output) 55 inputTrace.assign(output, exists)
46 } 56 }
47 57
48 protected def getOutputs() { 58 protected def getOutputs() {
49 componentInstance.outputs 59 componentInstance.outputs
50 } 60 }
61
62 protected def appearsExactlyOnce() {
63 componentInstance.appearsExactlyOnce
64 }
51} 65}