diff --git a/models/designPattern/State.Json b/models/designPattern/State.Json index 7fa778b..85cf18f 100644 --- a/models/designPattern/State.Json +++ b/models/designPattern/State.Json @@ -2,21 +2,15 @@ "name" : "State", "contexts" : [ { - "relations": [ - { - "src" : "Main.Mammoth", - "dst" : "Main.Mammoth.{ConcreteState}", - "multiplicity" : "1:1" - } - ], + "relations": [], "transfer": { - "src": "Main.Mammoth.{ConcreteState}", - "dst": "Main", + "src": "main.mammoth.{concreteState}", + "dst": "main.mammoth", "data": { - "type": "String", + "type": "Data", "name": "data" }, - "style": "PUSH", + "style": "PULL", "multiplicity": "1:1" } } diff --git a/src/main/java/designPatternExtensions/designPattern/State.java b/src/main/java/designPatternExtensions/designPattern/State.java index 0b2629f..2c6d4f8 100644 --- a/src/main/java/designPatternExtensions/designPattern/State.java +++ b/src/main/java/designPatternExtensions/designPattern/State.java @@ -13,7 +13,7 @@ public DataTransferDesign create() throws IllegalRelationException { DataTransferDesign design = ModelLoader.load("models/designPattern/State.Json"); ObjectNode main = design.getTransferContexts().getFirst().getSrcFirstResource(); - ObjectNode concreteState = design.getTransferContexts().getFirst().getDstFirstResource(); + ObjectNode concreteState = (ObjectNode) design.getTransferContexts().getFirst().getSrcResource().getEdge(1).getDestination(); // MediatorInsertion mi = new MediatorInsertion( // main, concreteState, new ObjectNode("Mammoth")); diff --git a/src/main/java/models/objectOrientedTransfer/DataTransferDesign.java b/src/main/java/models/objectOrientedTransfer/DataTransferDesign.java index 8ff6d81..c3e6174 100644 --- a/src/main/java/models/objectOrientedTransfer/DataTransferDesign.java +++ b/src/main/java/models/objectOrientedTransfer/DataTransferDesign.java @@ -198,17 +198,19 @@ dstObj = (ObjectNode) prevReference.getDestination(); String dataName = dstObj.getName(); dataName = dataName.substring(0, 1).toLowerCase() + dataName.substring(1); - primitiveDeltaList.add(new PrimitivePullPushDelta(prevReference, srcEdge, dataName)); - Delta delta = null; - for (PrimitiveDelta primDelta: primitiveDeltaList) { - if (delta == null) { - delta = new Delta(primDelta); - } else { - delta = new Delta(primDelta, delta); + if (!prevReference.isIdentical() && !prevReference.getDestination().equals(srcEdge.getDestination())) { + primitiveDeltaList.add(new PrimitivePullPushDelta(prevReference, srcEdge, dataName)); + Delta delta = null; + for (PrimitiveDelta primDelta : primitiveDeltaList) { + if (delta == null) { + delta = new Delta(primDelta); + } else { + delta = new Delta(primDelta, delta); + } } + deltaStack.push(delta); // add a container passing delta + primitiveDeltaList.clear(); } - deltaStack.push(delta); // add a container passing delta - primitiveDeltaList.clear(); prevReference = new ReferenceEdge(srcObj, dstObj, dataName); } }