package designPatternExtensions.designPattern;
import designPatternExtensions.*;
import models.deltaAlgebra.ObjectNode;
import models.objectOrientedTransfer.*;
//https://github.com/iluwatar/java-design-patterns/tree/master/memento
public class Memento implements DesignPattern{
public DataTransferDesign create() throws IllegalRelationException {
DataTransferDesign design = ModelLoader.load("models/Memento.Json");
DataTransferContext dtc = design.getTransferContexts().getFirst();
ObjectNode star = dtc.getSrcFirstResource();
ObjectNode states = dtc.getDstFirstResource();
ObjectNode presenter = new ObjectNode("Main");
PresenterInsertion main = new PresenterInsertion(star, states,
presenter, dtc.getTransferStyle(), true);
design.addPresenterInsertion(main);
DataTransferContext dtc2 = design.getTransferContexts().getLast();
ObjectNode states2 = dtc2.getSrcFirstResource();
ObjectNode star2 = dtc2.getDstFirstResource();
PresenterInsertion main2 = new PresenterInsertion(states2, star2,
presenter, dtc2.getTransferStyle(), true);
design.addPresenterInsertion(main2);
ObjectNode starMementoInternal = new ObjectNode("StarMementoInternal");
DependencyInversion di = new DependencyInversion(
starMementoInternal, new InterfaceNode(starMementoInternal, "StarMemento")
);
design.addDependencyInversion(di);
return design;
}
}