====== Generic approach to model conversion ======
Notation: ''src'' -- source; ''dst'' -- destination.
* Convert math model of ''src'' to math model of ''dst''.
* Use node creation methods that can generate necessary hierarchy in ''dst'' model based on ''src'' node reference.
* Provide a method for generation of visual ''dst'' model for math ''dst'' and use the information from visual ''src'' model.
interface MathModelConverter {
TSrcModel getSrcModel();
TDstModel getDstModel();
Map, Class extends MathNode>> getNodeClassMap();
String convertNodeName(String srcName, Container container);
Container getRefToDstPage(String ref);
MathNode getSrcToDstNode(MathNode srcNode);
void preprocessing();
void postprocessing();
PageNode convertPage(PageNode srcPage);
MathNode convertNode(MathNode srcNode);
Connection convertConnection(Connection srcConnection);
}
public interface VisualModelConverter {
TSrcModel getSrcModel();
TDstModel getDstModel();
Map, Class extends MathNode>> getComponentClassMap();
Map, Class extends VisualReplica>> getReplicaClassMap();
String convertNodeName(String srcName, Container container);
Container getRefToDstPage(String ref);
VisualNode getSrcToDstNode(VisualNode srcNode);
void preprocessing();
void postprocessing();
VisualPage convertPage(VisualPage srcPage);
VisualComponent convertComponent(VisualComponent srcComponent);
VisualReplica convertReplica(VisualReplica srcReplica);
VisualGroup convertGroup(VisualGroup srcGroup);
VisualConnection convertConnection(VisualConnection srcConnection);
}