package designPatternExtensions.designPattern;
import designPatternExtensions.*;
import models.deltaAlgebra.ObjectNode;
import models.objectOrientedTransfer.*;
//メモ
//https://github.com/iluwatar/java-design-patterns/tree/master/command
//Stackで状態を元に戻したり、やり直したりする
//Mainで制御の移譲を行う必要あり?
//public class Command implements DesignPattern {
//
// public DataTransferDesign create() throws IllegalRelationException {
// DataTransferDesign design = ModelLoader.load("models/designPattern/Command2.Json");
// DataTransferContext dtc = design.getTransferContexts().getFirst();
// ObjectNode wizard = dtc.getSrcFirstResource();
// ObjectNode goblin = (ObjectNode) dtc.getDstResource().getEdges().get(0).getDestination();
//
// DependencyInversion di = new DependencyInversion(goblin, new InterfaceNode(goblin, "Target"));
// design.addDependencyInversion(di);
//
// return design;
// }
//}
public class Command implements DesignPattern {
public DataTransferDesign create() throws IllegalRelationException {
DataTransferDesign design = ModelLoader.load("models/designPattern/Command2.Json");
DataTransferContext dtc = design.getTransferContexts().getFirst();
//ObjectNode main = dtc.getSrcFirstResource();
ObjectNode goblin = dtc.getDataType();
// MediatorInsertion mi = new MediatorInsertion(main, goblin, new ObjectNode("Wizard"), dtc.getTransferStyle(), false);
// design.addMediatorInsertion(mi);
DependencyInversion di = new DependencyInversion(goblin, new InterfaceNode(goblin, "Target"));
design.addDependencyInversion(di);
return design;
}
}
//public class Command implements DesignPattern {
//
// public DataTransferDesign create() throws IllegalRelationException {
// DataTransferDesign design = ModelLoader.load2("models/designPattern/"+this.getClass().getSimpleName()+".Json");
// DataTransferContext dtc = design.getTransferContexts().getFirst();
// ObjectNode main = dtc.getSrcFirstResource();
// ObjectNode wizard = (ObjectNode) dtc.getDstResource().getEdges().get(0).getDestination();
// ObjectNode goblin = dtc.getDataType();
//
//// ObjectNode wizard = new ObjectNode("Wizard");
//// MediatorInsertion mi = new MediatorInsertion(main, goblin, wizard, dtc.getTransferStyle());
//// design.addMediatorInsertion(mi);
//
// DependencyInversion di = new DependencyInversion(goblin, new InterfaceNode(goblin, "Target"));
// design.addDependencyInversion(di);
//
// return design;
// }
//}