diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 1f42d64..3ef1d7a 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,10 +1,7 @@ import java.util.ArrayList; import java.util.List; -import designPatternExtensions.Adapter; -import designPatternExtensions.DependencyInversion; -import designPatternExtensions.InterfaceNode; -import designPatternExtensions.MediatorInsertion; +import designPatternExtensions.*; import generators.ASTGenerator; import models.objectOrientedTransfer.*; @@ -40,7 +37,7 @@ design.addDependencyInversion(di); - System.out.println(ASTGenerator.generate(Adapter.create())); + System.out.println(ASTGenerator.generate(Observer.create())); // System.out.println(ASTGenerator.generate(design)); } catch (IllegalRelationException e) { e.printStackTrace(); diff --git a/src/main/java/designPatternExtensions/Bridge.java b/src/main/java/designPatternExtensions/Bridge.java new file mode 100644 index 0000000..4222324 --- /dev/null +++ b/src/main/java/designPatternExtensions/Bridge.java @@ -0,0 +1,35 @@ +package designPatternExtensions; + +import models.objectOrientedTransfer.*; + +import java.util.ArrayList; +import java.util.List; + +public class Bridge { + + public static DataTransferDesign create() throws IllegalRelationException { + ObjectNode main = new ObjectNode("Main"); + ObjectNode sword = new ObjectNode("Sword"); + ObjectNode soulEatingEnchantment = new ObjectNode("SoulEatingEnchantment"); + ObjectNode data = new ObjectNode("String"); + + List srcEdges = new ArrayList<>(); + List dstEdges = new ArrayList<>(); + srcEdges.add(new ReferenceEdge(main, soulEatingEnchantment, "soulEatingEnchantment", "String")); + dstEdges.add(new ReferenceEdge(main, sword, "sword", "String")); + + List relations = new ArrayList<>(); + Relation transferRelation = new Relation(srcEdges, dstEdges, MultiplicityValue.OneToOne); + DataTransferContext context = new DataTransferContext(relations, transferRelation, data, "data", PushPullValue.PULL); + + DataTransferDesign design = new DataTransferDesign(context); + + DependencyInversion di1 = new DependencyInversion(sword, new InterfaceNode(sword, "Weapon"), main); + design.addDependencyInversion(di1); + + DependencyInversion di2 = new DependencyInversion(soulEatingEnchantment, new InterfaceNode(soulEatingEnchantment, "Enchantment"), sword); + design.addDependencyInversion(di2); + + return design; + } +} \ No newline at end of file diff --git a/src/main/java/designPatternExtensions/Observer.java b/src/main/java/designPatternExtensions/Observer.java new file mode 100644 index 0000000..d1c1f1b --- /dev/null +++ b/src/main/java/designPatternExtensions/Observer.java @@ -0,0 +1,48 @@ +package designPatternExtensions; + +import models.objectOrientedTransfer.*; + +import java.util.ArrayList; +import java.util.List; + +public class Observer { + + public static DataTransferDesign create() throws IllegalRelationException { + ObjectNode main = new ObjectNode("Main"); + ObjectNode weather = new ObjectNode("Weather"); + ObjectNode orcs = new ObjectNode("Orcs"); + ObjectNode hobbits = new ObjectNode("Hobbits"); + ObjectNode data = new ObjectNode("WeatherType"); + + List srcEdges = new ArrayList<>(); + ReferenceEdge srcEdge = new ReferenceEdge(main, weather, "weather", "WeatherType"); + srcEdges.add(srcEdge); + + List dstEdges = new ArrayList<>(); + ReferenceEdge dstEdge = new ReferenceEdge(main, orcs, "orcs", "WeatherType"); + dstEdges.add(dstEdge); + + List relations = new ArrayList<>(); + Relation transferRelation = new Relation(srcEdges, dstEdges, MultiplicityValue.ManyToOne); + DataTransferContext context = new DataTransferContext( + relations, transferRelation, data, "currentWeather", PushPullValue.PUSH + ); + + DataTransferDesign design = new DataTransferDesign(context); + + DependencyInversion di1 = new DependencyInversion( + orcs, + new InterfaceNode(orcs, "WeatherObserver"), + weather + ); + DependencyInversion di2 = new DependencyInversion( + hobbits, + new InterfaceNode(hobbits, "WeatherObserver"), + weather + ); + design.addDependencyInversion(di1); + design.addDependencyInversion(di2); + + return design; + } +} \ No newline at end of file