diff --git a/models/designPattern/Command2.Json b/models/designPattern/Command2.Json index a4b5779..dcc37e7 100644 --- a/models/designPattern/Command2.Json +++ b/models/designPattern/Command2.Json @@ -14,14 +14,18 @@ } }, { - "relations": [], + "relations": [{ + "src": "Main.Data", + "dst": "Main.Wizard.Goblin.Data", + "multiplicity": "1:1" + }], "transfer": { "src": "Main.Data", "dst": "Main.Wizard.Goblin.Data", "data": { "name": "data" }, - "style": "PUSH", + "style": "PLAIN", "multiplicity": "1:1" } } diff --git a/models/designPattern/Flyweight.Json b/models/designPattern/Flyweight.Json index 708108b..9eeb987 100644 --- a/models/designPattern/Flyweight.Json +++ b/models/designPattern/Flyweight.Json @@ -2,20 +2,14 @@ "name": "Flyweight", "contexts": [ { - "relations": [ - { - "src": "Main.AlchemistShop.PotionFactory.{Potion}", - "dst": "Main.AlchemistShop", - "multiplicity": "*:*" - } - ], + "relations": [], "transfer": { "src": "Main.AlchemistShop.PotionFactory.{Potion}", "dst": "Main.AlchemistShop.TopShelf.{Potion}", "data": { - "name": "data" + "name": "potion" }, - "style": "PULL", + "style": "PLAIN", "multiplicity": "*:*" } }, diff --git a/models/designPattern/Observer.Json b/models/designPattern/Observer.Json index d439ae5..68ddeaa 100644 --- a/models/designPattern/Observer.Json +++ b/models/designPattern/Observer.Json @@ -4,8 +4,8 @@ { "relations": [], "transfer": { - "src": "Main.Data", - "dst": "Main.{ConcreteObserver}.Data", + "src": "Main.Weather.Data", + "dst": "Main.Weather.{ConcreteObserver}.Data", "data": { "name": "data" }, @@ -16,13 +16,13 @@ { "relations": [], "transfer": { - "src": "Main.ConcreteObserver", + "src": "Main.{ConcreteObserver}", "dst": "Main.Weather.{ConcreteObserver}", "data": { - "name": "concreteObserver" + "name": "observers" }, - "style": "PUSH", - "multiplicity": "1:1" + "style": "PLAIN", + "multiplicity": "*:*" } } ] diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 4681cfd..aec9d6a 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,7 +1,7 @@ import java.util.ArrayList; import java.util.List; -import designPatternExtensions.*; +import designPatternExtensions.ModelLoader; import designPatternExtensions.designPattern.*; import generators.ASTGenerator; import models.deltaAlgebra.MultiplicityValue; @@ -31,13 +31,14 @@ Relation transferRelation = new Relation(srcEdges, dstEdges, MultiplicityValue.OneToMany); DataSynchronizationDesign design; - design = ModelLoader.load("models/CustomerManagement-PUSH.Json"); - System.out.println(design.getDeltaComplex()); - System.out.println(ASTGenerator.generate(design)); + +// design = ModelLoader.load("models/CustomerManagement-PUSH.Json"); +// System.out.println(design.getDeltaComplex()); +// System.out.println(ASTGenerator.generate(design)); try { -// DataSynchronizationContext context = new DataSynchronizationContext(relations, transferRelation, "address", PushPullValue.PULL); -// design = new DataSynchronizationDesign(context); + DataSynchronizationContext context = new DataSynchronizationContext(relations, transferRelation, "address", TransferStyle.PULL); + design = new DataSynchronizationDesign(context); // ObjectNode cm = new ObjectNode("CompanyMediator"); // MediatorInsertion mi = new MediatorInsertion(customer, company, cm, context); @@ -46,7 +47,7 @@ // DependencyInversion di = new DependencyInversion(company, new InterfaceNode(company, "ICompany"), customer); // design.addDependencyInversion(di); - design = new Flyweight().create(); +// design = new Flyweight().create(); System.out.println(design.getDeltaComplex()); System.out.println(ASTGenerator.generate(design)); diff --git a/src/main/java/designPatternExtensions/MediatorInsertion.java b/src/main/java/designPatternExtensions/MediatorInsertion.java index d9ca498..224771f 100644 --- a/src/main/java/designPatternExtensions/MediatorInsertion.java +++ b/src/main/java/designPatternExtensions/MediatorInsertion.java @@ -2,13 +2,13 @@ import models.dataSynchronizationModel.DataSynchronizationContext; import models.deltaAlgebra.ObjectNode; -import models.dataSynchronizationModel.PushPullValue; +import models.dataSynchronizationModel.TransferStyle; public class MediatorInsertion { private ObjectNode src; private ObjectNode dst; private ObjectNode mediator; - private PushPullValue pushPullValue; + private TransferStyle transferStyle; private boolean removeDirectDependency = true; //全デザインパターンに適応出来たら不要になるメソッド @@ -16,18 +16,18 @@ this.src = src; this.dst = dst; this.mediator = mediator; - this.pushPullValue = context.getTransferStyle(); + this.transferStyle = context.getTransferStyle(); } - public MediatorInsertion(ObjectNode src, ObjectNode dst, ObjectNode mediator, PushPullValue pushPullValue) { - this(src, dst, mediator, pushPullValue, true); + public MediatorInsertion(ObjectNode src, ObjectNode dst, ObjectNode mediator, TransferStyle transferStyle) { + this(src, dst, mediator, transferStyle, true); } - public MediatorInsertion(ObjectNode src, ObjectNode dst, ObjectNode mediator, PushPullValue pushPullValue, boolean removeDirectDependency) { + public MediatorInsertion(ObjectNode src, ObjectNode dst, ObjectNode mediator, TransferStyle transferStyle, boolean removeDirectDependency) { this.src = src; this.dst = dst; this.mediator = mediator; - this.pushPullValue = pushPullValue; + this.transferStyle = transferStyle; this.removeDirectDependency = removeDirectDependency; } @@ -43,8 +43,8 @@ return mediator; } - public PushPullValue getPushPullValue() { - return pushPullValue; + public TransferStyle getPushPullValue() { + return transferStyle; } public boolean getRemoveDirectDependency() { diff --git a/src/main/java/designPatternExtensions/PresenterInsertion.java b/src/main/java/designPatternExtensions/PresenterInsertion.java index 311518c..1ab9ccf 100644 --- a/src/main/java/designPatternExtensions/PresenterInsertion.java +++ b/src/main/java/designPatternExtensions/PresenterInsertion.java @@ -1,21 +1,21 @@ package designPatternExtensions; import models.deltaAlgebra.ObjectNode; -import models.dataSynchronizationModel.PushPullValue; +import models.dataSynchronizationModel.TransferStyle; public class PresenterInsertion { private ObjectNode src; private ObjectNode dst; private ObjectNode presenter; - private PushPullValue pushPullValue; + private TransferStyle transferStyle; private boolean removeDirectDependency = false; public PresenterInsertion(ObjectNode src, ObjectNode dst, ObjectNode presenter, - PushPullValue pushPullValue, boolean removeDirectDependency) { + TransferStyle transferStyle, boolean removeDirectDependency) { this.src = src; this.dst = dst; this.presenter = presenter; - this.pushPullValue = pushPullValue; + this.transferStyle = transferStyle; this.removeDirectDependency = removeDirectDependency; } @@ -31,7 +31,7 @@ return presenter; } - public PushPullValue getPushPullValue() { return pushPullValue; } + public TransferStyle getPushPullValue() { return transferStyle; } public boolean getRemoveDirectDependency() { return removeDirectDependency; } diff --git a/src/main/java/designPatternExtensions/designPattern/Adapter.java b/src/main/java/designPatternExtensions/designPattern/Adapter.java index a24c366..586631e 100644 --- a/src/main/java/designPatternExtensions/designPattern/Adapter.java +++ b/src/main/java/designPatternExtensions/designPattern/Adapter.java @@ -13,7 +13,7 @@ ObjectNode fishingBoat = dtc.getDstTopObject(); ObjectNode adapter = new ObjectNode("FishingBoatAdapter"); - MediatorInsertion mi = new MediatorInsertion(captain, fishingBoat, adapter, PushPullValue.PUSH); + MediatorInsertion mi = new MediatorInsertion(captain, fishingBoat, adapter, TransferStyle.PUSH); design.addMediatorInsertion(mi); DependencyInversion di = new DependencyInversion( diff --git a/src/main/java/designPatternExtensions/designPattern/Chain_of_Responsibility.java b/src/main/java/designPatternExtensions/designPattern/Chain_of_Responsibility.java index 0ae79f0..d3ade28 100644 --- a/src/main/java/designPatternExtensions/designPattern/Chain_of_Responsibility.java +++ b/src/main/java/designPatternExtensions/designPattern/Chain_of_Responsibility.java @@ -7,8 +7,6 @@ import models.deltaAlgebra.ObjectNode; import models.dataSynchronizationModel.*; -import javax.print.attribute.standard.Media; - //メモ //https://github.com/iluwatar/java-design-patterns/tree/master/chain-of-responsibility @@ -25,7 +23,7 @@ DependencyInversion di = new DependencyInversion(concreteOrcRequestHandler, requestHandler); design.addDependencyInversion(di); - MediatorInsertion mi = new MediatorInsertion(main, concreteOrcRequestHandler, new ObjectNode("OrcKing"), PushPullValue.PUSH); + MediatorInsertion mi = new MediatorInsertion(main, concreteOrcRequestHandler, new ObjectNode("OrcKing"), TransferStyle.PUSH); design.addMediatorInsertion(mi); return design; diff --git a/src/main/java/designPatternExtensions/designPattern/Mediator.java b/src/main/java/designPatternExtensions/designPattern/Mediator.java index c331a44..1333d5f 100644 --- a/src/main/java/designPatternExtensions/designPattern/Mediator.java +++ b/src/main/java/designPatternExtensions/designPattern/Mediator.java @@ -35,7 +35,7 @@ DependencyInversion di3 = new DependencyInversion(partyImpl, party); design.addDependencyInversion(di3); - MediatorInsertion mi = new MediatorInsertion(concretePartyMember, concretePartyMember, partyImpl, PushPullValue.PUSH); + MediatorInsertion mi = new MediatorInsertion(concretePartyMember, concretePartyMember, partyImpl, TransferStyle.PUSH); design.addMediatorInsertion(mi); return design; diff --git a/src/main/java/designPatternExtensions/designPattern/Observer.java b/src/main/java/designPatternExtensions/designPattern/Observer.java index c0fde19..ddd9acf 100644 --- a/src/main/java/designPatternExtensions/designPattern/Observer.java +++ b/src/main/java/designPatternExtensions/designPattern/Observer.java @@ -19,7 +19,7 @@ DataSynchronizationDesign design = ModelLoader.load("models/designPattern/"+this.getClass().getSimpleName()+".Json"); DataSynchronizationContext dtc = design.getSynchronizationContexts().getFirst(); ObjectNode main = dtc.getDstTopObject(); - ObjectNode concreteObserver = (ObjectNode) dtc.getDstObjectHierarchy().getEdge(0).getDestination(); + ObjectNode concreteObserver = (ObjectNode) dtc.getDstObjectHierarchy().getEdge(1).getDestination(); // MediatorInsertion mi = new MediatorInsertion(main, concreteObserver, new ObjectNode("Weather"), dtc.getTransferStyle()); // design.addMediatorInsertion(mi); diff --git a/src/main/java/designPatternExtensions/designPattern/Singleton.java b/src/main/java/designPatternExtensions/designPattern/Singleton.java index e5acb55..2322e52 100644 --- a/src/main/java/designPatternExtensions/designPattern/Singleton.java +++ b/src/main/java/designPatternExtensions/designPattern/Singleton.java @@ -17,7 +17,7 @@ Relation transferRelation = new Relation(enumIvoryTower, client, MultiplicityValue.OneToOne); DataSynchronizationContext context = new DataSynchronizationContext( - new ArrayList<>(), transferRelation, "data", PushPullValue.PULL + new ArrayList<>(), transferRelation, "data", TransferStyle.PULL ); return new DataSynchronizationDesign(context); diff --git a/src/main/java/generators/ASTGenerator.java b/src/main/java/generators/ASTGenerator.java index 109e402..225b693 100644 --- a/src/main/java/generators/ASTGenerator.java +++ b/src/main/java/generators/ASTGenerator.java @@ -93,7 +93,9 @@ models.algebra.Type type3 = codebase.getComponentType(name3); FieldDeclaration field12 = null; if (!pullEdge1.toMany()) { - field12 = createField(class1, pullEdge1.getName(), type2); // class1 -> class2 (PULL) + if (!pullEdge1.isIdentical()) { + field12 = createField(class1, pullEdge1.getName(), type2); // class1 -> class2 (PULL) + } } else { MapType typeKeyToType2 = codebase.getMapType(pullEdge1.getKeyTypeName(), name2); field12 = createField(class1, pullEdge1.getName() + mapPostfix, typeKeyToType2); // class1 -> {class2} (PULL) @@ -145,7 +147,12 @@ coordionator = createMethod(class1, updateMethodPrefix + toComponentName(pullEdge2.getName())); } FieldAccess field3 = new FieldAccess(new ThisExpression(), field13.getName()); // this.name3 - FieldAccess field2 = new FieldAccess(field12.getName()); + Expression field2 = null; + if (field12 != null) { + field2 = new FieldAccess(field12.getName()); + } else { + field2 = new ThisExpression(); + } List args = new ArrayList<>(); if ((!primitivePullDelta.isMultipleDefinition() && pullEdge2.toMany()) || (primitivePullDelta.isMultipleDefinition() && !pullEdge1.toMany() && !primitivePullDelta.isMultipleTransfer())) { @@ -170,7 +177,9 @@ String loopVarName = null; if (pullEdge1.toMany()) { loopVarName = pullEdge1.getName() + idPostfix; - keyType = ((MapType) field12.getType()).getKeyType(); + if (field12 != null) { + keyType = ((MapType) field12.getType()).getKeyType(); + } } else { loopVarName = pullEdge2.getName() + idPostfix; keyType = ((MapType) field13.getType()).getKeyType(); @@ -384,9 +393,9 @@ public static Codebase weaveMediatorInsertion(Codebase codebase, MediatorInsertion mediatorInsertion) { - PushPullValue style = mediatorInsertion.getPushPullValue(); + TransferStyle style = mediatorInsertion.getPushPullValue(); ObjectNode srcNode, dstNode; - if (style == PushPullValue.PUSH) { + if (style == TransferStyle.PUSH) { srcNode = mediatorInsertion.getSrc(); dstNode = mediatorInsertion.getDst(); } else { @@ -723,7 +732,7 @@ } if (presenterInsertion.getRemoveDirectDependency()) { - if (presenterInsertion.getPushPullValue() == PushPullValue.PUSH) { + if (presenterInsertion.getPushPullValue() == TransferStyle.PUSH) { removeDirectDependency(srcClass, dstType); } else { removeDirectDependency(dstClass, srcType); diff --git a/src/main/java/models/dataSynchronizationModel/DataSynchronizationContext.java b/src/main/java/models/dataSynchronizationModel/DataSynchronizationContext.java index 5daa0d3..1f22ccf 100644 --- a/src/main/java/models/dataSynchronizationModel/DataSynchronizationContext.java +++ b/src/main/java/models/dataSynchronizationModel/DataSynchronizationContext.java @@ -24,14 +24,14 @@ private List intermediateRelations; private Relation syncronizationRelation; private String dataName; - private PushPullValue transferStyle; + private TransferStyle transferStyle = TransferStyle.PLAIN; private Map objectNodeMap = new HashMap<>(); public DataSynchronizationContext(Value jsonValue) { setDataTransferContext(jsonValue); } - public DataSynchronizationContext(List intermediateRelations, Relation syncronizationRelation, String dataName, PushPullValue transferStyle) { + public DataSynchronizationContext(List intermediateRelations, Relation syncronizationRelation, String dataName, TransferStyle transferStyle) { this.intermediateRelations = intermediateRelations; this.syncronizationRelation = syncronizationRelation; this.dataName = dataName; @@ -98,7 +98,7 @@ return dataName; } - public PushPullValue getTransferStyle() { + public TransferStyle getTransferStyle() { return transferStyle; } @@ -169,10 +169,12 @@ private void setTransferStyle(StringValue stringValue){ String style = stringValue.getStringValue(); - if (style.equals("PUSH")) { - transferStyle = PushPullValue.PUSH; + if (style.equals("PLAIN")) { + transferStyle = TransferStyle.PLAIN; + } else if (style.equals("PUSH")) { + transferStyle = TransferStyle.PUSH; } else if (style.equals("PULL")) { - transferStyle = PushPullValue.PULL; + transferStyle = TransferStyle.PULL; } } diff --git a/src/main/java/models/dataSynchronizationModel/DataSynchronizationDesign.java b/src/main/java/models/dataSynchronizationModel/DataSynchronizationDesign.java index f8466e0..11564a3 100644 --- a/src/main/java/models/dataSynchronizationModel/DataSynchronizationDesign.java +++ b/src/main/java/models/dataSynchronizationModel/DataSynchronizationDesign.java @@ -96,44 +96,55 @@ */ private Stack constructDefaultDeltas(DataSynchronizationContext synchronizationContext) throws IllegalRelationException { Stack deltaStack = new Stack<>(); - PushPullValue transferStyle = synchronizationContext.getTransferStyle(); + TransferStyle transferStyle = synchronizationContext.getTransferStyle(); ObjectNode srcObj = null; ObjectNode dstObj = null; - if (transferStyle == PushPullValue.PUSH) { + boolean useShortcut = true; + if (transferStyle == TransferStyle.PUSH) { + // Transfer style is PUSH srcObj = synchronizationContext.getSrcTopObject(); dstObj = synchronizationContext.getDstTopObject(); } else { + // Transfer style is PULL or PLAIN srcObj = synchronizationContext.getDstTopObject(); dstObj = synchronizationContext.getSrcTopObject(); + if (transferStyle == TransferStyle.PLAIN) { + useShortcut = false; + } } String refName = toVariableName(dstObj.getName()); ReferenceEdge prevReference = new ReferenceEdge(srcObj, dstObj, refName); - boolean hasDiagonalRelation = false; if (!synchronizationContext.isFlat()) { boolean toOne = true; // identifiable multiplicity List allRelations = new ArrayList<>(synchronizationContext.getIntermediateRelations()); - for (Relation relation: allRelations) { - if (synchronizationContext.getSrcObjectHierarchy().isPrefixOf(relation.getSrcObjectHierarchy()) - || synchronizationContext.getDstObjectHierarchy().isPrefixOf(relation.getDstObjectHierarchy())) { - hasDiagonalRelation = true; - break; + if (useShortcut) { + for (Relation relation : allRelations) { + if (synchronizationContext.getSrcObjectHierarchy().isPrefixOf(relation.getSrcObjectHierarchy()) + || synchronizationContext.getDstObjectHierarchy().isPrefixOf(relation.getDstObjectHierarchy())) { + useShortcut = false; + break; + } } } - if (!hasDiagonalRelation) { + if (useShortcut) { allRelations.add(synchronizationContext.getSyncronizationRelation().getPrevRelation()); } else { - Relation lastRelation = allRelations.getLast(); - Relation bottomRelation = null; - if (!synchronizationContext.getSrcObjectHierarchy().isPrefixOf(lastRelation.getSrcObjectHierarchy())) { - bottomRelation = new Relation(synchronizationContext.getSrcObjectHierarchy().getPrevObjectHierarchy(), - synchronizationContext.getSrcObjectHierarchy(), - synchronizationContext.getTransferMultiplicity()); - allRelations.add(bottomRelation); - } else if (!synchronizationContext.getDstObjectHierarchy().isPrefixOf(lastRelation.getDstObjectHierarchy())) { - bottomRelation = new Relation(synchronizationContext.getSrcObjectHierarchy(), - synchronizationContext.getDstObjectHierarchy().getPrevObjectHierarchy(), - synchronizationContext.getTransferMultiplicity()); - allRelations.add(bottomRelation); + if (transferStyle == TransferStyle.PLAIN) { + allRelations.add(synchronizationContext.getSyncronizationRelation()); + } else { + Relation lastRelation = allRelations.getLast(); + Relation bottomRelation = null; + if (!synchronizationContext.getSrcObjectHierarchy().isPrefixOf(lastRelation.getSrcObjectHierarchy())) { + bottomRelation = new Relation(synchronizationContext.getSrcObjectHierarchy().getPrevObjectHierarchy(), + synchronizationContext.getSrcObjectHierarchy(), + synchronizationContext.getTransferMultiplicity()); + allRelations.add(bottomRelation); + } else if (!synchronizationContext.getDstObjectHierarchy().isPrefixOf(lastRelation.getDstObjectHierarchy())) { + bottomRelation = new Relation(synchronizationContext.getSrcObjectHierarchy(), + synchronizationContext.getDstObjectHierarchy().getPrevObjectHierarchy(), + synchronizationContext.getTransferMultiplicity()); + allRelations.add(bottomRelation); + } } } ObjectHierarchy srcHierarchy = null; @@ -141,7 +152,7 @@ for (Relation relation: allRelations) { ObjectHierarchy newSrcHierarchy = null; ObjectHierarchy newDstHierarchy = null; - if (transferStyle == PushPullValue.PUSH) { + if (transferStyle == TransferStyle.PUSH) { newSrcHierarchy = relation.getSrcObjectHierarchy(); newDstHierarchy = relation.getDstObjectHierarchy(); } else { @@ -171,8 +182,8 @@ toOne = false; } if (!tmpToOne && - (transferStyle == PushPullValue.PUSH && relation.toOne()) - || (transferStyle != PushPullValue.PUSH && (relation.oneTo()))) { + (transferStyle == TransferStyle.PUSH && relation.toOne() + || transferStyle != TransferStyle.PUSH && (relation.oneTo()))) { // If the specified multiplicity of destination objects does not match to their identifiable multiplicity, // then the reference to select one destination object from identifiable multiple objects is needed. manyDestinations.add(dstEdge); @@ -211,9 +222,6 @@ } else { prevDstEdge = new ReferenceEdge(srcObj, dstObj, dataName, prevDstEdge.getKeyTypeName()); } - } else { - prevReference = new ReferenceEdge((ObjectNode) dstEdge.getDestination(), (ObjectNode) dstEdge.getDestination(), dataName); - break; } } else { prevDstEdge = dstEdge; @@ -274,11 +282,11 @@ delta = new Delta(primDelta); } } - if (toOne) { - prevReference = new ReferenceEdge(srcObj, dstObj, dataName); - } else { - prevReference = new ReferenceEdge(srcObj, dstObj, dataName, prevReference.getKeyTypeName()); - } + } + if (toOne) { + prevReference = new ReferenceEdge(srcObj, dstObj, dataName); + } else { + prevReference = new ReferenceEdge(srcObj, dstObj, dataName, prevReference.getKeyTypeName()); } } } @@ -298,10 +306,10 @@ } } } - if (!hasDiagonalRelation) { + if (useShortcut) { // 4) Create the bottom (data transfer) delta. Delta dataTransferDelta = null; - if (transferStyle == PushPullValue.PUSH) { + if (transferStyle == TransferStyle.PUSH) { // PUSH transfer if (synchronizationContext.isTransferToOne()) { // Simple PUSH @@ -319,7 +327,7 @@ } else { // Broadcasting prevReference = new ReferenceEdge(prevReference); - prevReference.setKeyTypeName(synchronizationContext.getDstObjectHierarchy().getEdges().getLast().getKeyTypeName()); +// prevReference.setKeyTypeName(synchronizationContext.getDstObjectHierarchy().getEdges().getLast().getKeyTypeName()); // prevReference.setMultiplicity(MultiplicityValue.OneToMany); // Add the data transfer delta. @@ -353,7 +361,7 @@ } else { // Data collecting prevReference = new ReferenceEdge(prevReference); - prevReference.setKeyTypeName(synchronizationContext.getSrcObjectHierarchy().getEdges().getLast().getKeyTypeName()); +// prevReference.setKeyTypeName(synchronizationContext.getSrcObjectHierarchy().getEdges().getLast().getKeyTypeName()); // prevReference.setMultiplicity(MultiplicityValue.OneToMany); // Add the data transfer delta. @@ -381,10 +389,10 @@ */ private Stack constructDefaultDeltas2(DataSynchronizationContext synchronizationContext) throws IllegalRelationException { Stack deltaStack = new Stack<>(); - PushPullValue transferStyle = synchronizationContext.getTransferStyle(); + TransferStyle transferStyle = synchronizationContext.getTransferStyle(); ObjectNode srcObj = null; ObjectNode dstObj = null; - if (transferStyle == PushPullValue.PUSH) { + if (transferStyle == TransferStyle.PUSH) { srcObj = synchronizationContext.getSrcTopObject(); dstObj = synchronizationContext.getDstTopObject(); } else { @@ -426,7 +434,7 @@ for (Relation relation: allRelations) { ObjectHierarchy newSrcHierarchy = null; ObjectHierarchy newDstHierarchy = null; - if (transferStyle == PushPullValue.PUSH) { + if (transferStyle == TransferStyle.PUSH) { newSrcHierarchy = relation.getSrcObjectHierarchy(); newDstHierarchy = relation.getDstObjectHierarchy(); } else { @@ -500,7 +508,7 @@ if (!toOne) { boolean multipleDefinition = false; // destination multiplicity of the defined reference - if ((transferStyle == PushPullValue.PUSH && relation.toOne()) || (transferStyle != PushPullValue.PUSH && relation.oneTo())) { + if ((transferStyle == TransferStyle.PUSH && relation.toOne()) || (transferStyle != TransferStyle.PUSH && relation.oneTo())) { // If the specified multiplicity of destination objects does not match to their identifiable multiplicity, // then the reference to select one destination object from identifiable multiple objects is needed. toOne = true; @@ -569,7 +577,7 @@ if (!hasDiagonalRelation) { // 4) Create the bottom (data transfer) delta. Delta dataTransferDelta = null; - if (transferStyle == PushPullValue.PUSH) { + if (transferStyle == TransferStyle.PUSH) { // PUSH transfer if (synchronizationContext.isTransferToOne()) { // Simple PUSH diff --git a/src/main/java/models/dataSynchronizationModel/PushPullValue.java b/src/main/java/models/dataSynchronizationModel/PushPullValue.java deleted file mode 100644 index 26128c0..0000000 --- a/src/main/java/models/dataSynchronizationModel/PushPullValue.java +++ /dev/null @@ -1,20 +0,0 @@ -package models.dataSynchronizationModel; - -public enum PushPullValue { - PULL, - PUSHorPULL, - PUSH; - - public String toString() { - switch (this) { - case PUSHorPULL: - return "PUSH/PULL"; - case PUSH: - return "PUSH"; - case PULL: - return "PULL"; - default: - return ""; - } - } -} diff --git a/src/main/java/models/dataSynchronizationModel/TransferStyle.java b/src/main/java/models/dataSynchronizationModel/TransferStyle.java new file mode 100644 index 0000000..d4d3f90 --- /dev/null +++ b/src/main/java/models/dataSynchronizationModel/TransferStyle.java @@ -0,0 +1,20 @@ +package models.dataSynchronizationModel; + +public enum TransferStyle { + PULL, + PLAIN, + PUSH; + + public String toString() { + switch (this) { + case PLAIN: + return "PLAIN"; + case PUSH: + return "PUSH"; + case PULL: + return "PULL"; + default: + return ""; + } + } +} diff --git a/src/main/java/models/deltaAlgebra/ReferenceEdge.java b/src/main/java/models/deltaAlgebra/ReferenceEdge.java index 5c1547e..2713508 100644 --- a/src/main/java/models/deltaAlgebra/ReferenceEdge.java +++ b/src/main/java/models/deltaAlgebra/ReferenceEdge.java @@ -83,4 +83,8 @@ public int hashCode() { return Objects.hash(name.hashCode(), ((ObjectNode) source).getName().hashCode(), ((ObjectNode) destination).getName().hashCode()); } + + public String toString() { + return source.toString() + " -> " + destination.toString(); + } } \ No newline at end of file