dol: initial dol commit
[jump.git] / dol / src / dol / visitor / rtems / RtemsPropertiesVisitor.java
1 /* $Id: RtemsPropertiesVisitor.java 1 2010-02-24 13:03:05Z haidw $ */
2 package dol.visitor.rtems;
3
4 import java.io.FileOutputStream;
5 import java.io.OutputStream;
6 import java.io.PrintStream;
7
8 import dol.datamodel.architecture.Architecture;
9 import dol.datamodel.architecture.Processor;
10 import dol.datamodel.mapping.Mapping;
11 import dol.datamodel.pn.Process;
12 import dol.datamodel.pn.ProcessNetwork;
13 import dol.parser.xml.archischema.ArchiXmlParser;
14 import dol.parser.xml.mapschema.MapXmlParser;
15 import dol.visitor.PNVisitor;
16
17 public class RtemsPropertiesVisitor extends PNVisitor {
18
19     protected String _dir = null;
20
21     public RtemsPropertiesVisitor(String dir) {
22         _dir = dir;
23     }
24
25     public void visitComponent(ProcessNetwork x) {
26         try {
27             String filename = _dir + _delimiter + "properties";
28             OutputStream file = new FileOutputStream(filename);
29             PrintStream ps = new PrintStream(file);
30
31             ps.println(getProperties(x));
32         } catch (Exception e) {
33             System.out.println("RtemsPropertiesVisitor: "
34                     + "exception occured: " + e.getMessage());
35             e.printStackTrace();
36         }
37     }
38
39     public String getProperties(ProcessNetwork x) {
40         String file = "";
41         String newline = System.getProperty("line.separator");
42         file += "<!-- Properties for ANT script for "
43                 + "Multi-Processor System Testbed -->" + newline;
44
45         int maxProcessorIndex;
46         String processorList = null;
47         String processList = null;
48
49         if (_ui.getMappingFileName() == null) {
50             maxProcessorIndex = x.getProcessList().size() - 1;
51         } else {
52             ArchiXmlParser architectureParser =
53                 new ArchiXmlParser();
54             Architecture architecture = architectureParser.doParse(
55                 _ui.getPlatformFileName());
56
57             MapXmlParser mappingParser =
58                 new MapXmlParser(x, architecture);
59             Mapping mapping = mappingParser.doParse(
60                 _ui.getMappingFileName());
61
62             maxProcessorIndex = 0;
63             for (Processor p : mapping.getProcessorList()) {
64                 if (p.getProcessList().size() > 0) {
65                     maxProcessorIndex =
66                             Math.max(p.getIteratorIndices().elementAt(0),
67                                      maxProcessorIndex);
68                 }
69             }
70             //maxProcessorIndex = mapping.getProcessorList().size() - 1;
71         }
72
73         processorList = "1";
74         for (int i = 1; i <= maxProcessorIndex; i++) {
75             processorList += "," + (i + 1);
76         }
77
78         for (Process p : x.getProcessList()) {
79             if (processList == null) {
80                 processList = p.getName();
81             } else {
82                 processList += "," + p.getName();
83             }
84         }
85
86
87         file += "processors=" + (maxProcessorIndex + 1) + newline;
88         file += "processorList=" + processorList + newline;
89         file += "processList=" + processList + newline;
90
91         return file;
92     }
93 }