From 6f88c4bd4e91728cea62505e893b0ce300baf7fc Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Thu, 7 Feb 2019 18:24:45 +0100 Subject: Ecore2Cft transformation --- .../ecore2cft/ComponentFaultTreeTrace.java | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.java (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 new file mode 100644 index 00000000..46e711d9 --- /dev/null +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.java @@ -0,0 +1,67 @@ +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.Output; +import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentInstanceTrace; +import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentNameGenerator; +import java.util.Map; +import org.eclipse.emf.common.util.EList; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; +import org.eclipse.xtext.xbase.lib.IterableExtensions; +import org.eclipse.xtext.xbase.lib.Pure; + +@SuppressWarnings("all") +public class ComponentFaultTreeTrace { + @Accessors + private final ComponentFaultTree componentFaultTree = CftFactory.eINSTANCE.createComponentFaultTree(); + + private final ComponentNameGenerator nameGenerator = new ComponentNameGenerator(); + + private final Map componentInstancesMap = CollectionLiterals.newHashMap(); + + public ComponentInstanceTrace instantiateComponent(final IPatternMatch patternMatch, final ComponentDefinition componenDefinition) { + 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); + this.componentInstancesMap.put(patternMatch, componentTrace); + _xblockexpression = componentTrace; + } + return _xblockexpression; + } + + public void setTopLevel(final ComponentInstanceTrace trace) { + Output _topEvent = this.componentFaultTree.getTopEvent(); + boolean _tripleNotEquals = (_topEvent != null); + if (_tripleNotEquals) { + throw new IllegalArgumentException("Top level component already set"); + } + final EList outputs = trace.getOutputs(); + int _size = outputs.size(); + boolean _tripleNotEquals_1 = (_size != 1); + if (_tripleNotEquals_1) { + int _size_1 = outputs.size(); + String _plus = ("Top level component must have 1 output, got " + Integer.valueOf(_size_1)); + String _plus_1 = (_plus + + " instead"); + throw new IllegalArgumentException(_plus_1); + } + this.componentFaultTree.setTopEvent(IterableExtensions.head(outputs)); + } + + public ComponentInstanceTrace lookup(final IPatternMatch patternMatch) { + return this.componentInstancesMap.get(patternMatch); + } + + @Pure + public ComponentFaultTree getComponentFaultTree() { + return this.componentFaultTree; + } +} -- cgit v1.2.3-70-g09d2