dol: initial dol commit
[jump.git] / dol / src / dol / helper / flattener / MappingFlattener.java
diff --git a/dol/src/dol/helper/flattener/MappingFlattener.java b/dol/src/dol/helper/flattener/MappingFlattener.java
new file mode 100644 (file)
index 0000000..19ae0e7
--- /dev/null
@@ -0,0 +1,156 @@
+/* $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;
+    }
+
+
+}