dol: initial dol commit
[jump.git] / dol / src / dol / visitor / xml / MapXmlVisitor.java
diff --git a/dol/src/dol/visitor/xml/MapXmlVisitor.java b/dol/src/dol/visitor/xml/MapXmlVisitor.java
new file mode 100644 (file)
index 0000000..564715a
--- /dev/null
@@ -0,0 +1,193 @@
+/* $Id: MapXmlVisitor.java 1 2010-02-24 13:03:05Z haidw $ */\r
+package dol.visitor.xml;\r
+\r
+import dol.datamodel.XmlTag;\r
+import dol.datamodel.mapping.CommunicationBinding;\r
+import dol.datamodel.mapping.ComputationBinding;\r
+import dol.datamodel.mapping.Configuration;\r
+import dol.datamodel.mapping.Mapping;\r
+import dol.datamodel.mapping.Schedule;\r
+import dol.datamodel.mapping.ScheduleEntry;\r
+import dol.datamodel.mapping.SchedulingPolicy;\r
+import dol.datamodel.mapping.Variable;\r
+import dol.util.CodePrintString;\r
+import dol.visitor.MapVisitor;\r
+\r
+public class MapXmlVisitor extends MapVisitor {\r
+\r
+    /**\r
+     * Constructor.\r
+     *\r
+     * @param stringBuffer buffer where the result is stored\r
+     */\r
+    public MapXmlVisitor(StringBuffer stringBuffer) {\r
+        _ps = new CodePrintString(stringBuffer);\r
+    }\r
+\r
+    /**\r
+     *\r
+     * @param x mapping that needs to be rendered.\r
+     */\r
+    public void visitComponent(Mapping x) {\r
+        String xmlns = dol.util.SchemaLocation.\r
+                getMappingNamespace();\r
+        String xsiLocation = dol.util.SchemaLocation.\r
+                getMappingSchemaLocation();\r
+\r
+        _ps.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");\r
+        _ps.printOpeningTag(_xt.getMappingTag());\r
+        _ps.println(" xmlns=\"" + xmlns\r
+                    + "\" xmlns:xsi=\"http://www.w3.org/2001/"\r
+                    + "XMLSchema-instance\""\r
+                    + System.getProperty("line.separator")\r
+                    + "  xsi:schemaLocation=\""\r
+                    + xmlns + " " + xsiLocation + "\" name=\""\r
+                    + x.getName() + "\">");\r
+\r
+        // Visit variables\r
+        for(Variable v : x.getVarList()) {\r
+            v.accept(this);\r
+        }\r
+\r
+        // Visit computation bindings\r
+        for(ComputationBinding b : x.getCompBindList()) {\r
+            b.accept(this);\r
+        }\r
+\r
+        // Visit communication bindings\r
+        for(CommunicationBinding b : x.getCommBindList()) {\r
+            b.accept(this);\r
+        }\r
+\r
+        // Visit schedules\r
+        for(Schedule s : x.getScheduleList()) {\r
+            s.accept(this);\r
+        }\r
+\r
+        _ps.printClosingTag(_xt.getMappingTag());\r
+    }\r
+\r
+    /**\r
+     * \r
+     */\r
+    public void visitComponent(ComputationBinding x) {\r
+        _ps.printOpeningTag(_xt.getBindingTag());\r
+        _ps.println(" name=\"" + x.getName()\r
+                + "\" xsi:type=\"computation\">");\r
+\r
+        // Process\r
+        _ps.printPrefix();\r
+        String s = "<" + _xt.getProcessTag()\r
+                + " name=\"" + x.getProcess().getName() + "\"/>";\r
+        _ps.println(s);\r
+\r
+        // Processor\r
+        _ps.printPrefix();\r
+        s = "<" + _xt.getProcessorTag()\r
+            + " name=\"" + x.getProcessor().getName() + "\"/>";\r
+        _ps.println(s);\r
+        _ps.printClosingTag(_xt.getBindingTag());\r
+    }\r
+\r
+    /**\r
+     * \r
+     */\r
+    public void visitComponent(CommunicationBinding x) {\r
+        _ps.printOpeningTag(_xt.getBindingTag());\r
+        _ps.println(" name=\"" + x.getName()\r
+                + "\" xsi:type=\"communication\">");\r
+\r
+        // SW channel\r
+        _ps.printPrefix();\r
+        String s = "<" + _xt.getSWChannelTag()\r
+                + " name=\"" + x.getChannel().getName() + "\"/>";\r
+        _ps.println(s);\r
+\r
+        // Write path\r
+        _ps.printPrefix();\r
+        s = "<" + _xt.getWritePathTag()\r
+                + " name=\"" + x.getWritePath().getName() + "\"/>";\r
+        _ps.println(s);\r
+\r
+        // Read path\r
+        _ps.printPrefix();\r
+        s = "<" + _xt.getReadPathTag()\r
+            + " name=\"" + x.getReadPath().getName() + "\"/>";\r
+        _ps.println(s);\r
+\r
+        _ps.printClosingTag(_xt.getBindingTag());\r
+    }\r
+\r
+    /**\r
+     * \r
+     */\r
+    public void visitComponent(Schedule x) {\r
+        _ps.printOpeningTag(_xt.getScheduleTag());\r
+        _ps.println(" name=\"" + x.getName()\r
+                + "\" type=\""\r
+                + SchedulingPolicy.toString(x.getSchedPolicy()) + "\">");\r
+\r
+        // Resource\r
+        _ps.printPrefix();\r
+        String s = "<" + _xt.getResourceTag()\r
+                + " name=\"" + x.getResource().getName() + "\"/>";\r
+        _ps.println(s);\r
+\r
+        // Scheduler table entries\r
+        for (ScheduleEntry p : x.getEntryList()) {\r
+            p.accept(this);\r
+        }\r
+\r
+        // Configuration of schedule\r
+        for (Configuration c : x.getCfgList()) {\r
+            c.accept(this);\r
+        }\r
+\r
+        _ps.printClosingTag(_xt.getScheduleTag());\r
+    }\r
+\r
+    /**\r
+     * \r
+     */\r
+    public void visitComponent(ScheduleEntry x) {\r
+        if (x.getCfgList().size() == 0) {\r
+            _ps.printPrefixln("<" + _xt.getOriginTag() + " name=\""\r
+                    + x.getName() + "\"/>");\r
+        } else {\r
+            _ps.printOpeningTag(_xt.getOriginTag());\r
+            _ps.println(" name=\"" + x.getName() + "\">");\r
+    \r
+            // Configuration of the scheduler entry\r
+            for (Configuration c : x.getCfgList()) {\r
+                c.accept(this);\r
+            }\r
+\r
+           _ps.printClosingTag(_xt.getOriginTag());\r
+        }\r
+    }\r
+\r
+    /**\r
+     * \r
+     */\r
+    public void visitComponent(Variable x) {\r
+        _ps.printPrefix();\r
+        String s = "<" + _xt.getVariableTag()\r
+                + " name=\"" + x.getName() + "\""\r
+                + " value=\"" + Integer.toString(x.getValue()) + "\"/>";\r
+        _ps.println(s);\r
+    }\r
+\r
+    /**\r
+     * \r
+     */\r
+    public void visitComponent(Configuration x) {\r
+        _ps.printPrefix();\r
+        String s = "<" + _xt.getConfigurationTag()\r
+                + " name=\"" + x.getName() + "\""\r
+                + " value=\"" + x.getValue() + "\"/>";\r
+        _ps.println(s);\r
+    }\r
+\r
+    protected CodePrintString _ps = null;\r
+    protected XmlTag _xt = XmlTag.getInstance();\r
+}\r