diff options
Diffstat (limited to 'Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft')
12 files changed, 50 insertions, 4 deletions
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentFaultTreeTrace.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentFaultTreeTrace.xtendbin index f705fefe..59a21d5c 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentFaultTreeTrace.xtendbin +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentFaultTreeTrace.xtendbin | |||
Binary files differ | |||
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentInstanceTrace.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentInstanceTrace.xtendbin index bab76345..0a5c81fe 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentInstanceTrace.xtendbin +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentInstanceTrace.xtendbin | |||
Binary files differ | |||
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentNameGenerator.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentNameGenerator.xtendbin index 257bfc56..87965646 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentNameGenerator.xtendbin +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentNameGenerator.xtendbin | |||
Binary files differ | |||
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.Ecore2CftTransformation.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.Ecore2CftTransformation.xtendbin index a1339a18..cd930545 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.Ecore2CftTransformation.xtendbin +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.Ecore2CftTransformation.xtendbin | |||
Binary files differ | |||
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.InputTrace.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.InputTrace.xtendbin index ba19d0fb..2f779ecb 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.InputTrace.xtendbin +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.InputTrace.xtendbin | |||
Binary files differ | |||
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.LookupHandler.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.LookupHandler.xtendbin index 1e8612b2..93bad7e0 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.LookupHandler.xtendbin +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.LookupHandler.xtendbin | |||
Binary files differ | |||
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingHandler.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingHandler.xtendbin index ebe80f2e..fde76cfd 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingHandler.xtendbin +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingHandler.xtendbin | |||
Binary files differ | |||
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingQueries.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingQueries.xtendbin index 03bd16f8..4754c634 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingQueries.xtendbin +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingQueries.xtendbin | |||
Binary files differ | |||
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.gitignore b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.gitignore index 33bb70d4..377aa872 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.gitignore +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.gitignore | |||
@@ -7,3 +7,19 @@ | |||
7 | /.CftTransformation.java._trace | 7 | /.CftTransformation.java._trace |
8 | /.Ecore2CftTransformation.java._trace | 8 | /.Ecore2CftTransformation.java._trace |
9 | /.ComponentNameGenerator.java._trace | 9 | /.ComponentNameGenerator.java._trace |
10 | /.ComponentFaultTreeTrace.xtendbin | ||
11 | /.ComponentInstanceTrace.xtendbin | ||
12 | /.ComponentNameGenerator.xtendbin | ||
13 | /.Ecore2CftTransformation.xtendbin | ||
14 | /.InputTrace.xtendbin | ||
15 | /.LookupHandler.xtendbin | ||
16 | /.MappingHandler.xtendbin | ||
17 | /.MappingQueries.xtendbin | ||
18 | /ComponentFaultTreeTrace.java | ||
19 | /ComponentInstanceTrace.java | ||
20 | /ComponentNameGenerator.java | ||
21 | /Ecore2CftTransformation.java | ||
22 | /InputTrace.java | ||
23 | /LookupHandler.java | ||
24 | /MappingHandler.java | ||
25 | /MappingQueries.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; | |||
3 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.CftFactory; | 3 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.CftFactory; |
4 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentDefinition; | 4 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentDefinition; |
5 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentFaultTree; | 5 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentFaultTree; |
6 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Modality; | ||
6 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output; | 7 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output; |
7 | import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentInstanceTrace; | 8 | import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentInstanceTrace; |
8 | import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentNameGenerator; | 9 | import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentNameGenerator; |
@@ -24,13 +25,17 @@ public class ComponentFaultTreeTrace { | |||
24 | private final Map<IPatternMatch, ComponentInstanceTrace> componentInstancesMap = CollectionLiterals.<IPatternMatch, ComponentInstanceTrace>newHashMap(); | 25 | private final Map<IPatternMatch, ComponentInstanceTrace> componentInstancesMap = CollectionLiterals.<IPatternMatch, ComponentInstanceTrace>newHashMap(); |
25 | 26 | ||
26 | public ComponentInstanceTrace instantiateComponent(final IPatternMatch patternMatch, final ComponentDefinition componenDefinition) { | 27 | public ComponentInstanceTrace instantiateComponent(final IPatternMatch patternMatch, final ComponentDefinition componenDefinition) { |
28 | return this.instantiateComponent(patternMatch, componenDefinition, Modality.MUST, false); | ||
29 | } | ||
30 | |||
31 | public ComponentInstanceTrace instantiateComponent(final IPatternMatch patternMatch, final ComponentDefinition componenDefinition, final Modality exists, final boolean allowMultiple) { | ||
27 | ComponentInstanceTrace _xblockexpression = null; | 32 | ComponentInstanceTrace _xblockexpression = null; |
28 | { | 33 | { |
29 | boolean _containsKey = this.componentInstancesMap.containsKey(patternMatch); | 34 | boolean _containsKey = this.componentInstancesMap.containsKey(patternMatch); |
30 | if (_containsKey) { | 35 | if (_containsKey) { |
31 | throw new IllegalArgumentException(("Already instantiated component for match: " + patternMatch)); | 36 | throw new IllegalArgumentException(("Already instantiated component for match: " + patternMatch)); |
32 | } | 37 | } |
33 | final ComponentInstanceTrace componentTrace = new ComponentInstanceTrace(this.componentFaultTree, componenDefinition, this.nameGenerator); | 38 | final ComponentInstanceTrace componentTrace = new ComponentInstanceTrace(this.componentFaultTree, componenDefinition, this.nameGenerator, exists, allowMultiple); |
34 | this.componentInstancesMap.put(patternMatch, componentTrace); | 39 | this.componentInstancesMap.put(patternMatch, componentTrace); |
35 | _xblockexpression = componentTrace; | 40 | _xblockexpression = componentTrace; |
36 | } | 41 | } |
@@ -53,6 +58,11 @@ public class ComponentFaultTreeTrace { | |||
53 | " instead"); | 58 | " instead"); |
54 | throw new IllegalArgumentException(_plus_1); | 59 | throw new IllegalArgumentException(_plus_1); |
55 | } | 60 | } |
61 | boolean _appearsExactlyOnce = trace.appearsExactlyOnce(); | ||
62 | boolean _not = (!_appearsExactlyOnce); | ||
63 | if (_not) { | ||
64 | throw new IllegalArgumentException("Top level must appear in the fault tree exactly once"); | ||
65 | } | ||
56 | this.componentFaultTree.setTopEvent(IterableExtensions.<Output>head(outputs)); | 66 | this.componentFaultTree.setTopEvent(IterableExtensions.<Output>head(outputs)); |
57 | } | 67 | } |
58 | 68 | ||
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.java b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.java index 840f501d..4034bdf3 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.java +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.java | |||
@@ -7,7 +7,9 @@ import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentDefinition; | |||
7 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentFaultTree; | 7 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentFaultTree; |
8 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.EventDeclaration; | 8 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.EventDeclaration; |
9 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.InputEvent; | 9 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.InputEvent; |
10 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Modality; | ||
10 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output; | 11 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output; |
12 | import hu.bme.mit.inf.dslreasoner.faulttree.model.util.CftExtensions; | ||
11 | import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentNameGenerator; | 13 | import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentNameGenerator; |
12 | import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.InputTrace; | 14 | import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.InputTrace; |
13 | import java.util.Map; | 15 | import java.util.Map; |
@@ -21,9 +23,11 @@ public class ComponentInstanceTrace { | |||
21 | 23 | ||
22 | private final Map<EventDeclaration, Output> outputEventsMap; | 24 | private final Map<EventDeclaration, Output> outputEventsMap; |
23 | 25 | ||
24 | protected ComponentInstanceTrace(final ComponentFaultTree faultTree, final ComponentDefinition componentDefinition, final ComponentNameGenerator nameGenerator) { | 26 | protected ComponentInstanceTrace(final ComponentFaultTree faultTree, final ComponentDefinition componentDefinition, final ComponentNameGenerator nameGenerator, final Modality exists, final boolean multipleAllowed) { |
25 | this.componentInstance.setComponentDefinition(componentDefinition); | 27 | this.componentInstance.setComponentDefinition(componentDefinition); |
26 | this.componentInstance.setName(nameGenerator.nextName(componentDefinition)); | 28 | this.componentInstance.setName(nameGenerator.nextName(componentDefinition)); |
29 | this.componentInstance.setExists(exists); | ||
30 | this.componentInstance.setMultipleAllowed(multipleAllowed); | ||
27 | this.inputEventsMap = Maps.<InputEvent, InputTrace>newHashMapWithExpectedSize(componentDefinition.getInputEvents().size()); | 31 | this.inputEventsMap = Maps.<InputEvent, InputTrace>newHashMapWithExpectedSize(componentDefinition.getInputEvents().size()); |
28 | EList<InputEvent> _inputEvents = componentDefinition.getInputEvents(); | 32 | EList<InputEvent> _inputEvents = componentDefinition.getInputEvents(); |
29 | for (final InputEvent inputEvent : _inputEvents) { | 33 | for (final InputEvent inputEvent : _inputEvents) { |
@@ -48,6 +52,10 @@ public class ComponentInstanceTrace { | |||
48 | } | 52 | } |
49 | 53 | ||
50 | public void assign(final EventDeclaration inputEvent, final ComponentInstanceTrace sourceComponent, final EventDeclaration outputEvent) { | 54 | public void assign(final EventDeclaration inputEvent, final ComponentInstanceTrace sourceComponent, final EventDeclaration outputEvent) { |
55 | this.assign(inputEvent, sourceComponent, outputEvent, Modality.MUST); | ||
56 | } | ||
57 | |||
58 | public void assign(final EventDeclaration inputEvent, final ComponentInstanceTrace sourceComponent, final EventDeclaration outputEvent, final Modality exists) { | ||
51 | final InputTrace inputTrace = this.inputEventsMap.get(inputEvent); | 59 | final InputTrace inputTrace = this.inputEventsMap.get(inputEvent); |
52 | if ((inputTrace == null)) { | 60 | if ((inputTrace == null)) { |
53 | throw new IllegalArgumentException(("Unknown input: " + inputEvent)); | 61 | throw new IllegalArgumentException(("Unknown input: " + inputEvent)); |
@@ -56,10 +64,14 @@ public class ComponentInstanceTrace { | |||
56 | if ((output == null)) { | 64 | if ((output == null)) { |
57 | throw new IllegalArgumentException(("Unknown output: " + outputEvent)); | 65 | throw new IllegalArgumentException(("Unknown output: " + outputEvent)); |
58 | } | 66 | } |
59 | inputTrace.assign(output); | 67 | inputTrace.assign(output, exists); |
60 | } | 68 | } |
61 | 69 | ||
62 | protected EList<Output> getOutputs() { | 70 | protected EList<Output> getOutputs() { |
63 | return this.componentInstance.getOutputs(); | 71 | return this.componentInstance.getOutputs(); |
64 | } | 72 | } |
73 | |||
74 | protected boolean appearsExactlyOnce() { | ||
75 | return CftExtensions.appearsExactlyOnce(this.componentInstance); | ||
76 | } | ||
65 | } | 77 | } |
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/InputTrace.java b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/InputTrace.java index c12f2bae..2b30566f 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/InputTrace.java +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/InputTrace.java | |||
@@ -5,7 +5,9 @@ import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Component; | |||
5 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Connection; | 5 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Connection; |
6 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Input; | 6 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Input; |
7 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.InputEvent; | 7 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.InputEvent; |
8 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Modality; | ||
8 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output; | 9 | import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output; |
10 | import hu.bme.mit.inf.dslreasoner.faulttree.model.util.CftExtensions; | ||
9 | import java.util.Map; | 11 | import java.util.Map; |
10 | import org.eclipse.emf.common.util.EList; | 12 | import org.eclipse.emf.common.util.EList; |
11 | import org.eclipse.xtext.xbase.lib.CollectionLiterals; | 13 | import org.eclipse.xtext.xbase.lib.CollectionLiterals; |
@@ -22,14 +24,20 @@ public class InputTrace { | |||
22 | _inputs.add(this.input); | 24 | _inputs.add(this.input); |
23 | } | 25 | } |
24 | 26 | ||
25 | public void assign(final Output output) { | 27 | public void assign(final Output output, final Modality exists) { |
26 | final Connection connection = this.connectionsMap.get(output); | 28 | final Connection connection = this.connectionsMap.get(output); |
27 | if ((connection == null)) { | 29 | if ((connection == null)) { |
28 | final Connection newConnection = CftFactory.eINSTANCE.createConnection(); | 30 | final Connection newConnection = CftFactory.eINSTANCE.createConnection(); |
29 | newConnection.setOutput(output); | 31 | newConnection.setOutput(output); |
32 | newConnection.setExists(exists); | ||
30 | EList<Connection> _incomingConnections = this.input.getIncomingConnections(); | 33 | EList<Connection> _incomingConnections = this.input.getIncomingConnections(); |
31 | _incomingConnections.add(newConnection); | 34 | _incomingConnections.add(newConnection); |
32 | this.connectionsMap.put(output, newConnection); | 35 | this.connectionsMap.put(output, newConnection); |
36 | } else { | ||
37 | boolean _isMoreConcreteThan = CftExtensions.isMoreConcreteThan(exists, connection.getExists()); | ||
38 | if (_isMoreConcreteThan) { | ||
39 | connection.setExists(exists); | ||
40 | } | ||
33 | } | 41 | } |
34 | } | 42 | } |
35 | } | 43 | } |