summaryrefslogtreecommitdiffstats
path: root/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/main/Main.java
diff options
context:
space:
mode:
Diffstat (limited to 'collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/main/Main.java')
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/main/Main.java158
1 files changed, 158 insertions, 0 deletions
diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/main/Main.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/main/Main.java
new file mode 100755
index 0000000000..c933ece35c
--- /dev/null
+++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/main/Main.java
@@ -0,0 +1,158 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.diagram.main;
+
+import java.io.File;
+import java.io.StringWriter;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.tuscany.sca.diagram.generator.DiagramGenerator;
+import org.apache.tuscany.sca.diagram.html.HTMLWrapper;
+import org.apache.tuscany.sca.diagram.io.XMLReader;
+import org.apache.tuscany.sca.diagram.io.XMLWriter;
+import org.apache.tuscany.sca.diagram.layout.CompositeEntity;
+import org.apache.tuscany.sca.diagram.layout.EntityBuilder;
+import org.w3c.dom.Document;
+
+public class Main {
+ private static String outFileDir; //= System.getProperty("user.dir")+"/output/";
+ private static boolean isHtml = false;
+ private static boolean isSvg = false;
+
+ /**
+ * @param args
+ * @throws Exception
+ */
+ public static void main(String[] args) throws Exception {
+
+ if (args.length == 0) {
+
+ String help =
+ "" + "----------Apache Tuscany Composite Diagram Generator----------\n"
+ + "\n"
+ + "Error: You have not specified an input \"Composite XML\" file.\n"
+ + "\n"
+ + "-----------------------------Help-----------------------------\n"
+ + "You have 3 options:\n"
+ + "---1) Default: Specify \"Composite XML\" file paths separated \n"
+ + "--- by a space, with no arguments. This will"
+ + "--- generate SVG and HTML output.\n"
+ + "--- Eg: java -jar tuscany-composite-diagram-0.0.1.jar \n"
+ + "--- //a//aa//a.composite //b//bb//b.composite \n"
+ + "---\n"
+ + "---2) SVG Only: Specify \"Composite XML\" file paths separated\n"
+ + "--- by a space, with '-svg' argument.\n"
+ + "--- Eg: java -jar tuscany-composite-diagram-0.0.1.jar -svg\n"
+ + "--- //a//aa//a.composite //b//bb//b.composite \n"
+ + "---\n"
+ + "---3) HTML Only: Specify \"Composite XML\" file paths separated\n"
+ + "--- by a space, with '-html' argument.\n"
+ + "--- Eg: java -jar tuscany-composite-diagram-0.0.1.jar -html\n"
+ + "--- //a//aa//a.composite //b//bb//b.composite \n"
+ + "---\n";
+ System.out.println(help);
+ } else {
+
+ if (args[0].equalsIgnoreCase("-svg")) {
+ isSvg = true;
+ args[0] = null;
+ } else if (args[0].equalsIgnoreCase("-html")) {
+ isHtml = true;
+ args[0] = null;
+ } else {
+ isSvg = true;
+ isHtml = true;
+ }
+
+ for (String str : args) {
+
+ if (str != null) {
+
+ File in = new File(str);
+ outFileDir = in.getParent() + "//";
+ XMLReader reader = new XMLReader();
+ Document doc = reader.parseXMLFile(str);//composite1.xml composite_with_compositeService.xml");
+ EntityBuilder eb = new EntityBuilder(doc);
+ CompositeEntity comp = eb.buildCompositeEntity();
+
+ DiagramGenerator dg = new DiagramGenerator(comp, isHtml);
+ Document svg = dg.buildSVGDocument();
+
+ String svgContent = extractSvg(svg);
+
+ if (isSvg) {
+ writeSVG(svgContent, comp);
+ }
+
+ if (isHtml) {
+ writeHTML(svgContent, comp);
+ }
+
+ }
+ }
+ }
+ }
+
+ private static void writeHTML(String svg, CompositeEntity comp) throws Exception {
+
+ File htmlFile = new File(outFileDir + comp.getName() + comp.getFileNameSuffix() + ".html");
+ HTMLWrapper html = new HTMLWrapper(svg, comp.getName(), htmlFile);
+ String content = html.buildHTML();
+
+ System.err.println("--------------HTML Output for " + comp.getName() + "--------------\n");
+ System.out.println(content);
+ System.err.println("--------------------------------------------------------------\n");
+
+ }
+
+ private static void writeSVG(String svg, CompositeEntity comp) throws Exception {
+
+ String svgFileName = comp.getName() + comp.getFileNameSuffix() + ".svg";
+ File svgFile = new File(outFileDir + svgFileName);
+ XMLWriter writer = new XMLWriter();
+ writer.fileWriter(svg, svgFile);
+
+ System.err.println("--------------SVG Output for " + comp.getName() + "--------------\n");
+ System.out.println(svg);
+ System.err.println("-------------------------------------------------------------\n");
+ }
+
+ private static String extractSvg(Document svg) throws Exception {
+
+ // Set up the output transformer
+ TransformerFactory transfac = TransformerFactory.newInstance();
+ Transformer trans = transfac.newTransformer();
+
+ // Print the DOM node
+
+ StringWriter sw = new StringWriter();
+ StreamResult result = new StreamResult(sw);
+ DOMSource source = new DOMSource(svg);
+ trans.transform(source, result);
+ String svgString = sw.toString();
+
+ return svgString;
+ }
+
+}