Newer
Older
DesignCraft / src / main / java / designPatternExtensions / Adapter.java
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;
    }
}