package designPatternExtensions.designPattern;
import designPatternExtensions.*;
import models.deltaAlgebra.ObjectNode;
import models.dataSynchronizationModel.*;
//https://github.com/iluwatar/java-design-patterns/tree/master/memento
public class Memento implements DesignPattern{
public DataSynchronizationDesign create() throws IllegalRelationException {
DataSynchronizationDesign design = ModelLoader.load("models/designPattern/Memento.Json");
DataSynchronizationContext dtc = design.getSynchronizationContexts().getFirst();
ObjectNode star = dtc.getSrcTopObject();
ObjectNode states = dtc.getDstTopObject();
// ObjectNode presenter = new ObjectNode("Main");
// PresenterInsertion main = new PresenterInsertion(star, states,
// presenter, dtc.getTransferStyle(), true);
// design.addPresenterInsertion(main);
DataSynchronizationContext dtc2 = design.getSynchronizationContexts().getLast();
ObjectNode states2 = dtc2.getSrcTopObject();
ObjectNode star2 = dtc2.getDstTopObject();
// 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;
}
}