package designPatternExtensions;
import models.objectOrientedTransfer.*;
import java.util.ArrayList;
import java.util.List;
public class Adapter {
public static DataTransferDesign create() throws IllegalRelationException {
ObjectNode main = new ObjectNode("Main");
ObjectNode fishingBoat = new ObjectNode("FishingBoat");
ObjectNode captain = new ObjectNode("Captain");
ObjectNode data = new ObjectNode("String");
List<ReferenceEdge> srcEdges = new ArrayList<>();
List<ReferenceEdge> dstEdges = new ArrayList<>();
ReferenceEdge srcEdge = new ReferenceEdge(main, fishingBoat, "fishingBoat", "String");
ReferenceEdge dstEdge = new ReferenceEdge(main, captain, "captain", "String");
srcEdges.add(srcEdge);
dstEdges.add(dstEdge);
List<Relation> 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);
ObjectNode adapter = new ObjectNode("FishingBoatAdapter");
MediatorInsertion mi = new MediatorInsertion(captain, fishingBoat, adapter);
design.addMediatorInsertion(mi);
DependencyInversion di = new DependencyInversion(adapter, new InterfaceNode(adapter, "RowingBoat"), captain);
design.addDependencyInversion(di);
return design;
}
}