====== 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> 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> getComponentClassMap(); Map, Class> 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); }