1 /* $Id: RtemsPropertiesVisitor.java 1 2010-02-24 13:03:05Z haidw $ */
2 package dol.visitor.rtems;
4 import java.io.FileOutputStream;
5 import java.io.OutputStream;
6 import java.io.PrintStream;
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;
17 public class RtemsPropertiesVisitor extends PNVisitor {
19 protected String _dir = null;
21 public RtemsPropertiesVisitor(String dir) {
25 public void visitComponent(ProcessNetwork x) {
27 String filename = _dir + _delimiter + "properties";
28 OutputStream file = new FileOutputStream(filename);
29 PrintStream ps = new PrintStream(file);
31 ps.println(getProperties(x));
32 } catch (Exception e) {
33 System.out.println("RtemsPropertiesVisitor: "
34 + "exception occured: " + e.getMessage());
39 public String getProperties(ProcessNetwork x) {
41 String newline = System.getProperty("line.separator");
42 file += "<!-- Properties for ANT script for "
43 + "Multi-Processor System Testbed -->" + newline;
45 int maxProcessorIndex;
46 String processorList = null;
47 String processList = null;
49 if (_ui.getMappingFileName() == null) {
50 maxProcessorIndex = x.getProcessList().size() - 1;
52 ArchiXmlParser architectureParser =
54 Architecture architecture = architectureParser.doParse(
55 _ui.getPlatformFileName());
57 MapXmlParser mappingParser =
58 new MapXmlParser(x, architecture);
59 Mapping mapping = mappingParser.doParse(
60 _ui.getMappingFileName());
62 maxProcessorIndex = 0;
63 for (Processor p : mapping.getProcessorList()) {
64 if (p.getProcessList().size() > 0) {
66 Math.max(p.getIteratorIndices().elementAt(0),
70 //maxProcessorIndex = mapping.getProcessorList().size() - 1;
74 for (int i = 1; i <= maxProcessorIndex; i++) {
75 processorList += "," + (i + 1);
78 for (Process p : x.getProcessList()) {
79 if (processList == null) {
80 processList = p.getName();
82 processList += "," + p.getName();
87 file += "processors=" + (maxProcessorIndex + 1) + newline;
88 file += "processorList=" + processorList + newline;
89 file += "processList=" + processList + newline;