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<ReferenceEdge> srcEdges = new ArrayList<>();
ReferenceEdge srcEdge = new ReferenceEdge(main, weather, "weather", "WeatherType");
srcEdges.add(srcEdge);
List<ReferenceEdge> dstEdges = new ArrayList<>();
ReferenceEdge dstEdge = new ReferenceEdge(main, orcs, "orcs", "WeatherType");
dstEdges.add(dstEdge);
List<Relation> 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;
}
}