package designPatternExtensions;
import models.objectOrientedTransfer.*;
import java.util.ArrayList;
//https://github.com/iluwatar/java-design-patterns/tree/master/memento
//複数のデータ転送をまとめて扱えるようにしないとできない → 一方向でもできればいったんOK
public class Memento {
public static DataTransferDesign create() throws IllegalRelationException {
ObjectNode star = new ObjectNode("Star");
ObjectNode states = new ObjectNode("States");
ObjectNode starMementoInternal = new ObjectNode("StarMementoInternal");
Relation transferRelation = new Relation(star, states, MultiplicityValue.OneToOne);
DataTransferContext context = new DataTransferContext(
new ArrayList<>(), transferRelation, starMementoInternal, "memento", PushPullValue.PULL
);
DataTransferDesign design = new DataTransferDesign(context);
MediatorInsertion client = new MediatorInsertion(star, states, new ObjectNode("Client"));
design.addMediatorInsertion(client);
DependencyInversion di = new DependencyInversion(
starMementoInternal, new InterfaceNode(starMementoInternal, "StarMemento"), states
);
design.addDependencyInversion(di);
return design;
}
}