aboutsummaryrefslogtreecommitdiffstats
path: root/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.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/ComponentFaultTreeTrace.xtend')
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.xtend12
1 files changed, 11 insertions, 1 deletions
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.xtend
index 7a3e377b..10c91fb4 100644
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.xtend
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.xtend
@@ -2,6 +2,7 @@ package hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft
2 2
3import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.CftFactory 3import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.CftFactory
4import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentDefinition 4import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentDefinition
5import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Modality
5import java.util.Map 6import java.util.Map
6import org.eclipse.viatra.query.runtime.api.IPatternMatch 7import org.eclipse.viatra.query.runtime.api.IPatternMatch
7import org.eclipse.xtend.lib.annotations.Accessors 8import org.eclipse.xtend.lib.annotations.Accessors
@@ -13,10 +14,16 @@ class ComponentFaultTreeTrace {
13 val Map<IPatternMatch, ComponentInstanceTrace> componentInstancesMap = newHashMap 14 val Map<IPatternMatch, ComponentInstanceTrace> componentInstancesMap = newHashMap
14 15
15 def instantiateComponent(IPatternMatch patternMatch, ComponentDefinition componenDefinition) { 16 def instantiateComponent(IPatternMatch patternMatch, ComponentDefinition componenDefinition) {
17 instantiateComponent(patternMatch, componenDefinition, Modality.MUST, false)
18 }
19
20 def instantiateComponent(IPatternMatch patternMatch, ComponentDefinition componenDefinition, Modality exists,
21 boolean allowMultiple) {
16 if (componentInstancesMap.containsKey(patternMatch)) { 22 if (componentInstancesMap.containsKey(patternMatch)) {
17 throw new IllegalArgumentException("Already instantiated component for match: " + patternMatch) 23 throw new IllegalArgumentException("Already instantiated component for match: " + patternMatch)
18 } 24 }
19 val componentTrace = new ComponentInstanceTrace(componentFaultTree, componenDefinition, nameGenerator) 25 val componentTrace = new ComponentInstanceTrace(componentFaultTree, componenDefinition, nameGenerator,
26 exists, allowMultiple)
20 componentInstancesMap.put(patternMatch, componentTrace) 27 componentInstancesMap.put(patternMatch, componentTrace)
21 componentTrace 28 componentTrace
22 } 29 }
@@ -30,6 +37,9 @@ class ComponentFaultTreeTrace {
30 throw new IllegalArgumentException("Top level component must have 1 output, got " + outputs.size + 37 throw new IllegalArgumentException("Top level component must have 1 output, got " + outputs.size +
31 " instead") 38 " instead")
32 } 39 }
40 if (!trace.appearsExactlyOnce) {
41 throw new IllegalArgumentException("Top level must appear in the fault tree exactly once")
42 }
33 componentFaultTree.topEvent = outputs.head 43 componentFaultTree.topEvent = outputs.head
34 } 44 }
35 45