From 3f5aaab5025b8eb243f414b1c789085327df04f4 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Wed, 20 Mar 2019 16:09:09 +0100 Subject: Fault tree transformation for partial models WIP --- .../transformation/ecore2cft/ComponentFaultTreeTrace.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.java') diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.java b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.java index 46e711d9..ddcf9036 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.java +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.java @@ -3,6 +3,7 @@ package hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.CftFactory; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentDefinition; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentFaultTree; +import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Modality; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output; import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentInstanceTrace; import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentNameGenerator; @@ -24,13 +25,17 @@ public class ComponentFaultTreeTrace { private final Map componentInstancesMap = CollectionLiterals.newHashMap(); public ComponentInstanceTrace instantiateComponent(final IPatternMatch patternMatch, final ComponentDefinition componenDefinition) { + return this.instantiateComponent(patternMatch, componenDefinition, Modality.MUST, false); + } + + public ComponentInstanceTrace instantiateComponent(final IPatternMatch patternMatch, final ComponentDefinition componenDefinition, final Modality exists, final boolean allowMultiple) { ComponentInstanceTrace _xblockexpression = null; { boolean _containsKey = this.componentInstancesMap.containsKey(patternMatch); if (_containsKey) { throw new IllegalArgumentException(("Already instantiated component for match: " + patternMatch)); } - final ComponentInstanceTrace componentTrace = new ComponentInstanceTrace(this.componentFaultTree, componenDefinition, this.nameGenerator); + final ComponentInstanceTrace componentTrace = new ComponentInstanceTrace(this.componentFaultTree, componenDefinition, this.nameGenerator, exists, allowMultiple); this.componentInstancesMap.put(patternMatch, componentTrace); _xblockexpression = componentTrace; } @@ -53,6 +58,11 @@ public class ComponentFaultTreeTrace { " instead"); throw new IllegalArgumentException(_plus_1); } + boolean _appearsExactlyOnce = trace.appearsExactlyOnce(); + boolean _not = (!_appearsExactlyOnce); + if (_not) { + throw new IllegalArgumentException("Top level must appear in the fault tree exactly once"); + } this.componentFaultTree.setTopEvent(IterableExtensions.head(outputs)); } -- cgit v1.2.3-70-g09d2