dol: initial dol commit
[jump.git] / dol / src / dol / visitor / xml / MapXmlVisitor.java
1 /* $Id: MapXmlVisitor.java 1 2010-02-24 13:03:05Z haidw $ */\r
2 package dol.visitor.xml;\r
3 \r
4 import dol.datamodel.XmlTag;\r
5 import dol.datamodel.mapping.CommunicationBinding;\r
6 import dol.datamodel.mapping.ComputationBinding;\r
7 import dol.datamodel.mapping.Configuration;\r
8 import dol.datamodel.mapping.Mapping;\r
9 import dol.datamodel.mapping.Schedule;\r
10 import dol.datamodel.mapping.ScheduleEntry;\r
11 import dol.datamodel.mapping.SchedulingPolicy;\r
12 import dol.datamodel.mapping.Variable;\r
13 import dol.util.CodePrintString;\r
14 import dol.visitor.MapVisitor;\r
15 \r
16 public class MapXmlVisitor extends MapVisitor {\r
17 \r
18     /**\r
19      * Constructor.\r
20      *\r
21      * @param stringBuffer buffer where the result is stored\r
22      */\r
23     public MapXmlVisitor(StringBuffer stringBuffer) {\r
24         _ps = new CodePrintString(stringBuffer);\r
25     }\r
26 \r
27     /**\r
28      *\r
29      * @param x mapping that needs to be rendered.\r
30      */\r
31     public void visitComponent(Mapping x) {\r
32         String xmlns = dol.util.SchemaLocation.\r
33                 getMappingNamespace();\r
34         String xsiLocation = dol.util.SchemaLocation.\r
35                 getMappingSchemaLocation();\r
36 \r
37         _ps.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");\r
38         _ps.printOpeningTag(_xt.getMappingTag());\r
39         _ps.println(" xmlns=\"" + xmlns\r
40                     + "\" xmlns:xsi=\"http://www.w3.org/2001/"\r
41                     + "XMLSchema-instance\""\r
42                     + System.getProperty("line.separator")\r
43                     + "  xsi:schemaLocation=\""\r
44                     + xmlns + " " + xsiLocation + "\" name=\""\r
45                     + x.getName() + "\">");\r
46 \r
47         // Visit variables\r
48         for(Variable v : x.getVarList()) {\r
49             v.accept(this);\r
50         }\r
51 \r
52         // Visit computation bindings\r
53         for(ComputationBinding b : x.getCompBindList()) {\r
54             b.accept(this);\r
55         }\r
56 \r
57         // Visit communication bindings\r
58         for(CommunicationBinding b : x.getCommBindList()) {\r
59             b.accept(this);\r
60         }\r
61 \r
62         // Visit schedules\r
63         for(Schedule s : x.getScheduleList()) {\r
64             s.accept(this);\r
65         }\r
66 \r
67         _ps.printClosingTag(_xt.getMappingTag());\r
68     }\r
69 \r
70     /**\r
71      * \r
72      */\r
73     public void visitComponent(ComputationBinding x) {\r
74         _ps.printOpeningTag(_xt.getBindingTag());\r
75         _ps.println(" name=\"" + x.getName()\r
76                 + "\" xsi:type=\"computation\">");\r
77 \r
78         // Process\r
79         _ps.printPrefix();\r
80         String s = "<" + _xt.getProcessTag()\r
81                 + " name=\"" + x.getProcess().getName() + "\"/>";\r
82         _ps.println(s);\r
83 \r
84         // Processor\r
85         _ps.printPrefix();\r
86         s = "<" + _xt.getProcessorTag()\r
87             + " name=\"" + x.getProcessor().getName() + "\"/>";\r
88         _ps.println(s);\r
89         _ps.printClosingTag(_xt.getBindingTag());\r
90     }\r
91 \r
92     /**\r
93      * \r
94      */\r
95     public void visitComponent(CommunicationBinding x) {\r
96         _ps.printOpeningTag(_xt.getBindingTag());\r
97         _ps.println(" name=\"" + x.getName()\r
98                 + "\" xsi:type=\"communication\">");\r
99 \r
100         // SW channel\r
101         _ps.printPrefix();\r
102         String s = "<" + _xt.getSWChannelTag()\r
103                 + " name=\"" + x.getChannel().getName() + "\"/>";\r
104         _ps.println(s);\r
105 \r
106         // Write path\r
107         _ps.printPrefix();\r
108         s = "<" + _xt.getWritePathTag()\r
109                 + " name=\"" + x.getWritePath().getName() + "\"/>";\r
110         _ps.println(s);\r
111 \r
112         // Read path\r
113         _ps.printPrefix();\r
114         s = "<" + _xt.getReadPathTag()\r
115             + " name=\"" + x.getReadPath().getName() + "\"/>";\r
116         _ps.println(s);\r
117 \r
118         _ps.printClosingTag(_xt.getBindingTag());\r
119     }\r
120 \r
121     /**\r
122      * \r
123      */\r
124     public void visitComponent(Schedule x) {\r
125         _ps.printOpeningTag(_xt.getScheduleTag());\r
126         _ps.println(" name=\"" + x.getName()\r
127                 + "\" type=\""\r
128                 + SchedulingPolicy.toString(x.getSchedPolicy()) + "\">");\r
129 \r
130         // Resource\r
131         _ps.printPrefix();\r
132         String s = "<" + _xt.getResourceTag()\r
133                 + " name=\"" + x.getResource().getName() + "\"/>";\r
134         _ps.println(s);\r
135 \r
136         // Scheduler table entries\r
137         for (ScheduleEntry p : x.getEntryList()) {\r
138             p.accept(this);\r
139         }\r
140 \r
141         // Configuration of schedule\r
142         for (Configuration c : x.getCfgList()) {\r
143             c.accept(this);\r
144         }\r
145 \r
146         _ps.printClosingTag(_xt.getScheduleTag());\r
147     }\r
148 \r
149     /**\r
150      * \r
151      */\r
152     public void visitComponent(ScheduleEntry x) {\r
153         if (x.getCfgList().size() == 0) {\r
154             _ps.printPrefixln("<" + _xt.getOriginTag() + " name=\""\r
155                     + x.getName() + "\"/>");\r
156         } else {\r
157             _ps.printOpeningTag(_xt.getOriginTag());\r
158             _ps.println(" name=\"" + x.getName() + "\">");\r
159     \r
160             // Configuration of the scheduler entry\r
161             for (Configuration c : x.getCfgList()) {\r
162                 c.accept(this);\r
163             }\r
164 \r
165            _ps.printClosingTag(_xt.getOriginTag());\r
166         }\r
167     }\r
168 \r
169     /**\r
170      * \r
171      */\r
172     public void visitComponent(Variable x) {\r
173         _ps.printPrefix();\r
174         String s = "<" + _xt.getVariableTag()\r
175                 + " name=\"" + x.getName() + "\""\r
176                 + " value=\"" + Integer.toString(x.getValue()) + "\"/>";\r
177         _ps.println(s);\r
178     }\r
179 \r
180     /**\r
181      * \r
182      */\r
183     public void visitComponent(Configuration x) {\r
184         _ps.printPrefix();\r
185         String s = "<" + _xt.getConfigurationTag()\r
186                 + " name=\"" + x.getName() + "\""\r
187                 + " value=\"" + x.getValue() + "\"/>";\r
188         _ps.println(s);\r
189     }\r
190 \r
191     protected CodePrintString _ps = null;\r
192     protected XmlTag _xt = XmlTag.getInstance();\r
193 }\r