X-Git-Url: http://sraa.de/git/?a=blobdiff_plain;f=dol%2Fsrc%2Fdol%2Fhelper%2Fflattener%2FPNFlattener.java;fp=dol%2Fsrc%2Fdol%2Fhelper%2Fflattener%2FPNFlattener.java;h=fc6af5317f64e3903a49047e2ababe0f32280f8c;hb=8c411cf24ed0eb889191aaeafd8fa1e69081df42;hp=0000000000000000000000000000000000000000;hpb=dea7a4fb1ed110d3ce6e6d9255103d724bd66c0e;p=jump.git diff --git a/dol/src/dol/helper/flattener/PNFlattener.java b/dol/src/dol/helper/flattener/PNFlattener.java new file mode 100644 index 0000000..fc6af53 --- /dev/null +++ b/dol/src/dol/helper/flattener/PNFlattener.java @@ -0,0 +1,184 @@ +/* $Id: PNFlattener.java 1 2010-02-24 13:03:05Z haidw $ */ +package dol.helper.flattener; + +import java.util.List; + +import org.jdom.Element; +import org.jdom.Namespace; + +/** + * + */ +public class PNFlattener extends FlattenerHelper { + + /** + * Constructor. + * + * @param classname class name of the generated class + */ + public PNFlattener(String classname) { + super(classname); + } + + public String processElement(Element element) + throws RuntimeException { + + String string = ""; + + _generateElement = true; + if (element.getName().equalsIgnoreCase(_xt.getProcessTag())) { + string = generateProcess(element); + } else if (element.getName().equalsIgnoreCase(_xt.getSWChannelTag())) { + string = generateChannel(element); + } else if (element.getName().equalsIgnoreCase(_xt.getPortTag())) { + string = generatePort(element); + } else if (element.getName().equalsIgnoreCase(_xt.getConfigurationTag())) { + string = generateConfiguration(element); + } else if (element.getName().equalsIgnoreCase(_xt.getProfilingTag())) { + string = generateProfiling(element); + } + + _generateElement = false; + + if (element.getName().equalsIgnoreCase(_xt.getConnectionTag())) { + string = generateConnection(element); + } + return string; + } + + /** + * + */ + @SuppressWarnings("unchecked") + protected String generateProcess(Element element) { + String attributes[] = {"name", "basename"}; + String sourceCode = generateElement(element, attributes, false); + + for (Element childElement : (List)element.getChildren()) { + if (!(childElement.getName().equalsIgnoreCase(_xt.getPortTag()) || + childElement.getName().equalsIgnoreCase(_xt.getSourceTag()) || + childElement.getName().equalsIgnoreCase(_xt.getConfigurationTag()) || + childElement.getName().equalsIgnoreCase(_xt.getProfilingTag()))) { + if (childElement.getName().equalsIgnoreCase(_xt.getIteratorTag())) { + sourceCode += generateIterator(childElement); + } + } else { + if (childElement.getName().equalsIgnoreCase(_xt.getPortTag())) { + sourceCode += generatePort(childElement); + } else if (childElement.getName().equalsIgnoreCase(_xt.getConfigurationTag())) { + sourceCode += generateConfiguration(childElement); + } else if (childElement.getName().equalsIgnoreCase(_xt.getProfilingTag())) { + sourceCode += generateProfiling(childElement); + } + else { + //source found + increaseXmlIndent(); + String[] sourceAttributes = {"location", "type"}; + sourceCode += generateElement(childElement, + sourceAttributes, true); + decreaseXmlIndent(); + } + } + } + sourceCode += _indent + "System.out.println(\"\");\n"; + return sourceCode; + } + + /** + * + */ + @SuppressWarnings("unchecked") + protected String generateChannel(Element element) { + String attributes[] = {"name", "type", "size", + "basename", "tokensize"}; + String sourceCode = generateElement(element, attributes, false); + + for (Element childElement : (List)element.getChildren()) { + if (childElement.getName().equalsIgnoreCase(_xt.getPortTag())) { + sourceCode += generatePort(childElement); + } else if (childElement.getName().equalsIgnoreCase(_xt.getConfigurationTag())) { + sourceCode += generateConfiguration(childElement); + } else if (childElement.getName().equalsIgnoreCase(_xt.getProfilingTag())) { + sourceCode += generateProfiling(childElement); + } + } + sourceCode += _indent + "System.out.println(\"\");\n"; + return sourceCode; + } + + protected String generatePort(Element element) { + String attributes[] = {"name", "type", "basename"}; + increaseXmlIndent(); + String sourceCode = generateElement(element, attributes, true); + decreaseXmlIndent(); + return sourceCode; + } + + protected String generateConfiguration(Element element) { + String attributes[] = {"name", "value"}; + increaseXmlIndent(); + String sourceCode = generateElement(element, attributes, true); + decreaseXmlIndent(); + return sourceCode; + } + + protected String generateProfiling(Element element) { + String attributes[] = {"name", "value"}; + increaseXmlIndent(); + String sourceCode = generateElement(element, attributes, true); + decreaseXmlIndent(); + return sourceCode; + } + + /** + * + */ + @SuppressWarnings("unchecked") + protected String generateConnection(Element element) { + String attributes[] = {"name"}; + String sourceCode = generateElement(element, attributes, false); + + //add origin and target elements + for (Element childElement : (List)element.getChildren()) { + if (childElement.getName().equalsIgnoreCase("origin")) { + //origin found + increaseXmlIndent(); + sourceCode += generateElement(childElement, attributes, false); + + Namespace ns = childElement.getNamespace(); + Element portElement = childElement.getChild("port", ns); + if (portElement != null) { + increaseXmlIndent(); + String[] portAttributes = {"name"}; + sourceCode += generateElement(portElement, + portAttributes, true); + decreaseXmlIndent(); + } + decreaseXmlIndent(); + sourceCode += _indent + + "System.out.println(\" \");\n"; + } + else if (childElement.getName().equalsIgnoreCase(_xt.getTargetTag())) { + //target found + increaseXmlIndent(); + sourceCode += generateElement(childElement, attributes, false); + + Namespace ns = childElement.getNamespace(); + Element portElement = childElement.getChild(_xt.getPortTag(), ns); + if (portElement != null) { + increaseXmlIndent(); + String[] portAttributes = {"name"}; + sourceCode += generateElement(portElement, + portAttributes, true); + decreaseXmlIndent(); + } + decreaseXmlIndent(); + sourceCode += _indent + + "System.out.println(\" \");\n"; + } + } + sourceCode += _indent + "System.out.println(\"\");\n"; + return sourceCode; + } +}