--- /dev/null
+/* $Id: MappingFlattener.java 1 2010-02-24 13:03:05Z haidw $ */
+package dol.helper.flattener;
+
+import java.util.List;
+
+import org.jdom.Element;
+
+/**
+ *
+ */
+public class MappingFlattener extends FlattenerHelper {
+
+ /**
+ * Constructor.
+ *
+ * @param classname class name of the generated class
+ */
+ public MappingFlattener(String classname) {
+ super(classname);
+ }
+
+ public String processElement(Element element)
+ throws RuntimeException {
+
+ String string = "";
+
+ if (element.getName().equalsIgnoreCase("binding")) {
+ _generateElement = false;
+ string = generateBinding(element);
+ }
+ else if (element.getName().equalsIgnoreCase("path")) {
+ _generateElement = false;
+ string = generatePath(element);
+ }
+ else if (element.getName().equalsIgnoreCase("schedule")) {
+ _generateElement = false;
+ string = generateSchedule(element);
+ }
+
+ return string;
+ }
+
+ /**
+ *
+ */
+ @SuppressWarnings("unchecked")
+ protected String generatePath(Element element) {
+ String attributes[] = {"name"};
+ String sourceCode = generateElement(element, attributes, false);
+
+ //add origin and target elements
+ for (Element childElement : (List<Element>)element.getChildren()) {
+ if (childElement.getName().equalsIgnoreCase("origin")
+ || childElement.getName().equalsIgnoreCase("target")) {
+ sourceCode += generateOriginOrTarget(childElement);
+ }
+ else if (childElement.getName().equalsIgnoreCase("resource")) {
+ String rAttributes[] = {"name"};
+ increaseXmlIndent();
+ sourceCode += generateElement(childElement,rAttributes, false);
+ sourceCode += _indent +
+ "System.out.println(\"" + _xmlIndent + "</resource>\");\n";
+ decreaseXmlIndent();
+ }
+ else if (childElement.getName().equalsIgnoreCase("buffer")) {
+ String bAttributes[] = {"name"};
+ increaseXmlIndent();
+ sourceCode += generateElement(childElement,bAttributes, false);
+ sourceCode += _indent +
+ "System.out.println(\"" + _xmlIndent + "</buffer>\");\n";
+ decreaseXmlIndent();
+ }
+ }
+ sourceCode += _indent + "System.out.println(\"</path>\");\n";
+ return sourceCode;
+ }
+
+ /**
+ *
+ */
+ @SuppressWarnings("unchecked")
+ protected String generateSchedule(Element element) {
+ String attributes[] = {"name", "type"};
+ String sourceCode = generateElement(element, attributes, false);
+
+ //add origin and target elements
+
+ for (Element childElement : (List<Element>)element.getChildren()) {
+ if (childElement.getName().equalsIgnoreCase("origin")) {
+ sourceCode += generateOriginOrTarget(childElement);
+ }
+ else if (childElement.getName().equalsIgnoreCase("resource")) {
+ String rAttributes[] = {"name"};
+ increaseXmlIndent();
+ sourceCode += generateElement(childElement,rAttributes, false);
+ sourceCode += _indent +
+ "System.out.println(\"" + _xmlIndent + "</resource>\");\n";
+ decreaseXmlIndent();
+ }
+ }
+ sourceCode += _indent + "System.out.println(\"</schedule>\");\n";
+ return sourceCode;
+ }
+
+ /**
+ *
+ */
+ @SuppressWarnings("unchecked")
+ protected String generateBinding(Element element) {
+ String attributes[] = {"name", "type"};
+ String sourceCode = generateElement(element, attributes, false);
+
+ //add origin and target elements
+ for (Element childElement : (List<Element>)element.getChildren()) {
+ if (childElement.getName().equalsIgnoreCase("origin")
+ || childElement.getName().equalsIgnoreCase("target")) {
+ sourceCode += generateOriginOrTarget(childElement);
+ }
+ }
+ sourceCode += _indent + "System.out.println(\"</binding>\");\n";
+ return sourceCode;
+ }
+
+ /**
+ *
+ */
+ @SuppressWarnings("unchecked")
+ protected String generateOriginOrTarget(Element element) {
+ String attributes[] = {"name"};
+ increaseXmlIndent();
+ String sourceCode = generateElement(element, attributes, false);
+
+ //add configuration elements
+ for (Element childElement : (List<Element>)element.getChildren()) {
+ if (childElement.getName().equalsIgnoreCase(_xt.getConfigurationTag())) {
+ sourceCode += generateConfiguration(childElement);
+ }
+ }
+
+ sourceCode += _indent + "System.out.println(\"" + _xmlIndent + "</"
+ + element.getName() + ">\");\n";
+ decreaseXmlIndent();
+
+ return sourceCode;
+ }
+
+ protected String generateConfiguration(Element element) {
+ String attributes[] = {"name", "value"};
+ increaseXmlIndent();
+ String sourceCode = generateElement(element, attributes, true);
+ decreaseXmlIndent();
+ return sourceCode;
+ }
+
+
+}