+/* $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