1 /* $Id: PNFlattener.java 1 2010-02-24 13:03:05Z haidw $ */
2 package dol.helper.flattener;
6 import org.jdom.Element;
7 import org.jdom.Namespace;
12 public class PNFlattener extends FlattenerHelper {
17 * @param classname class name of the generated class
19 public PNFlattener(String classname) {
23 public String processElement(Element element)
24 throws RuntimeException {
28 _generateElement = true;
29 if (element.getName().equalsIgnoreCase(_xt.getProcessTag())) {
30 string = generateProcess(element);
31 } else if (element.getName().equalsIgnoreCase(_xt.getSWChannelTag())) {
32 string = generateChannel(element);
33 } else if (element.getName().equalsIgnoreCase(_xt.getPortTag())) {
34 string = generatePort(element);
35 } else if (element.getName().equalsIgnoreCase(_xt.getConfigurationTag())) {
36 string = generateConfiguration(element);
37 } else if (element.getName().equalsIgnoreCase(_xt.getProfilingTag())) {
38 string = generateProfiling(element);
41 _generateElement = false;
43 if (element.getName().equalsIgnoreCase(_xt.getConnectionTag())) {
44 string = generateConnection(element);
52 @SuppressWarnings("unchecked")
53 protected String generateProcess(Element element) {
54 String attributes[] = {"name", "basename"};
55 String sourceCode = generateElement(element, attributes, false);
57 for (Element childElement : (List<Element>)element.getChildren()) {
58 if (!(childElement.getName().equalsIgnoreCase(_xt.getPortTag()) ||
59 childElement.getName().equalsIgnoreCase(_xt.getSourceTag()) ||
60 childElement.getName().equalsIgnoreCase(_xt.getConfigurationTag()) ||
61 childElement.getName().equalsIgnoreCase(_xt.getProfilingTag()))) {
62 if (childElement.getName().equalsIgnoreCase(_xt.getIteratorTag())) {
63 sourceCode += generateIterator(childElement);
66 if (childElement.getName().equalsIgnoreCase(_xt.getPortTag())) {
67 sourceCode += generatePort(childElement);
68 } else if (childElement.getName().equalsIgnoreCase(_xt.getConfigurationTag())) {
69 sourceCode += generateConfiguration(childElement);
70 } else if (childElement.getName().equalsIgnoreCase(_xt.getProfilingTag())) {
71 sourceCode += generateProfiling(childElement);
76 String[] sourceAttributes = {"location", "type"};
77 sourceCode += generateElement(childElement,
78 sourceAttributes, true);
83 sourceCode += _indent + "System.out.println(\"</process>\");\n";
90 @SuppressWarnings("unchecked")
91 protected String generateChannel(Element element) {
92 String attributes[] = {"name", "type", "size",
93 "basename", "tokensize"};
94 String sourceCode = generateElement(element, attributes, false);
96 for (Element childElement : (List<Element>)element.getChildren()) {
97 if (childElement.getName().equalsIgnoreCase(_xt.getPortTag())) {
98 sourceCode += generatePort(childElement);
99 } else if (childElement.getName().equalsIgnoreCase(_xt.getConfigurationTag())) {
100 sourceCode += generateConfiguration(childElement);
101 } else if (childElement.getName().equalsIgnoreCase(_xt.getProfilingTag())) {
102 sourceCode += generateProfiling(childElement);
105 sourceCode += _indent + "System.out.println(\"</sw_channel>\");\n";
109 protected String generatePort(Element element) {
110 String attributes[] = {"name", "type", "basename"};
112 String sourceCode = generateElement(element, attributes, true);
117 protected String generateConfiguration(Element element) {
118 String attributes[] = {"name", "value"};
120 String sourceCode = generateElement(element, attributes, true);
125 protected String generateProfiling(Element element) {
126 String attributes[] = {"name", "value"};
128 String sourceCode = generateElement(element, attributes, true);
136 @SuppressWarnings("unchecked")
137 protected String generateConnection(Element element) {
138 String attributes[] = {"name"};
139 String sourceCode = generateElement(element, attributes, false);
141 //add origin and target elements
142 for (Element childElement : (List<Element>)element.getChildren()) {
143 if (childElement.getName().equalsIgnoreCase("origin")) {
146 sourceCode += generateElement(childElement, attributes, false);
148 Namespace ns = childElement.getNamespace();
149 Element portElement = childElement.getChild("port", ns);
150 if (portElement != null) {
152 String[] portAttributes = {"name"};
153 sourceCode += generateElement(portElement,
154 portAttributes, true);
158 sourceCode += _indent +
159 "System.out.println(\" </" + _xt.getOriginTag()+">\");\n";
161 else if (childElement.getName().equalsIgnoreCase(_xt.getTargetTag())) {
164 sourceCode += generateElement(childElement, attributes, false);
166 Namespace ns = childElement.getNamespace();
167 Element portElement = childElement.getChild(_xt.getPortTag(), ns);
168 if (portElement != null) {
170 String[] portAttributes = {"name"};
171 sourceCode += generateElement(portElement,
172 portAttributes, true);
176 sourceCode += _indent +
177 "System.out.println(\" </"+_xt.getTargetTag()+">\");\n";
180 sourceCode += _indent + "System.out.println(\"</"
181 + _xt.getConnectionTag() + ">\");\n";