package designPatternExtensions.designPattern;
import designPatternExtensions.*;
import models.objectOrientedTransfer.*;
public class MediatorInsertionTest implements DesignPattern {
public DataTransferDesign create() throws IllegalRelationException {
DataTransferDesign design = ModelLoader.load("models/designPattern/MediatorInsertionTest.Json");
DataTransferContext dtc = design.getTransferContexts().getFirst();
ObjectNode a = dtc.getSrcFirstResource();
ObjectNode b = dtc.getDstFirstResource();
ObjectNode me = new ObjectNode("Me");
MediatorInsertion mi = new MediatorInsertion(a, b, me, dtc);
design.addMediatorInsertion(mi);
// ControlFlowInversion ci = new ControlFlowInversion(mi, PushPullValue.PUSH);
return design;
}
}
//Contextを持たせる理由
//DataTransferDesignにはContextのリストがあり、その時に、いずれかのコンテキストのデータ転送かを
//判別する必要があると思うので、それを区別するためにMediatorInsertionの引数に渡している
// A -PUSH-> B にMediatorInsertionする場合はnew MediatorInsertion(A, B, me);
// A -PULL-> B の時はnew MediatorInsertion(B, A, me);
// Meが主導に時はPULL->PUSHになる?