From 30cc7a1752f630f7e0a333da0194f627ee8d4b13 Mon Sep 17 00:00:00 2001 From: rfeng Date: Thu, 1 Sep 2011 16:22:37 +0000 Subject: Rename packages to reflect the functions git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1164133 13f79535-47bb-0310-9956-ffa450edef68 --- .../tuscany/sca/diagram/artifacts/Artifact.java | 120 ++++ .../sca/diagram/artifacts/ComponentArtifact.java | 59 ++ .../sca/diagram/artifacts/CompositeArtifact.java | 57 ++ .../tuscany/sca/diagram/artifacts/Constant.java | 26 + .../tuscany/sca/diagram/artifacts/DashedWire.java | 81 +++ .../tuscany/sca/diagram/artifacts/Layer.java | 60 ++ .../apache/tuscany/sca/diagram/artifacts/Link.java | 41 ++ .../tuscany/sca/diagram/artifacts/NormalWire.java | 45 ++ .../sca/diagram/artifacts/PropertyArtifact.java | 58 ++ .../sca/diagram/artifacts/ReferenceArtifact.java | 86 +++ .../sca/diagram/artifacts/ServiceArtifact.java | 95 +++ .../apache/tuscany/sca/diagram/artifacts/Text.java | 38 ++ .../sca/diagram/artifacts/WireArtifact.java | 86 +++ .../sca/diagram/generator/DiagramGenerator.java | 602 +++++++++++++++++ .../tuscany/sca/diagram/html/HTMLWrapper.java | 90 +++ .../apache/tuscany/sca/diagram/io/XMLReader.java | 42 ++ .../apache/tuscany/sca/diagram/io/XMLWriter.java | 42 ++ .../sca/diagram/layout/ComponentEntity.java | 236 +++++++ .../sca/diagram/layout/CompositeEntity.java | 374 +++++++++++ .../apache/tuscany/sca/diagram/layout/Entity.java | 259 ++++++++ .../tuscany/sca/diagram/layout/EntityBuilder.java | 733 +++++++++++++++++++++ .../tuscany/sca/diagram/layout/LayoutBuilder.java | 183 +++++ .../layout/TuscanyCompositeEntityBuilder.java | 359 ++++++++++ .../org/apache/tuscany/sca/diagram/main/Main.java | 158 +++++ .../tuscany/sca/impl/artifacts/Artifact.java | 120 ---- .../sca/impl/artifacts/ComponentArtifact.java | 59 -- .../sca/impl/artifacts/CompositeArtifact.java | 57 -- .../tuscany/sca/impl/artifacts/Constant.java | 26 - .../tuscany/sca/impl/artifacts/DashedWire.java | 81 --- .../apache/tuscany/sca/impl/artifacts/Layer.java | 60 -- .../apache/tuscany/sca/impl/artifacts/Link.java | 41 -- .../tuscany/sca/impl/artifacts/NormalWire.java | 45 -- .../sca/impl/artifacts/PropertyArtifact.java | 58 -- .../sca/impl/artifacts/ReferenceArtifact.java | 86 --- .../sca/impl/artifacts/ServiceArtifact.java | 95 --- .../apache/tuscany/sca/impl/artifacts/Text.java | 38 -- .../tuscany/sca/impl/artifacts/WireArtifact.java | 86 --- .../tuscany/sca/impl/diagram/DiagramGenerator.java | 602 ----------------- .../apache/tuscany/sca/impl/html/HTMLWrapper.java | 90 --- .../org/apache/tuscany/sca/impl/io/XMLReader.java | 42 -- .../org/apache/tuscany/sca/impl/io/XMLWriter.java | 42 -- .../tuscany/sca/impl/layout/ComponentEntity.java | 236 ------- .../tuscany/sca/impl/layout/CompositeEntity.java | 374 ----------- .../org/apache/tuscany/sca/impl/layout/Entity.java | 259 -------- .../tuscany/sca/impl/layout/EntityBuilder.java | 733 --------------------- .../tuscany/sca/impl/layout/LayoutBuilder.java | 183 ----- .../impl/layout/TuscanyCompositeEntityBuilder.java | 359 ---------- .../java/org/apache/tuscany/sca/main/Main.java | 158 ----- .../sca/diagram/layout/LayoutBuilderTestCase.java | 141 ++++ 49 files changed, 4071 insertions(+), 3930 deletions(-) create mode 100644 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Artifact.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ComponentArtifact.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/CompositeArtifact.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Constant.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/DashedWire.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Layer.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Link.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/NormalWire.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/PropertyArtifact.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ReferenceArtifact.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ServiceArtifact.java create mode 100644 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Text.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/WireArtifact.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/generator/DiagramGenerator.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/html/HTMLWrapper.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/io/XMLReader.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/io/XMLWriter.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/ComponentEntity.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/CompositeEntity.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/Entity.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/EntityBuilder.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/LayoutBuilder.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/TuscanyCompositeEntityBuilder.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/main/Main.java delete mode 100644 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Artifact.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ComponentArtifact.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/CompositeArtifact.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Constant.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/DashedWire.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Layer.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Link.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/NormalWire.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/PropertyArtifact.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ReferenceArtifact.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ServiceArtifact.java delete mode 100644 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Text.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/WireArtifact.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/diagram/DiagramGenerator.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/html/HTMLWrapper.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/io/XMLReader.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/io/XMLWriter.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/ComponentEntity.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/CompositeEntity.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/Entity.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/LayoutBuilder.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/TuscanyCompositeEntityBuilder.java delete mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/main/Main.java create mode 100755 collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/test/java/org/apache/tuscany/sca/diagram/layout/LayoutBuilderTestCase.java (limited to 'collaboration') diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Artifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Artifact.java new file mode 100644 index 0000000000..0a16a797c2 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Artifact.java @@ -0,0 +1,120 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public abstract class Artifact { + + private String name; + private String containerName; + private int height; + private int width; + private int xCoordinate; + private int yCoordinate; + private Document doc; + private String svgNs; + private static final String ROUND_CORNER = "20"; + + /** + * Abstract method + * @param document DOM document + * @param svgNs namespace URI + * @param x x-coordinate + * @param y y-coordinate + * @param height height of the shape + * @param width width of the shape + * @return DOM Element + */ + public abstract Element addElement(Document document, String svgNs, int x, int y, int height, int width); + + // public abstract Element addElement(Document document, String svgNs, + // int x, int y); + + public int getHeight() { + return height; + } + + public void setHeight(int height) { + this.height = height; + } + + public int getWidth() { + return width; + } + + public void setWidth(int width) { + this.width = width; + } + + public int getxCoordinate() { + return xCoordinate; + } + + public void setxCoordinate(int xCoordinate) { + this.xCoordinate = xCoordinate; + } + + public int getyCoordinate() { + return yCoordinate; + } + + public void setyCoordinate(int yCoordinate) { + this.yCoordinate = yCoordinate; + } + + public Document getDoc() { + return doc; + } + + public void setDoc(Document doc) { + this.doc = doc; + } + + public String getSvgNs() { + return svgNs; + } + + public void setSvgNs(String svgNs) { + this.svgNs = svgNs; + } + + public static String getRoundCorner() { + return ROUND_CORNER; + } + + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setContainerName(String containerName) { + this.containerName = containerName; + } + + public String getContainerName() { + return containerName; + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ComponentArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ComponentArtifact.java new file mode 100755 index 0000000000..96a1d6ad1c --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ComponentArtifact.java @@ -0,0 +1,59 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class ComponentArtifact extends Artifact { + + /** + * Create an element with specified height and width + */ + public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { + + this.setHeight(height); + this.setWidth(width); + this.setxCoordinate(x); + this.setyCoordinate(y); + + Element rectangle = document.createElementNS(svgNs, "rect"); + rectangle.setAttributeNS(null, "x", x + ""); + rectangle.setAttributeNS(null, "y", y + ""); + rectangle.setAttributeNS(null, "rx", getRoundCorner()); + rectangle.setAttributeNS(null, "ry", getRoundCorner()); + rectangle.setAttributeNS(null, "width", width + ""); + rectangle.setAttributeNS(null, "height", height + ""); + rectangle.setAttributeNS(null, "fill", "#3D59AB"); + rectangle.setAttributeNS(null, "stroke", "#104E8B"); + rectangle.setAttributeNS(null, "fill-opacity", "0.75"); + return rectangle; + } + + /** + * Create an element with default height and width + */ + public Element addElement(Document document, String svgNs, int x, int y) { + + return addElement(document, svgNs, x, y, Constant.COMPONENT_DEFAULT_HEIGHT, Constant.COMPONENT_DEFAULT_WIDTH); + + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/CompositeArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/CompositeArtifact.java new file mode 100755 index 0000000000..38285cac2a --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/CompositeArtifact.java @@ -0,0 +1,57 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * Structure of a "Composite" element in SCA, as a SVG element + * + */ +public class CompositeArtifact extends Artifact { + + public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { + + this.setHeight(height); + this.setWidth(width); + this.setxCoordinate(x); + this.setyCoordinate(y); + + Element rectangle = document.createElementNS(svgNs, "rect"); + rectangle.setAttributeNS(null, "x", x + ""); + rectangle.setAttributeNS(null, "y", y + ""); + rectangle.setAttributeNS(null, "rx", getRoundCorner()); + rectangle.setAttributeNS(null, "ry", getRoundCorner()); + rectangle.setAttributeNS(null, "width", width + ""); + rectangle.setAttributeNS(null, "height", height + ""); + rectangle.setAttributeNS(null, "fill", "#E5E5E5"); + rectangle.setAttributeNS(null, "stroke", "#919191"); + rectangle.setAttributeNS(null, "alignment-baseline", "middle"); + + return rectangle; + } + + // //OBSOLETE + // public Element addElement(Document document, String svgNs, int x, int y) { + // return null; + // } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Constant.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Constant.java new file mode 100755 index 0000000000..52e9e3e054 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Constant.java @@ -0,0 +1,26 @@ +package org.apache.tuscany.sca.diagram.artifacts; + +public final class Constant { + + public static final int COMPONENT_DEFAULT_WIDTH = 200; + public static final int COMPONENT_DEFAULT_HEIGHT = 130; + public static final int COMPONENT_TEXT_SPACING = 20; + + public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_PROPERTY = 20; + public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_PROPERTY = 60; + public static final int SPACING_FOR_COMPONENT_OF_PROPERTY = 20; + public static final int SPACING_FOR_COMPOSITE_OF_PROPERTY = 60; + + public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_REFERENCE = 30; + public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_REFERENCE = 90; + public static final int SPACING_FOR_COMPONENT_OF_REFERENCE = 10; + public static final int SPACING_FOR_COMPOSITE_OF_REFERENCE = 50; + + public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_SERVICE = 30; + public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_SERVICE = 90; + public static final int SPACING_FOR_COMPONENT_OF_SERVICE = 10; + public static final int SPACING_FOR_COMPOSITE_OF_SERVICE = 50; + + public static final int SPACING_FOR_TEXT = 1; + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/DashedWire.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/DashedWire.java new file mode 100755 index 0000000000..4f9c741ab6 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/DashedWire.java @@ -0,0 +1,81 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class DashedWire extends WireArtifact { + + @Override + public Element addElement(Document document, String svgNs, Object a, Object b, int changingFactor, String color) { + + Element polyline = document.createElementNS(svgNs, "polyline"); + int x1 = 0, x2 = 0, y1 = 0, y2 = 0; + + if (a instanceof ServiceArtifact && b instanceof ServiceArtifact) { + + ServiceArtifact aService1 = (ServiceArtifact)a; + ServiceArtifact aService2 = (ServiceArtifact)b; + + x1 = aService1.getxCoordinate() + aService1.getHeight() * 3 / 2; + y1 = aService1.getyCoordinate() + aService1.getHeight() / 2; + + x2 = aService2.getxCoordinate() + aService2.getHeight() / 2; + y2 = aService2.getyCoordinate() + aService2.getHeight() / 2; + + } + + else if (a instanceof ReferenceArtifact && b instanceof ReferenceArtifact) { + + ReferenceArtifact aReference1 = (ReferenceArtifact)a; + ReferenceArtifact aReference2 = (ReferenceArtifact)b; + + x1 = aReference1.getxCoordinate() + aReference1.getHeight() * 3 / 2; + y1 = aReference1.getyCoordinate() + aReference1.getHeight() / 2; + + x2 = aReference2.getxCoordinate() + aReference2.getHeight() / 2; + y2 = aReference2.getyCoordinate() + aReference2.getHeight() / 2; + + } + + polyline = setWireAttributes(x1, y1, x2, y2, polyline, changingFactor, color); + + polyline.setAttributeNS(null, "stroke-dasharray", "3 3"); + + return polyline; + } + + /** + * + ]]> + + + + */ + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Layer.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Layer.java new file mode 100755 index 0000000000..fa2d44f89f --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Layer.java @@ -0,0 +1,60 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * Structure of a "Outermost layer" : not a SCA artifact + * + */ +public class Layer extends Artifact { + + public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { + + this.setHeight(height); + this.setWidth(width); + this.setxCoordinate(x); + this.setyCoordinate(y); + + Element rectangle = document.createElementNS(svgNs, "rect"); + rectangle.setAttributeNS(null, "x", x + ""); + rectangle.setAttributeNS(null, "y", y + ""); + rectangle.setAttributeNS(null, "rx", getRoundCorner()); + rectangle.setAttributeNS(null, "ry", getRoundCorner()); + rectangle.setAttributeNS(null, "width", width + ""); + rectangle.setAttributeNS(null, "height", height + ""); + rectangle.setAttributeNS(null, "fill", "#E5E5D0"); + rectangle.setAttributeNS(null, "stroke", "#919191"); + rectangle.setAttributeNS(null, "alignment-baseline", "middle"); + + return rectangle; + } + + public Element addElement(Document document, String svgNs, int x, int y, int height, int width, String fillColor) { + + Element rect = addElement(document, svgNs, x, y, height, width); + rect.setAttributeNS(null, "fill", fillColor); + + return rect; + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Link.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Link.java new file mode 100755 index 0000000000..a0cbee344c --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Link.java @@ -0,0 +1,41 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * An "a" element to link two SVG diagrams: not a SCA artifact + * + */ +public class Link { + + public Element addElement(Document document, String svgNs, String fileName, String compName) { + + Element link = document.createElementNS(svgNs, "a"); + link.setAttributeNS(null, "xlink:href", fileName); + link.setAttributeNS(null, "xlink:show", "new"); + link.setTextContent(" " + compName + " ,"); + + return link; + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/NormalWire.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/NormalWire.java new file mode 100755 index 0000000000..7611c004aa --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/NormalWire.java @@ -0,0 +1,45 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class NormalWire extends WireArtifact { + + @Override + public Element addElement(Document document, String svgNs, Object a, Object b, int changingFactor, String color) { + + ReferenceArtifact aReference = (ReferenceArtifact)a; + ServiceArtifact aService = (ServiceArtifact)b; + + Element polyline = document.createElementNS(svgNs, "polyline"); + int x1 = aReference.getxCoordinate() + aReference.getHeight() * 3 / 2; + int y1 = aReference.getyCoordinate() + aReference.getHeight() / 2; + + int x2 = aService.getxCoordinate() + aService.getHeight() / 2; + int y2 = aService.getyCoordinate() + aService.getHeight() / 2; + + polyline = setWireAttributes(x1, y1, x2, y2, polyline, changingFactor, color); + + return polyline; + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/PropertyArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/PropertyArtifact.java new file mode 100755 index 0000000000..4b13c0de64 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/PropertyArtifact.java @@ -0,0 +1,58 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class PropertyArtifact extends Artifact { + + /** + * Property is a square. + * ___ + * | | + * |___| + * + */ + public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { + + this.setHeight(height); + this.setWidth(width); + this.setxCoordinate(x); + this.setyCoordinate(y); + + Element rectangle = document.createElementNS(svgNs, "rect"); + rectangle.setAttributeNS(null, "x", x + ""); + rectangle.setAttributeNS(null, "y", y + ""); + rectangle.setAttributeNS(null, "width", height + ""); + rectangle.setAttributeNS(null, "height", height + ""); + rectangle.setAttributeNS(null, "fill", "#EEEE00"); + rectangle.setAttributeNS(null, "stroke", "#EEC900"); + //rectangle.setAttributeNS(null, "fill-opacity", "0.75"); + + return rectangle; + } + + public Element addElement(Document document, String svgNs, int x, int y, int height) { + + return addElement(document, svgNs, x, y, height, height); + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ReferenceArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ReferenceArtifact.java new file mode 100755 index 0000000000..87ecba2af7 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ReferenceArtifact.java @@ -0,0 +1,86 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class ReferenceArtifact extends Artifact { + + /** + * In a Reference the (x,y) coordinates refers to the top corner edge of the polygon + * (x,y)______ + * \ \ + * \ \ + * / / + * /____ / + */ + public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { + + this.setHeight(height); + this.setWidth(width); + this.setxCoordinate(x); + this.setyCoordinate(y); + + int halfOfHeight = height / 2; + + Element polygon = document.createElementNS(svgNs, "polygon"); + polygon.setAttributeNS(null, "points", "" + x + + "," + + y + + " " + + "" + + (x + 2 * halfOfHeight) + + "," + + (y) + + " " + + "" + + (x + 3 * halfOfHeight) + + "," + + (y + halfOfHeight) + + " " + + "" + + (x + 2 * halfOfHeight) + + "," + + (y + 2 * halfOfHeight) + + " " + + "" + + (x) + + "," + + (y + 2 * halfOfHeight) + + " " + + "" + + (x + halfOfHeight) + + "," + + (y + halfOfHeight) + + " "); + + polygon.setAttributeNS(null, "fill", "#BF3EFF"); + polygon.setAttributeNS(null, "stroke", "#68228B"); + + return polygon; + } + + public Element addElement(Document document, String svgNs, int x, int y, int height) { + + return this.addElement(document, svgNs, x, y, height, height * 3 / 2); + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ServiceArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ServiceArtifact.java new file mode 100755 index 0000000000..d7c312f729 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/ServiceArtifact.java @@ -0,0 +1,95 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class ServiceArtifact extends Artifact { + + /** + * In a Service the (x,y) coordinates refers to the top corner edge of the polygon + * (x,y)______ + * \ \ + * \ \ + * / / + * /____ / + */ + public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { + + this.setHeight(height); + this.setWidth(width); + this.setxCoordinate(x); + this.setyCoordinate(y); + + int halfOfHeight = height / 2; + + Element polygon = document.createElementNS(svgNs, "polygon"); + polygon.setAttributeNS(null, "points", "" + x + + "," + + y + + " " + + "" + + (x + 2 * halfOfHeight) + + "," + + (y) + + " " + + "" + + (x + 3 * halfOfHeight) + + "," + + (y + halfOfHeight) + + " " + + "" + + (x + 2 * halfOfHeight) + + "," + + (y + 2 * halfOfHeight) + + " " + + "" + + (x) + + "," + + (y + 2 * halfOfHeight) + + " " + + "" + + (x + halfOfHeight) + + "," + + (y + halfOfHeight) + + " "); + + polygon.setAttributeNS(null, "fill", "#00CD66"); + polygon.setAttributeNS(null, "stroke", "#008B45"); + + return polygon; + } + + /** + * Width is 3/2 times of the height + * @param document + * @param svgNs + * @param x + * @param y + * @param height + * @return + */ + public Element addElement(Document document, String svgNs, int x, int y, int height) { + + return this.addElement(document, svgNs, x, y, height, height * 3 / 2); + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Text.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Text.java new file mode 100644 index 0000000000..ec4563254a --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/Text.java @@ -0,0 +1,38 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class Text { + + public static Element addTextElement(Document document, String svgNs, int x, int y, String content) { + Element text = document.createElementNS(svgNs, "text"); + text.setAttributeNS(null, "x", x + ""); + text.setAttributeNS(null, "y", y + ""); + //text.setAttributeNS(null, "text-anchor", "middle"); + text.setAttributeNS(null, "dominant-baseline", "mathematical"); + text.setAttributeNS(null, "font-size", "15"); + text.setTextContent(content); + + return text; + } +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/WireArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/WireArtifact.java new file mode 100755 index 0000000000..0b3e83b9c2 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/artifacts/WireArtifact.java @@ -0,0 +1,86 @@ +/* + * 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.artifacts; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public abstract class WireArtifact { + + public abstract Element addElement(Document document, + String svgNs, + Object a, + Object b, + int changingFactor, + String color); + + public Element setWireAttributes(int x1, int y1, int x2, int y2, Element polyline, int changingFactor, String color) { + + if (y1 == y2 && x2 > x1) { + polyline.setAttributeNS(null, "points", x1 + "," + y1 + " " + x2 + "," + y2); + } else if (y1 == y2 && x1 > x2) { + polyline.setAttributeNS(null, "points", x1 + "," + + y1 + + " " + + (x1 + changingFactor) + + "," + + y1 + + " " + + (x1 + changingFactor) + + "," + + (y1 - (changingFactor * 2)) + + " " + + (x2 - changingFactor) + + "," + + (y1 - (changingFactor * 2)) + + " " + + (x2 - changingFactor) + + "," + + (y1) + + " " + + (x2) + + "," + + (y1)); + + } else { + polyline.setAttributeNS(null, "points", x1 + "," + + y1 + + " " + + (x1 + changingFactor) + + "," + + y1 + + " " + + (x1 + changingFactor) + + "," + + y2 + + " " + + x2 + + "," + + y2); + } + + polyline.setAttributeNS(null, "stroke", color); + polyline.setAttributeNS(null, "stroke-width", "2"); + polyline.setAttributeNS(null, "fill", "none"); + + return polyline; + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/generator/DiagramGenerator.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/generator/DiagramGenerator.java new file mode 100755 index 0000000000..511bced0e8 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/generator/DiagramGenerator.java @@ -0,0 +1,602 @@ +/* + * 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.generator; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Map.Entry; + +import org.apache.batik.dom.svg.SVGDOMImplementation; +import org.apache.tuscany.sca.diagram.artifacts.ComponentArtifact; +import org.apache.tuscany.sca.diagram.artifacts.CompositeArtifact; +import org.apache.tuscany.sca.diagram.artifacts.Constant; +import org.apache.tuscany.sca.diagram.artifacts.DashedWire; +import org.apache.tuscany.sca.diagram.artifacts.Layer; +import org.apache.tuscany.sca.diagram.artifacts.Link; +import org.apache.tuscany.sca.diagram.artifacts.NormalWire; +import org.apache.tuscany.sca.diagram.artifacts.PropertyArtifact; +import org.apache.tuscany.sca.diagram.artifacts.ReferenceArtifact; +import org.apache.tuscany.sca.diagram.artifacts.ServiceArtifact; +import org.apache.tuscany.sca.diagram.artifacts.Text; +import org.apache.tuscany.sca.diagram.artifacts.WireArtifact; +import org.apache.tuscany.sca.diagram.layout.ComponentEntity; +import org.apache.tuscany.sca.diagram.layout.CompositeEntity; +import org.apache.tuscany.sca.diagram.layout.Entity; +import org.w3c.dom.DOMImplementation; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class DiagramGenerator { + + private CompositeEntity comp; + private Document doc; + private String svgNS; + private Element svgRoot; + private ArrayList refs = new ArrayList(); + private ArrayList sers = new ArrayList(); + private int diagramHeight, diagramWidth; + + private boolean isHtml; + + private int lastUsedChangingFactor = 0; + + enum changingFactor { + a(20), b(25), c(30), d(35), e(40), f(15); + + private final int val; + + private changingFactor(int x) { + val = x; + } + + public int getVal() { + return val; + } + + }; + + enum color { + black + }//, violet, red, green}; + + private int previousWireColor = 0; + + /** + * Constructor to generate a SVG diagram for a given CompositeEntity + * Object. + */ + public DiagramGenerator(CompositeEntity comp, boolean isHtml) { + + this.comp = comp; + this.isHtml = isHtml; + + } + + /** + * Draws the diagram. + */ + public Document buildSVGDocument() { + + DOMImplementation impl = SVGDOMImplementation.getDOMImplementation(); + svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; + doc = impl.createDocument(svgNS, "svg", null); + + // Get the root element (the 'svg' element). + svgRoot = doc.getDocumentElement(); + + setDiagramHeight(comp.getHeight() + 200); + setDiagramWidth(comp.getWidth() + 400); + + svgRoot.setAttributeNS(null, "viewBox", "0 0 " + getDiagramWidth() + " " + getDiagramHeight()); + + addLayer(); + addComposite(); + + for (ComponentEntity ent : comp.getComponentList()) { + + addComponent(ent); + addComponentProperties(ent); + addComponentService(ent); + addComponentReference(ent); + } + + addCompositeProperties(); + addCompositeService(); + addCompositeReference(); + + addComponentConnections(); + addReferencePromotion(); + addServicePromotion(); + + addInclusions(); + + return doc; + } + + private void addLayer() { + + Layer outerLayer = new Layer(); + Element layerElt = outerLayer.addElement(doc, svgNS, 0, 0, getDiagramHeight(), getDiagramWidth()); + svgRoot.appendChild(layerElt); + } + + private void addReferencePromotion() { + + for (Iterator it = comp.getPromoteAReference().entrySet().iterator(); it.hasNext();) { + Entry entry = (Entry)it.next(); + String compositeRef = (String)entry.getKey(); + ArrayList componentRef = (ArrayList)entry.getValue(); + + ReferenceArtifact r1 = getRef(compositeRef); + + for (String ref : componentRef) { + + ReferenceArtifact r2 = getRef(ref); + + if (r1 != null && r2 != null) { + addWire(r2, r1); + } + } + + } + } + + private void addServicePromotion() { + + for (Iterator it = comp.getPromoteAService().entrySet().iterator(); it.hasNext();) { + Entry entry = (Entry)it.next(); + String compositeSer = (String)entry.getKey(); + String componentSer = (String)entry.getValue(); + + ServiceArtifact s1 = getSer(compositeSer); + ServiceArtifact s2 = getSer(componentSer); + + if (s1 != null && s2 != null) { + addWire(s1, s2); + } + } + } + + private void addInclusions() { + + if (!comp.getIncludedComposites().isEmpty()) { + + Layer inclusionLayer = new Layer(); + int constant = 5; + int x0 = comp.getX() + constant; + int y0 = comp.getY() + comp.getHeight() - (Constant.COMPONENT_DEFAULT_HEIGHT / 2 + constant); + int height = Constant.COMPONENT_DEFAULT_HEIGHT / 2; + int width = comp.getWidth() - constant * 2; + + Element layerElt = inclusionLayer.addElement(doc, svgNS, x0, y0, height, width, "#E5E5C0"); + + Element text = Text.addTextElement(doc, svgNS, x0 + constant, y0 + constant * 2, "Included Composites"); + + svgRoot.appendChild(layerElt); + svgRoot.appendChild(text); + + text = Text.addTextElement(doc, svgNS, x0 + constant, y0 + constant * 7, ""); + + String ext; + + if (isHtml) { + ext = ".html"; + } else { + ext = ".svg"; + } + + for (String includedComposite : comp.getIncludedComposites()) { + + Link link = new Link(); + Element aLink = + link.addElement(doc, svgNS, includedComposite + comp.getFileNameSuffix() + ext, includedComposite); + text.appendChild(aLink); + + } + svgRoot.appendChild(text); + } + } + + /** + * Connects references to services. + */ + private void addComponentConnections() { + + for (Entity ent : comp.getComponentList()) { + //if(ent instanceof ComponentEntity){ + + for (Iterator it = ((ComponentEntity)ent).getReferenceToServiceMap().entrySet().iterator(); it.hasNext();) { + Entry entry = (Entry)it.next(); + String ref = (String)entry.getKey(); + String ser = (String)entry.getValue(); + + ReferenceArtifact r = getRef(ref); + ServiceArtifact s = getSer(ser); + + if (r != null && s != null) { + addWire(r, s); + } + } + //} + } + } + + /** + * This is to remove overlapping of wire elements + */ + private String getColor() { + + previousWireColor = previousWireColor % color.values().length; + return color.values()[previousWireColor++].toString(); + } + + /** + * This is to remove overlapping of wire elements + */ + private int getChangingFactor() { + + lastUsedChangingFactor = lastUsedChangingFactor % changingFactor.values().length; + return changingFactor.values()[lastUsedChangingFactor++].getVal(); + + } + + private void addWire(ReferenceArtifact r, ServiceArtifact s) { + + WireArtifact edge = new NormalWire(); + Element wire = edge.addElement(doc, svgNS, r, s, getChangingFactor(), getColor()); + svgRoot.appendChild(wire); + } + + private void addWire(ServiceArtifact s1, ServiceArtifact s2) { + + DashedWire edge = new DashedWire(); + Element wire = edge.addElement(doc, svgNS, s1, s2, getChangingFactor(), getColor()); + svgRoot.appendChild(wire); + } + + private void addWire(ReferenceArtifact r1, ReferenceArtifact r2) { + + DashedWire edge = new DashedWire(); + Element wire = edge.addElement(doc, svgNS, r1, r2, getChangingFactor(), getColor()); + svgRoot.appendChild(wire); + } + + private ServiceArtifact getSer(String ser) { + + for (ServiceArtifact s : sers) { + if (s.getContainerName().equals(ser) || s.getName().equals(ser)) { + return s; + } + } + return null; + } + + private ReferenceArtifact getRef(String ref) { + + for (ReferenceArtifact r : refs) { + + if (r.getContainerName().equals(ref) || r.getName().equals(ref)) { + return r; + } + } + return null; + } + + private void addComponentProperties(ComponentEntity ent) { + int propLen = ent.getPropLength(); + int x = ent.getX() + Constant.SPACING_FOR_COMPONENT_OF_PROPERTY; + int y = ent.getY() - propLen / 2; + + for (String prop : ent.getProperties()) { + PropertyArtifact pro = new PropertyArtifact(); + Element property = pro.addElement(doc, svgNS, x, y, propLen); + Element text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, prop); + + svgRoot.appendChild(property); + svgRoot.appendChild(text); + + x += (propLen + Constant.SPACING_FOR_COMPONENT_OF_PROPERTY); + + pro.setName(prop); + pro.setContainerName(ent.getName()); + } + } + + private void addComponentReference(ComponentEntity ent) { + + int refHeight = ent.getRefHeight(); + int x = (ent.getX() + ent.getWidth()) - (refHeight * 2 / 3); + int y = ent.getY() + Constant.SPACING_FOR_COMPONENT_OF_REFERENCE; + + for (String ref : setRefOrder(ent)) { + ReferenceArtifact refer = new ReferenceArtifact(); + Element polygon = refer.addElement(doc, svgNS, x, y, refHeight); + Element text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ref); + svgRoot.appendChild(polygon); + svgRoot.appendChild(text); + + y += (refHeight + Constant.SPACING_FOR_COMPONENT_OF_REFERENCE); + + refer.setName(ref); + refer.setContainerName(ent.getName()); + refs.add(refer); + + } + } + + /** + * This method is used to organize the Component References, + * in a manner where they are stay approximately in-line with the + * connecting Service. This would enhance the clearness of the diagram. + */ + private String[] setRefOrder(ComponentEntity e) { + + ArrayList refs = e.getReferences(); + ArrayList sers = new ArrayList(); + String[] orderedRefs = new String[refs.size()]; + + //sers = new ArrayList(e.getReferenceToServiceMap().values()); + + sers = buildReferenceToMappingServiceList(refs, e); + + for (String eName : e.getAdjacentEntities()) { + for (Entity ent : comp.getComponentList()) { + + if (ent.getName().equals(eName)) { + for (String s : sers) { + for (String s1 : ent.getServices()) { + //System.err.println("XXXXX "+ s1 +" ::: "+s); + if (s1.equals(s) || s.equals(ent.getName())) { + //System.err.println("|||||||| "+ sers.size()+ " ||| " + refs.size()+"|| "+orderedRefs.length); + if (orderedRefs[ent.getLevel()] == null) { + //System.err.println("XXXXX "+ sers.get(1)+ " ::::::: "+refs.get(1)); + // System.err.println("XXXXX "+ sers.get(2)+ " ::::::: "+refs.get(2)); + // System.err.println("XXXXX "+ sers.get(3)+ " ::::::: "+refs.get(3)); + //System.err.println("XXXXX "+ refs.get(sers.indexOf(s))+" ::: "+ent.getLevel()+" ::: "+ent.getName()); + orderedRefs[ent.getLevel()] = refs.get(sers.indexOf(s)); + break; + } else { + for (int i = ent.getLevel(); i < orderedRefs.length; i++) { + if (orderedRefs[i] == null) { + + orderedRefs[i] = refs.get(sers.indexOf(s)); + break; + } + // else{ + // if(i==orderedRefs.length) + // System.out.println("GRRR"); + // } + } + } + } + } + } + } + } + } + + //adding references which are not connected to any service + for (String ref : refs) { + for (int i = 0; i < orderedRefs.length; i++) { + if (ref.equals(orderedRefs[i])) { + break; + } else if (orderedRefs[i] == null) { + orderedRefs[i] = ref; + break; + } + } + } + + return orderedRefs; + } + + private ArrayList buildReferenceToMappingServiceList(ArrayList refs, ComponentEntity e) { + + ArrayList sers = new ArrayList(); + + for (int i = 0; i < refs.size(); i++) { + sers.add(i, ""); + } + + for (Iterator it = e.getReferenceToServiceMap().entrySet().iterator(); it.hasNext();) { + + Entry entry = (Entry)it.next(); + String ref = (String)entry.getKey(); + String ser = (String)entry.getValue(); + //System.out.println("---------"+ref); + int idx = refs.indexOf(ref); + //System.out.println("---------"+sers.get(idx)); + sers.remove(idx); + sers.add(idx, ser); + //System.out.println(refs.get(idx)+"---"+sers.get(idx)); + + } + + return sers; + } + + private void addComponentService(ComponentEntity ent) { + int serHeight = ent.getSerHeight(); + int x = ent.getX() - (serHeight * 2 / 3); + int y = ent.getY() + Constant.SPACING_FOR_COMPONENT_OF_SERVICE; + + //System.out.println("''''''"+ent.getName() +" '''''' "+ ent.getServices().size()); + for (String ser : ent.getServices()) { + + ServiceArtifact serve = new ServiceArtifact(); + Element polygon = serve.addElement(doc, svgNS, x, y, serHeight); + Element text; + if (!ser.endsWith("Impl")) + text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ser); + else + text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ""); + + svgRoot.appendChild(polygon); + svgRoot.appendChild(text); + + y += (serHeight + Constant.SPACING_FOR_COMPONENT_OF_SERVICE); + + serve.setName(ser); + serve.setContainerName(ent.getName()); + sers.add(serve); + } + } + + private void addCompositeService() { + + int serHeight = comp.getSerHeight(); + int x = comp.getX() - (serHeight * 2 / 3); + int y = + comp.getY() + getStartingPoint(comp.getHeight(), serHeight, Constant.SPACING_FOR_COMPOSITE_OF_SERVICE, comp + .getServices().size()); + + //int y= comp.getY() + Constant.SPACING_FOR_COMPOSITE_OF_SERVICE; + + //System.err.println(serHeight); + //System.out.println("''''''"+((CompositeEntity)comp).getName() +" '''''' "+ comp.getServices().size()); + for (String ser : comp.getServices()) { + + ServiceArtifact serve = new ServiceArtifact(); + Element polygon = serve.addElement(doc, svgNS, x, y, serHeight); + Element text; + if (!ser.endsWith("Impl")) + text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ser); + else + text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ""); + + svgRoot.appendChild(polygon); + svgRoot.appendChild(text); + + y += (serHeight + Constant.SPACING_FOR_COMPOSITE_OF_SERVICE); + + serve.setName(ser); + serve.setContainerName(comp.getName()); + sers.add(serve); + } + } + + private void addCompositeReference() { + + int refHeight = comp.getRefHeight(); + + int x = (comp.getX() + comp.getWidth()) - (refHeight * 2 / 3); + int y = + comp.getY() + getStartingPoint(comp.getHeight(), + refHeight, + Constant.SPACING_FOR_COMPOSITE_OF_REFERENCE, + comp.getReferences().size()); + + for (String ref : comp.getReferences()) { + ReferenceArtifact refer = new ReferenceArtifact(); + Element polygon = refer.addElement(doc, svgNS, x, y, refHeight); + Element text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ref); + svgRoot.appendChild(polygon); + svgRoot.appendChild(text); + + y += (refHeight + Constant.SPACING_FOR_COMPOSITE_OF_REFERENCE); + + refer.setName(ref); + refer.setContainerName(comp.getName()); + refs.add(refer); + + } + + } + + //Algorithm to position in center + private int getStartingPoint(int compDim, int artifactDim, int gap, int artifactQty) { + + int x = (compDim - artifactQty * artifactDim - (artifactQty - 1) * gap) / 2; + return x; + } + + private void addCompositeProperties() { + int propLen = comp.getPropLength(); + + int x = + comp.getX() + getStartingPoint(comp.getWidth(), propLen, Constant.SPACING_FOR_COMPOSITE_OF_PROPERTY, comp + .getProperties().size()); + //int x= comp.getX() + Constant.SPACING_FOR_COMPOSITE_OF_PROPERTY; + int y = comp.getY() - propLen / 2; + + for (String prop : comp.getProperties()) { + PropertyArtifact pro = new PropertyArtifact(); + Element property = pro.addElement(doc, svgNS, x, y, propLen); + Element text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, prop); + + svgRoot.appendChild(property); + svgRoot.appendChild(text); + + x += (propLen + Constant.SPACING_FOR_COMPOSITE_OF_PROPERTY); + + pro.setName(prop); + pro.setContainerName(comp.getName()); + } + } + + private void addComponent(Entity ent) { + + ComponentArtifact comp = new ComponentArtifact(); + //System.err.println(ent.getX()); + Element com = comp.addElement(doc, svgNS, ent.getX(), ent.getY(), ent.getHeight(), ent.getWidth()); + Element text = + Text.addTextElement(doc, + svgNS, + ent.getX(), + ent.getY() + (ent.getHeight() + Constant.COMPONENT_TEXT_SPACING), + ent.getName()); + + svgRoot.appendChild(com); + svgRoot.appendChild(text); + + comp.setName(ent.getName()); + } + + private void addComposite() { + + CompositeArtifact composite = new CompositeArtifact(); + + Element composi = composite.addElement(doc, svgNS, comp.getX(), comp.getY(), comp.getHeight(), comp.getWidth()); + Element text = Text.addTextElement(doc, svgNS, comp.getX() + 20, comp.getY() + 20, comp.getName()); + + svgRoot.appendChild(composi); + svgRoot.appendChild(text); + + composite.setName(comp.getName()); + + } + + public void setDiagramHeight(int diagramHeight) { + this.diagramHeight = diagramHeight; + } + + public int getDiagramHeight() { + return diagramHeight; + } + + public void setDiagramWidth(int diagramWidth) { + this.diagramWidth = diagramWidth; + } + + public int getDiagramWidth() { + return diagramWidth; + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/html/HTMLWrapper.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/html/HTMLWrapper.java new file mode 100755 index 0000000000..cf399bf23c --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/html/HTMLWrapper.java @@ -0,0 +1,90 @@ +/* + * 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.html; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; + +public class HTMLWrapper { + + private File htmlFilePath; + private String compositeName; + private String svg; + + /** + * + * @param svg + * @param compositeName + * @param htmlFilePath + */ + public HTMLWrapper(String svg, String compositeName, File htmlFilePath) { + + this.svg = svg; + this.compositeName = compositeName; + this.htmlFilePath = htmlFilePath; + } + + public String buildHTML() throws Exception { + String content = + "" + "\n" + + "\n" + + "

Apache Tuscany - Composite Diagram Generator

\n" + + "

" + + compositeName + + "

\n" + + "
\n" + + + // "\n" + + // "\n" + + // "\n" + + "\n" + + "\n" + + svg + + "\n" + + + // "\n" + + // "\n" + + "\n" + + ""; + + fileWriter(content); + + return content; + + } + + private void fileWriter(String content) throws Exception { + + FileWriter fileWriter = new FileWriter(htmlFilePath); + BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); + bufferedWriter.append(content); + bufferedWriter.close(); + + } +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/io/XMLReader.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/io/XMLReader.java new file mode 100755 index 0000000000..087c6370f8 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/io/XMLReader.java @@ -0,0 +1,42 @@ +/* + * 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.io; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.Document; + +public class XMLReader { + + //get the factory + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + private Document dom; + + public Document parseXMLFile(String file) throws Exception { + //Using factory get an instance of document builder + DocumentBuilder db = dbf.newDocumentBuilder(); + + //parse using builder to get DOM representation of the XML file + dom = db.parse(file); + + return dom; + } +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/io/XMLWriter.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/io/XMLWriter.java new file mode 100755 index 0000000000..b1d87e1381 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/io/XMLWriter.java @@ -0,0 +1,42 @@ +/* + * 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.io; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; + +public class XMLWriter { + + public void fileWriter(String content, File outFile) throws Exception { + + FileWriter fileWriter = new FileWriter(outFile); + BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); + bufferedWriter.write(content); + bufferedWriter.close(); + + // TransformerFactory transformerFactory = TransformerFactory.newInstance(); + // Transformer transformer = transformerFactory.newTransformer(); + // DOMSource source = new DOMSource(doc); + // StreamResult result = new StreamResult(bufferedWriter); + // transformer.transform(source, result); + + } +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/ComponentEntity.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/ComponentEntity.java new file mode 100755 index 0000000000..626394fd44 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/ComponentEntity.java @@ -0,0 +1,236 @@ +/* + * 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.layout; + +import java.util.HashMap; + +import org.apache.tuscany.sca.diagram.artifacts.Constant; + +/** + * Represents an unit (a component including its references, services, properties + * and adjacent units) in the diagram. + * + */ +public class ComponentEntity extends Entity { + + // private String componentName; + // private int X, Y, level=-1, lane=-1, refHeight, serHeight, propLength; + // private final int height= Component.DEFAULT_HEIGHT, width= Component.DEFAULT_WIDTH; + // public static final int defaultNoOfSers= Component.DEFAULT_HEIGHT / (Service.MAXIMUM_HEIGHT+Service.SPACING); + // public static final int defaultNoOfRefs= Component.DEFAULT_HEIGHT / (Reference.MAXIMUM_HEIGHT+Reference.SPACING); //same value for defaultNoOfSers + // public static final int defaultNoOfProps= Component.DEFAULT_WIDTH / (Property.MAXIMUM_HEIGHT+Property.SPACING); + + private HashMap referenceToServiceMap = new HashMap(); + + //private HashSet connectedEntities = new HashSet(); + + public ComponentEntity() { + + setStartPosition(200); + setHeight(Constant.COMPONENT_DEFAULT_HEIGHT); + setWidth(Constant.COMPONENT_DEFAULT_WIDTH); + + setDefaultNoOfSers(Constant.COMPONENT_DEFAULT_HEIGHT / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_SERVICE + Constant.SPACING_FOR_COMPONENT_OF_SERVICE)); + setDefaultNoOfRefs(Constant.COMPONENT_DEFAULT_HEIGHT / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_REFERENCE + Constant.SPACING_FOR_COMPONENT_OF_REFERENCE)); + setDefaultNoOfProps(Constant.COMPONENT_DEFAULT_WIDTH / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_PROPERTY + Constant.SPACING_FOR_COMPONENT_OF_PROPERTY)); + } + + public void referenceHeight() { + if (getDefaultNoOfRefs() < getNoOfRefs()) { + + setRefHeight((Constant.COMPONENT_DEFAULT_HEIGHT / getNoOfRefs()) - Constant.SPACING_FOR_COMPONENT_OF_REFERENCE); + } else + setRefHeight(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_REFERENCE); + } + + public void serviceHeight() { + if (getDefaultNoOfSers() < getNoOfSers()) { + + setSerHeight((Constant.COMPONENT_DEFAULT_HEIGHT / getNoOfSers()) - Constant.SPACING_FOR_COMPONENT_OF_SERVICE); + } else + setSerHeight(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_SERVICE); + } + + public void propertyLength() { + if (getDefaultNoOfProps() < getNoOfProps()) { + + setPropLength((Constant.COMPONENT_DEFAULT_WIDTH / getNoOfProps()) - Constant.SPACING_FOR_COMPONENT_OF_PROPERTY); + } else + setPropLength(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_PROPERTY); + } + + /** + * Put a value to referenceToServiceMap + * @param ref + * @param ser + * @return successfully added or not + */ + //assumption there can not be two services for the same reference + public boolean addToRefToSerMap(String ref, String ser) { + //ref = ref.toLowerCase(); + //ser = ser.toLowerCase(); + + if (referenceToServiceMap.containsKey(ref)) + return false; + + referenceToServiceMap.put(ref, ser); + return true; + } + + /** + * Retrieve a service name for a given reference + * @param ref + * @return service name + */ + public String getSerOfRef(String ref) { + //ref = ref.toLowerCase(); + + if (!referenceToServiceMap.containsKey(ref)) + return null; + + return referenceToServiceMap.get(ref); + } + + public HashMap getReferenceToServiceMap() { + return referenceToServiceMap; + } + + public void setReferenceToServiceMap(HashMap referenceToServiceMap) { + this.referenceToServiceMap = referenceToServiceMap; + } + + // public int getNoOfRefs(){ + // return references.size(); + // } + // + // public int getNoOfSers(){ + // return services.size(); + // } + // + // public int getNoOfProps(){ + // return properties.size(); + // } + // + // public int getNoOfAdjacentUnits(){ + // return adjacentEntities.size(); + // } + // + // /** + // * Put a value to referenceToServiceMap + // * @param ref + // * @param ser + // * @return successfully added or not + // */ + // //assumption there can not be two services for the same reference + // public boolean addToRefToSerMap(String ref, String ser){ + // //ref = ref.toLowerCase(); + // //ser = ser.toLowerCase(); + // + // if (referenceToServiceMap.containsKey(ref)) + // return false; + // + // referenceToServiceMap.put(ref, ser); + // return true; + // } + // + // /** + // * Retrieve a service name for a given reference + // * @param ref + // * @return service name + // */ + // public String getSerOfRef(String ref){ + // //ref = ref.toLowerCase(); + // + // if (!referenceToServiceMap.containsKey(ref)) + // return null; + // + // return referenceToServiceMap.get(ref); + // } + // + // public void addAService(String serName){ + // //serName = serName.toLowerCase(); + // services.add(serName); + // + // } + // + // public void addAReference(String refName){ + // //refName = refName.toLowerCase(); + // references.add(refName); + // + // } + // + // public void addAProperty(String propName){ + // //propName = propName.toLowerCase(); + // properties.add(propName); + // + // } + // + // public void addAnAdjacentEntity(String x){ + //// System.out.println("eee "+x); + // adjacentEntities.add(x); + // + // } + // + // public void addAnConnectedEntity(String x){ + //// System.out.println("eee "+x); + // adjacentEntities.add(x); + // + // } + // + // public HashMap getReferenceToServiceMap() { + // return referenceToServiceMap; + // } + // public void setReferenceToServiceMap( + // HashMap referenceToServiceMap) { + // this.referenceToServiceMap = referenceToServiceMap; + // } + // public ArrayList getProperties() { + // return properties; + // } + // public void setProperties(ArrayList properties) { + // this.properties = properties; + // } + // public HashSet getAdjacentEntities() { + // return adjacentEntities; + // } + // public void setAdjacentEntities(HashSet adjacentEntities) { + // this.adjacentEntities = adjacentEntities; + // } + // public void setServices(ArrayList services) { + // this.services = services; + // } + // + // public ArrayList getServices() { + // return services; + // } + // + // public ArrayList getReferences() { + // return references; + // } + + // public void setConnectedEntities(HashSet connectedEntities) { + // this.connectedEntities = connectedEntities; + // } + // + // public HashSet getConnectedEntities() { + // return connectedEntities; + // } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/CompositeEntity.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/CompositeEntity.java new file mode 100755 index 0000000000..258dcbcaa3 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/CompositeEntity.java @@ -0,0 +1,374 @@ +/* + * 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.layout; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.apache.tuscany.sca.diagram.artifacts.Constant; + +/** + * Represents an unit (a component including its references, services, properties + * and adjacent units) in the diagram. + * + */ +public class CompositeEntity extends Entity { + + // private String componentName; + // private int X, Y, level=-1, lane=-1, refHeight, serHeight, propLength; + // private final int height= Component.DEFAULT_HEIGHT, width= Component.DEFAULT_WIDTH; + // public static final int defaultNoOfSers= Component.DEFAULT_HEIGHT / (Service.MAXIMUM_HEIGHT+Service.SPACING); + // public static final int defaultNoOfRefs= Component.DEFAULT_HEIGHT / (Reference.MAXIMUM_HEIGHT+Reference.SPACING); //same value for defaultNoOfSers + // public static final int defaultNoOfProps= Component.DEFAULT_WIDTH / (Property.MAXIMUM_HEIGHT+Property.SPACING); + + private final String fileNameSuffix = "_diagram"; + private int maxInternalLevel = 0; + private int maxInternalLane = 0; + private ComponentEntity[] componentList; + private int[][] connections; + private HashMap promoteAService = new HashMap(); + private HashMap> promoteAReference = new HashMap>(); + private ArrayList includedComposites = new ArrayList(); + + //private HashSet connectedEntities = new HashSet(); + + public CompositeEntity(String name) { + + setStartPosition(200); + setLevel(0); + setLane(0); + + setX(getStartPosition()); + setY(getStartPosition() / 2); + + setName(name); + //componentList = comps; + //setConnections(conns); + + } + + public void referenceHeight() { + //System.err.println(getDefaultNoOfRefs() + " kkkkkkk "+getNoOfRefs()); + + if (getDefaultNoOfRefs() < getNoOfRefs()) { + + setRefHeight((getHeight() / getNoOfRefs()) - Constant.SPACING_FOR_COMPOSITE_OF_REFERENCE); + } else + setRefHeight(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_REFERENCE); + } + + public void serviceHeight() { + if (getDefaultNoOfSers() < getNoOfSers()) { + setSerHeight((getHeight() / getNoOfSers()) - Constant.SPACING_FOR_COMPOSITE_OF_SERVICE); + } else + setSerHeight(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_SERVICE); + } + + public void propertyLength() { + if (getDefaultNoOfProps() < getNoOfProps()) { + + setPropLength((getWidth() / getNoOfProps()) - Constant.SPACING_FOR_COMPOSITE_OF_PROPERTY); + } else + setPropLength(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_PROPERTY); + } + + // /** + // * Put a value to referenceToServiceMap + // * @param ref + // * @param ser + // * @return successfully added or not + // */ + // //assumption there can not be two services for the same reference + // public boolean addToRefToSerMap(String ref, String ser){ + // //ref = ref.toLowerCase(); + // //ser = ser.toLowerCase(); + // + // if (referenceToServiceMap.containsKey(ref)) + // return false; + // + // referenceToServiceMap.put(ref, ser); + // return true; + // } + // + // /** + // * Retrieve a service name for a given reference + // * @param ref + // * @return service name + // */ + // public String getSerOfRef(String ref){ + // //ref = ref.toLowerCase(); + // + // if (!referenceToServiceMap.containsKey(ref)) + // return null; + // + // return referenceToServiceMap.get(ref); + // } + // + // public HashMap getReferenceToServiceMap() { + // return referenceToServiceMap; + // } + // + // public void setReferenceToServiceMap( + // HashMap referenceToServiceMap) { + // this.referenceToServiceMap = referenceToServiceMap; + // } + + public void calcHeight(int initPoint) { + setHeight((Constant.COMPONENT_DEFAULT_HEIGHT * getSpaceFactor()) * (maxInternalLevel + 1) + initPoint); + } + + public void calcWidth(int initPoint) { + //System.err.println("maxInternalLane "+maxInternalLane); + setWidth((Constant.COMPONENT_DEFAULT_WIDTH * getSpaceFactor()) * (maxInternalLane + 1) + initPoint); + } + + private int max(int a, int b) { + if (a >= b) + return a; + return b; + } + + public void setMaxInternalProperties() { + + for (ComponentEntity ent : componentList) { + + maxInternalLevel = max(maxInternalLevel, ent.getLevel()); + maxInternalLane = max(maxInternalLane, ent.getLane()); + + } + //System.out.println("++++++ "+maxInternalLevel+" +++++ "+maxInternalLane); + } + + public int getMaxInternalLevel() { + return maxInternalLevel; + } + + public int getMaxInternalLane() { + return maxInternalLane; + } + + public boolean addToPromoteAService(String compositeSer, String componentSer) { + //ref = ref.toLowerCase(); + //ser = ser.toLowerCase(); + + if (promoteAService.containsKey(compositeSer)) + return false; + + promoteAService.put(compositeSer, componentSer); + return true; + } + + public void setPromoteAService(HashMap promoteAService) { + this.promoteAService = promoteAService; + } + + public HashMap getPromoteAService() { + return promoteAService; + } + + public boolean addToPromoteAReference(String compositeRef, String componentRef) { + ArrayList list; + + if (promoteAReference.containsKey(compositeRef)) { + list = promoteAReference.get(compositeRef); + } else { + list = new ArrayList(); + } + + list.add(componentRef); + promoteAReference.put(compositeRef, list); + return true; + } + + public boolean addToIncludedComposites(String composite) { + + includedComposites.add(composite); + + return true; + } + + public void setPromoteAReference(HashMap> promoteAReference) { + this.promoteAReference = promoteAReference; + } + + public HashMap> getPromoteAReference() { + return promoteAReference; + } + + public ComponentEntity[] getComponentList() { + return componentList; + } + + public void setComponentList(ComponentEntity[] componentList) { + this.componentList = componentList; + } + + public void setConnections(int[][] connections) { + this.connections = connections; + } + + public int[][] getConnections() { + return connections; + } + + public void setAttributes() { + + setMaxInternalProperties(); + + //System.out.println("++++++ "+this.maxInternalLevel); + + calcHeight(getY()); + calcWidth(getX()); + + setDefaultNoOfSers(getHeight() / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_SERVICE + Constant.SPACING_FOR_COMPOSITE_OF_SERVICE)); + setDefaultNoOfRefs(getHeight() / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_REFERENCE + Constant.SPACING_FOR_COMPOSITE_OF_REFERENCE)); + setDefaultNoOfProps(getWidth() / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_PROPERTY + Constant.SPACING_FOR_COMPOSITE_OF_PROPERTY)); + + referenceHeight(); + serviceHeight(); + propertyLength(); + } + + public ArrayList getIncludedComposites() { + return includedComposites; + } + + public String getFileNameSuffix() { + return fileNameSuffix; + } + + // public int getNoOfRefs(){ + // return references.size(); + // } + // + // public int getNoOfSers(){ + // return services.size(); + // } + // + // public int getNoOfProps(){ + // return properties.size(); + // } + // + // public int getNoOfAdjacentUnits(){ + // return adjacentEntities.size(); + // } + // + // /** + // * Put a value to referenceToServiceMap + // * @param ref + // * @param ser + // * @return successfully added or not + // */ + // //assumption there can not be two services for the same reference + // public boolean addToRefToSerMap(String ref, String ser){ + // //ref = ref.toLowerCase(); + // //ser = ser.toLowerCase(); + // + // if (referenceToServiceMap.containsKey(ref)) + // return false; + // + // referenceToServiceMap.put(ref, ser); + // return true; + // } + // + // /** + // * Retrieve a service name for a given reference + // * @param ref + // * @return service name + // */ + // public String getSerOfRef(String ref){ + // //ref = ref.toLowerCase(); + // + // if (!referenceToServiceMap.containsKey(ref)) + // return null; + // + // return referenceToServiceMap.get(ref); + // } + // + // public void addAService(String serName){ + // //serName = serName.toLowerCase(); + // services.add(serName); + // + // } + // + // public void addAReference(String refName){ + // //refName = refName.toLowerCase(); + // references.add(refName); + // + // } + // + // public void addAProperty(String propName){ + // //propName = propName.toLowerCase(); + // properties.add(propName); + // + // } + // + // public void addAnAdjacentEntity(String x){ + //// System.out.println("eee "+x); + // adjacentEntities.add(x); + // + // } + // + // public void addAnConnectedEntity(String x){ + //// System.out.println("eee "+x); + // adjacentEntities.add(x); + // + // } + // + // public HashMap getReferenceToServiceMap() { + // return referenceToServiceMap; + // } + // public void setReferenceToServiceMap( + // HashMap referenceToServiceMap) { + // this.referenceToServiceMap = referenceToServiceMap; + // } + // public ArrayList getProperties() { + // return properties; + // } + // public void setProperties(ArrayList properties) { + // this.properties = properties; + // } + // public HashSet getAdjacentEntities() { + // return adjacentEntities; + // } + // public void setAdjacentEntities(HashSet adjacentEntities) { + // this.adjacentEntities = adjacentEntities; + // } + // public void setServices(ArrayList services) { + // this.services = services; + // } + // + // public ArrayList getServices() { + // return services; + // } + // + // public ArrayList getReferences() { + // return references; + // } + + // public void setConnectedEntities(HashSet connectedEntities) { + // this.connectedEntities = connectedEntities; + // } + // + // public HashSet getConnectedEntities() { + // return connectedEntities; + // } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/Entity.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/Entity.java new file mode 100755 index 0000000000..582b8ed37b --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/Entity.java @@ -0,0 +1,259 @@ +package org.apache.tuscany.sca.diagram.layout; + +import java.util.ArrayList; +import java.util.HashSet; + +public abstract class Entity { + + private int id = -1; //a unique integer id (0..n) + private String name; // a unique name + private int spaceFactor = 2; //which determines the free space surrounded by this + private int x; // x coordinate + private int y; // y coordinate + private int level = -1; // corresponding row which this entity is placed + private int lane = -1; // corresponding column which this entity is placed + private boolean isPossitionSet = false; + private int height; // height of the entity + private int width; // width of the entity + private int refHeight; // height of a reference element + private int serHeight; // height of a service element + private int propLength; // length of a property element + private int defaultNoOfSers; // default # of service elements + private int defaultNoOfRefs; // default # of reference elements + private int defaultNoOfProps; // default # of property elements + private int startPosition = 0; + private Entity parent = null; + + private ArrayList references = new ArrayList(); + + private ArrayList services = new ArrayList(); + + private ArrayList properties = new ArrayList(); + + private HashSet adjacentEntities = new HashSet(); + + public abstract void referenceHeight(); + + public abstract void serviceHeight(); + + public abstract void propertyLength(); + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getX() { + return x; + } + + public void setX(int init) { + this.x = init + width * spaceFactor * lane; + } + + public int getY() { + return y; + } + + public void setY(int init) { + this.y = init + height * spaceFactor * level; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public int getLane() { + return lane; + } + + public void setLane(int lane) { + this.lane = lane; + } + + public int getHeight() { + return height; + } + + public void setHeight(int height) { + this.height = height; + } + + public int getWidth() { + return width; + } + + public void setWidth(int width) { + this.width = width; + } + + public int getRefHeight() { + return refHeight; + } + + public void setRefHeight(int refHeight) { + this.refHeight = refHeight; + } + + public int getSerHeight() { + return serHeight; + } + + public void setSerHeight(int serHeight) { + this.serHeight = serHeight; + } + + public int getPropLength() { + return propLength; + } + + public void setPropLength(int propLength) { + this.propLength = propLength; + } + + public int getDefaultNoOfSers() { + return defaultNoOfSers; + } + + public void setDefaultNoOfSers(int defaultNoOfSers) { + this.defaultNoOfSers = defaultNoOfSers; + } + + public int getDefaultNoOfRefs() { + return defaultNoOfRefs; + } + + public void setDefaultNoOfRefs(int defaultNoOfRefs) { + this.defaultNoOfRefs = defaultNoOfRefs; + } + + public int getDefaultNoOfProps() { + return defaultNoOfProps; + } + + public void setDefaultNoOfProps(int defaultNoOfProps) { + this.defaultNoOfProps = defaultNoOfProps; + } + + public int getNoOfRefs() { + return references.size(); + } + + public int getNoOfSers() { + return services.size(); + } + + public int getNoOfProps() { + return properties.size(); + } + + public int getNoOfAdjacentUnits() { + return adjacentEntities.size(); + } + + public void addAService(String serName) { + //serName = serName.toLowerCase(); + services.add(serName); + + } + + public void addAReference(String refName) { + //refName = refName.toLowerCase(); + references.add(refName); + + } + + public void addAProperty(String propName) { + //propName = propName.toLowerCase(); + properties.add(propName); + + } + + public void addAnAdjacentEntity(String x) { + // System.out.println("eee "+x); + adjacentEntities.add(x); + + } + + public void addAnConnectedEntity(String x) { + // System.out.println("eee "+x); + adjacentEntities.add(x); + + } + + public ArrayList getProperties() { + return properties; + } + + public void setProperties(ArrayList properties) { + this.properties = properties; + } + + public HashSet getAdjacentEntities() { + return adjacentEntities; + } + + public void setAdjacentEntities(HashSet adjacentEntities) { + this.adjacentEntities = adjacentEntities; + } + + public void setServices(ArrayList services) { + this.services = services; + } + + public ArrayList getServices() { + return services; + } + + public ArrayList getReferences() { + return references; + } + + public void setId(int id) { + this.id = id; + } + + public int getId() { + return id; + } + + public void setPossitionSet(boolean isPossitionSet) { + this.isPossitionSet = isPossitionSet; + } + + public boolean isPossitionSet() { + return isPossitionSet; + } + + public int getSpaceFactor() { + return spaceFactor; + } + + public void setSpaceFactor(int spaceFactor) { + this.spaceFactor = spaceFactor; + } + + public void setStartPosition(int startPosition) { + this.startPosition = startPosition; + } + + public int getStartPosition() { + return startPosition; + } + + public void setParent(Entity parent) { + this.parent = parent; + } + + public Entity getParent() { + return parent; + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/EntityBuilder.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/EntityBuilder.java new file mode 100755 index 0000000000..33ff1209cb --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/EntityBuilder.java @@ -0,0 +1,733 @@ +/* + * 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.layout; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +public class EntityBuilder { + + private Document dom; + + //components connected to each other are tracked using following map + private HashMap> connectedEntities = new HashMap>(); + private int totalWidth = 0; + private int totalHeight = 0; + + CompositeEntity composite = null; + + /** + * Constructor which initiates the DOM document + * @param aDom DOM document + */ + public EntityBuilder(Document aDom) { + dom = aDom; + } + + public CompositeEntity buildCompositeEntity() { + + //get the root element + Element docEle = dom.getDocumentElement(); + + String compositeName; + compositeName = docEle.getAttribute("name"); + //System.out.println("compositeName "+compositeName); + + ComponentEntity[] comps = buildComponentEntities(docEle); + + composite = new CompositeEntity(compositeName); + + setParent(comps); + + //System.out.println("ComponentEntity "+comps[0].getLevel()); + int[][] conns = buildConnectionMatrix(comps); + + composite.setComponentList(comps); + composite.setConnections(conns); + + LayoutBuilder buildLayout = new LayoutBuilder(comps, conns); + buildLayout.placeEntities(); + + //System.out.println("conns "+conns[0][0]); + + buildCompositeService(docEle); + buildCompositeReference(docEle); + buildCompositeProperty(docEle); + + addInclusions(docEle); + + composite.setAttributes(); + + return composite; + } + + // private void assignCoordinates() { + // + // for(Entity ent: elts){ + // ent.setX(ent.getParent().getX() + ent.getStartPosition()); + // ent.setY(ent.getParent().getY() + ent.getStartPosition()/2); + // } + // } + + private void setParent(ComponentEntity[] comps) { + + for (ComponentEntity comp : comps) { + comp.setParent(composite); + } + } + + private void buildCompositeService(Element docEle) { + + NodeList nl = docEle.getElementsByTagName("service"); + //System.err.println("^^^^^^^^^ "+nl.getLength()); + if (nl != null && nl.getLength() > 0) { + + for (int i = 0; i < nl.getLength(); i++) { + + Element elt = (Element)nl.item(i); + + if (elt.getParentNode().getNodeName().equals("composite")) { + String compositeSer = elt.getAttribute("name"); + composite.addAService(compositeSer); + + String target = elt.getAttribute("promote"); + + String service, serviceComp; + String[] arr1 = extractComp(target); + serviceComp = arr1[0]; + service = arr1[1]; + + if (service == null) { + composite.addToPromoteAService(compositeSer, serviceComp); + } else { + composite.addToPromoteAService(compositeSer, service); + } + } + + } + } + } + + private void buildCompositeReference(Element docEle) { + + NodeList nl = docEle.getElementsByTagName("reference"); + //System.out.println("^^^^^^^^^ "+nl.getLength()); + if (nl != null && nl.getLength() > 0) { + + for (int i = 0; i < nl.getLength(); i++) { + + Element elt = (Element)nl.item(i); + + if (elt.getParentNode().getNodeName().equals("composite")) { + String compositeRef = elt.getAttribute("name"); + composite.addAReference(compositeRef); + + String targetStr = elt.getAttribute("promote"); + + String[] targets = targetStr.split(" "); + + for (String target : targets) { + + String reference, referenceComp; + String[] arr1 = extractComp(target); + referenceComp = arr1[0]; + reference = arr1[1]; + + if (reference == null) { + composite.addToPromoteAReference(compositeRef, referenceComp); + } else { + composite.addToPromoteAReference(compositeRef, reference); + } + } + + } + } + } + } + + private void buildCompositeProperty(Element docEle) { + + NodeList nl = docEle.getElementsByTagName("property"); + //System.out.println("^^^^^^^^^ "+nl.getLength()); + if (nl != null && nl.getLength() > 0) { + + for (int i = 0; i < nl.getLength(); i++) { + + Element elt = (Element)nl.item(i); + + if (elt.getParentNode().getNodeName().equals("composite")) { + String compositeProp = elt.getAttribute("name"); + composite.addAProperty(compositeProp); + } + } + } + } + + private void addInclusions(Element docEle) { + + NodeList nl = docEle.getElementsByTagName("include"); + //System.out.println("^^^^^^^^^ "+nl.getLength()); + if (nl != null && nl.getLength() > 0) { + + for (int i = 0; i < nl.getLength(); i++) { + + Element elt = (Element)nl.item(i); + + if (elt.getParentNode().getNodeName().equals("composite")) { + String compToBeIncluded = elt.getAttribute("name"); + composite.addToIncludedComposites(compToBeIncluded); + } + } + } + } + + private int[][] buildConnectionMatrix(ComponentEntity[] comps) { + + int[][] connections = new int[comps.length][comps.length]; + connections = initConnections(connections); + + // //sec. 5.4 in the spec + // NodeList nl = docEle.getElementsByTagName("wire"); + // //System.out.println("^^^^^^^^^ "+nl.getLength()); + // if(nl != null && nl.getLength() > 0 ) { + // + // for(int i = 0 ; i < nl.getLength();i++) { + // + // Element elt = (Element)nl.item(i); + // + // String source = elt.getAttribute("source"); + // String target = elt.getAttribute("target"); + // + // String service, serviceComp, reference, referenceComp; + // + // String[] arr1 = extractComp(target); + // serviceComp = arr1[0]; + // service = arr1[1]; + // + // String[] arr2 = extractComp(source); + // referenceComp = arr2[0]; + // reference = arr2[1]; + + // //System.out.println("^^^^^^^^^ "+source+" ::: "+target); + // if(target.contains("/")){ + // String[] arr = target.split("/"); + // serviceComp = arr[0]; + // service = arr[1]; + // } + // else{ + // serviceComp = target; + // service = null; + // } + // + // if(source.contains("/")){ + // String[] arr = source.split("/"); + // referenceComp = arr[0]; + // reference = arr[1]; + // } + // else{ + // referenceComp = source; + // reference = null; + // } + // //sec. 5.4 in the spec + // NodeList nl = docEle.getElementsByTagName("wire"); + // //System.out.println("^^^^^^^^^ "+nl.getLength()); + // if(nl != null && nl.getLength() > 0 ) { + // + // for(int i = 0 ; i < nl.getLength();i++) { + // + // Element elt = (Element)nl.item(i); + // + // String source = elt.getAttribute("source"); + // String target = elt.getAttribute("target"); + // + // String service, serviceComp, reference, referenceComp; + // + // String[] arr1 = extractComp(target); + // serviceComp = arr1[0]; + // service = arr1[1]; + // + // String[] arr2 = extractComp(source); + // referenceComp = arr2[0]; + // reference = arr2[1]; + + for (Entity ent : comps) { + for (String name : ent.getAdjacentEntities()) { + ComponentEntity e2 = findEntity(comps, name); + if (ent != null && e2 != null) { + //System.out.println("^^^^^^^^^ "+e2.getName()); + connections[ent.getId()][e2.getId()] = 1; + } + } + + } + // ComponentEntity e1 = findEntity(comps, referenceComp); + // ComponentEntity e2 = findEntity(comps, serviceComp); + // + // System.out.println("^^^^^^^^^ "+e1.getName()); + // if(e1 != null && e2 != null){ + // System.out.println("^^^^^^^^^ "+e1.getId()); + // connections[e1.getId()][e2.getId()] = 1; + // createConnection(e1, reference, serviceComp, service); + // } + // } + // } + // + return connections; + } + + private String[] extractComp(String str) { + + String[] arr = new String[2]; + + if (str.contains("/")) { + arr = str.split("/"); + } else { + arr[0] = str; + arr[1] = null; + } + return arr; + } + + private int[][] initConnections(int[][] connections) { + + for (int i = 0; i < connections.length; i++) { + for (int j = 0; j < connections.length; j++) { + connections[i][j] = 0; + } + } + return connections; + } + + public ComponentEntity[] buildComponentEntities(Element docEle) { + + ComponentEntity[] elts = null; + + // //get the root element + // Element docEle = dom.getDocumentElement(); + // compositeName = docEle.getAttribute("name"); + // System.out.println("compositeName "+compositeName); + + //get a nodelist of elements + NodeList nl = docEle.getElementsByTagName("component"); + if (nl != null && nl.getLength() > 0) { + elts = new ComponentEntity[nl.getLength()]; + + for (int i = 0; i < nl.getLength(); i++) { + elts[i] = new ComponentEntity(); + Element nVal = (Element)nl.item(i); + //System.out.println(nVal.hasAttribute("name")); + elts[i].setId(i); + elts[i].setName(nVal.getAttribute("name")); + + setServices(nVal, elts[i]); + setReferences(nVal, elts[i]); + setProperties(nVal, elts[i]); + + elts[i].referenceHeight(); + elts[i].serviceHeight(); + elts[i].propertyLength(); + } + } + + buildWires(docEle, elts); + // //sec. 5.4 in the spec + // nl = docEle.getElementsByTagName("wire"); + // System.out.println("^^^^^^^^^ "+nl.getLength()); + // if(nl != null && nl.getLength() > 0 ) { + // for(int i = 0 ; i < nl.getLength();i++) { + // Element elt = (Element)nl.item(i); + // String source = elt.getAttribute("source"); + // String target = elt.getAttribute("target"); + // String service, serviceComp, reference, referenceComp; + // + // System.out.println("^^^^^^^^^ "+source+" ::: "+target); + // if(target.contains("/")){ + // String[] arr = target.split("/"); + // serviceComp = arr[0]; + // service = arr[1]; + // } + // else{ + // serviceComp = target; + // service = null; + // } + // + // if(source.contains("/")){ + // String[] arr = source.split("/"); + // referenceComp = arr[0]; + // reference = arr[1]; + // } + // else{ + // referenceComp = source; + // reference = null; + // } + // + // ComponentEntity e = findEntity(referenceComp); + // System.out.println("^^^^^^^^^ "+e.getName()); + // if(e != null){ + // createConnection(e, reference, serviceComp, service); + // } + // } + // } + // + // positionEntities(elts); + // + // calculateProperties(elts); + // print(elts); + + return elts; + + } + + private void buildWires(Element docEle, ComponentEntity[] elts) { + + //sec. 5.4 in the spec + NodeList nl = docEle.getElementsByTagName("wire"); + //System.out.println("^^^^^^^^^ "+nl.getLength()); + if (nl != null && nl.getLength() > 0) { + + for (int i = 0; i < nl.getLength(); i++) { + + Element elt = (Element)nl.item(i); + + String source = elt.getAttribute("source"); + String target = elt.getAttribute("target"); + + String service, serviceComp, reference, referenceComp; + + String[] arr1 = extractComp(target); + serviceComp = arr1[0]; + service = arr1[1]; + + String[] arr2 = extractComp(source); + referenceComp = arr2[0]; + reference = arr2[1]; + + // //System.out.println("^^^^^^^^^ "+source+" ::: "+target); + // if(target.contains("/")){ + // String[] arr = target.split("/"); + // serviceComp = arr[0]; + // service = arr[1]; + // } + // else{ + // serviceComp = target; + // service = null; + // } + // + // if(source.contains("/")){ + // String[] arr = source.split("/"); + // referenceComp = arr[0]; + // reference = arr[1]; + // } + // else{ + // referenceComp = source; + // reference = null; + // } + // + ComponentEntity e1 = findEntity(elts, referenceComp); + //ComponentEntity e2 = findEntity(comps, serviceComp); + + //System.out.println("^^^^^^^^^ "+e1.getName()); + if (e1 != null) { + //System.out.println("^^^^^^^^^ "+e1.getId()); + //connections[e1.getId()][e2.getId()] = 1; + createConnection(e1, reference, serviceComp, service); + } + } + } + + } + + private ComponentEntity findEntity(ComponentEntity[] elts, String componentName) { + + for (ComponentEntity e : elts) { + if (e.getName().equals(componentName)) { + return e; + } + } + return null; + } + + private void setReferences(Element nVal, ComponentEntity ent) { + + NodeList nl = nVal.getElementsByTagName("reference"); + if (nl != null && nl.getLength() > 0) { + for (int i = 0; i < nl.getLength(); i++) { + Element elt = (Element)nl.item(i); + String target = elt.getAttribute("target"); + String ref = elt.getAttribute("name"); + if (target.contains("/")) { + String[] arr = target.split("/"); + createConnection(ent, ref, arr[0], arr[1]); + // ent.addToRefToSerMap(ref, arr[1]); + // ent.addAnAdjacentEntity(arr[0]); + // addToConnectedEntities(ent.getComponentName(), arr[0]); + // addToConnectedEntities(arr[0], ent.getComponentName()); + } else if (!target.equals("")) { + createConnection(ent, ref, target, null); + // ent.addToRefToSerMap(ref, target); + // ent.addAnAdjacentEntity(target); + // addToConnectedEntities(ent.getComponentName(), target); + // addToConnectedEntities(target, ent.getComponentName()); + } + + ent.addAReference(ref); + + } + } + } + + private void createConnection(ComponentEntity ent, String reference, String serviceComp, String service) { + + String referenceComp = ent.getName(); + + if (reference != null && service != null) { + + ent.addToRefToSerMap(reference, service); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } else if (reference == null && service != null) { + ent.addToRefToSerMap(referenceComp, service); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } else if (reference != null && service == null) { + ent.addToRefToSerMap(reference, serviceComp); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } else { + ent.addToRefToSerMap(referenceComp, serviceComp); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } + } + + // private void calculateProperties(ComponentEntity[] elts) { + // int level=0, lane=0; + // + // for(ComponentEntity ent: elts){ + // level = max(level, ent.getLevel()); + // lane = max(lane, ent.getLane()); + // + // } + // totalHeight += spaceY*(level+1) + initPoint; + // totalWidth += spaceX*(lane+1) + initPoint; + // + // System.err.println(totalHeight + " :: "+totalWidth); + // } + + // private int max(int a, int b){ + // if(a>=b) + // return a; + // return b; + // } + + @SuppressWarnings("unused") + private void print(ComponentEntity[] elts) { + + for (ComponentEntity ent : elts) { + System.out.println(ent.getName() + " : " + + ent.getLevel() + + " : " + + ent.getLane() + + " : " + + ent.getX() + + " : " + + ent.getY()); + } + } + + // private void positionEntities(ComponentEntity[] ents){ + // + // for(ComponentEntity ent: ents){ + // if(ent.getAdjacentEntities().size() != 0 || ents.length==1){ + // setPosition(ent, initPoint, initPoint, 0, 0); + // levelCount.add(0, 1); + // startEnt = ent; + // System.err.println(ent.getName()); + // break; + // } + // } + // + // + // if(startEnt != null) + // assignPositions(ents, startEnt); + // + // } + // + // private void assignPositions(ComponentEntity[] ents, ComponentEntity ent){ + // int i=0; + // if(ent.getAdjacentEntities().size()>0){ + // + // System.out.println(ent.getName()); + // for(String name: ent.getAdjacentEntities()){ + // //System.out.println("eee "+name); + // for(ComponentEntity aEnt: ents){ + // i++; + // if(name.equalsIgnoreCase(aEnt.getName())){ + // int lane = ent.getLane()+1; + // if(levelCount.size()<= lane){ + // levelCount.add(lane, 1); + // setPosition(aEnt, ent.getX()+spaceX, ent.getY(), 0, lane); + // } + // else{ + // int level = levelCount.get(lane); + // levelCount.add(lane, level+1); + // setPosition(aEnt, ent.getX()+spaceX, ent.getY()+spaceY*level, level, lane); + // } + // if(i conns = connectedEntities.get(ent.getName()); + // System.err.println(conns.size()); + // if(conns.size()>0){ + // + // for(String conn: conns){ + // System.err.println("conn "+conn +" : "+ent.getName()); + // for(ComponentEntity e: ents){ + // if(e.getLane() == -1 && e.getName().equals(conn)){ + // + // int lane = ent.getLane()-1; + // System.err.println(lane); + // int level = levelCount.get(lane); + // levelCount.add(lane, level+1); + // setPosition(e, ent.getX()-spaceX, ent.getY()+spaceY*level, level, lane); + // + // break; + // } + // } + // } + // } + // } + // } + // + // private void setPosition(ComponentEntity ent, int x, int y, int level, int lane){ + // ent.setX(x); + // ent.setY(y); + // ent.setLevel(level); + // ent.setLane(lane); + // } + // + // + // private String[] splitValues(String str){ + // return str.split("/"); + // } + + private void addToConnectedEntities(String ent1, String ent2) { + //System.err.println(ent1+" : "+ent2); + ArrayList list; + if (connectedEntities.containsKey(ent1)) { + list = connectedEntities.get(ent1); + + } else { + list = new ArrayList(); + + } + list.add(ent2); + connectedEntities.put(ent1, list); + } + + private void setServices(Element nVal, ComponentEntity ent) { + + NodeList nl = nVal.getElementsByTagName("service"); + if (nl != null && nl.getLength() > 0) { + for (int i = 0; i < nl.getLength(); i++) { + Element elt = (Element)nl.item(i); + ent.addAService(elt.getAttribute("name")); + } + } else { + + NodeList nl1 = nVal.getElementsByTagName("implementation.java"); + if (nl1 != null && nl1.getLength() > 0) { + for (int i = 0; i < nl1.getLength(); i++) { + Element elt = (Element)nl1.item(i); + //System.out.println(elt.getAttribute("class")); + String serName = extractServiceName(elt.getAttribute("class")); + ent.addAService(serName); + } + } + + } + + } + + /** + * + * This will extract the service name part from the class attribute of + * implementation.java element. + * eg: if class = "NirmalServiceImpl", returning service name would be "NirmalService" + */ + private String extractServiceName(String classAttr) { + if (classAttr != null) { + String[] x = classAttr.split("\\."); + String name = x[x.length - 1]; + if (name.endsWith("Impl")) { + return name.substring(0, name.length() - 4); + } else { + return name; + } + } + return ""; + } + + private void setProperties(Element nVal, ComponentEntity ent) { + + NodeList nl = nVal.getElementsByTagName("property"); + if (nl != null && nl.getLength() > 0) { + for (int i = 0; i < nl.getLength(); i++) { + Element elt = (Element)nl.item(i); + ent.addAProperty(elt.getAttribute("name")); + } + } + } + + // public void setCompositeName(String compositeName) { + // this.compositeName = compositeName; + // } + // + // public String getCompositeName() { + // return compositeName; + // } + + public int getTotalWidth() { + return totalWidth; + } + + public int getTotalHeight() { + return totalHeight; + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/LayoutBuilder.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/LayoutBuilder.java new file mode 100755 index 0000000000..87b358479a --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/LayoutBuilder.java @@ -0,0 +1,183 @@ +/* + * 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.layout; + +public class LayoutBuilder { + + private Entity[] elts = null; + private int[][] conns = null; + private Entity startEnt = null; + private int currentMaxLevel = 0; + + /** + * Constructor which takes set of entities and their connection matrix + */ + public LayoutBuilder(Entity[] entities, int[][] connections) { + elts = entities; + conns = connections; + } + + /** + * Layout Building Algorithm + * ~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * Here we position (i.e. assigning a level and a lane) all Entities + * in a unique cell of a grid. + * + * lane0 lane1 lane2 lane3 .... + * _______________________________ + * level0 | | | | | + * |_______|_______|_______|_______| + * level1 | | | | | + * |_______|_______|_______|_______| + * level2 | | | | | + * + * 1) Determining the Entity at level0, lane0 (starting entity) + * -First Entity in the list of Entities which has one or more adjacent Entities + * -If there is only one Entity it will eventually chosen + * + * 2) Get connected Entities of starting Entity. + * * If there are connected entities; + * *For each connected Entity; + * *We assign a corresponding level and a lane + * *Then recurse the procedure for connections of the assigned Entity + * + * + */ + public Entity[] placeEntities() { + + /** + * Finding the starting entity + */ + for (int i = 0; i < elts.length; i++) { + //System.out.println("ELts "+elts.length); + Entity ent = elts[i]; + if (isConnected(ent.getId())) { + setPosition(ent, 0, 0); + startEnt = ent; + //System.out.println("startEnt "+ent.getId()); + break; + } + + } + + if (startEnt != null) { + assignPositions(startEnt); + } + + assignPositionsOfOtherConncetedEntities();//such as a different cluster of components + assignPositionsOfIdleEntities(); + assignCoordinates(); + + return elts; + + } + + private void assignPositionsOfIdleEntities() { + + for (Entity ent : elts) { + if (!ent.isPossitionSet()) { + + setPosition(ent, currentMaxLevel++, 0); + } + } + } + + private void assignPositionsOfOtherConncetedEntities() { + + for (Entity ent : elts) { + if (!ent.isPossitionSet() && isConnected(ent.getId())) { + assignPositions(ent); + } + } + } + + private void assignCoordinates() { + + for (Entity ent : elts) { + ent.setX(ent.getParent().getX() + ent.getStartPosition()); + ent.setY(ent.getParent().getY() + ent.getStartPosition() / 2); + } + } + + private void assignPositions(Entity ent) { + int id = ent.getId(); + int[] entConns = conns[id]; + + for (int i = 0; i < entConns.length; i++) { + if (entConns[i] == 1) { + Entity nextEnt = findEntity(i); + + // if(nextEnt.isPossitionSet()){ + // currentMaxLevel = nextEnt.getLevel()+1; // for diagram clearness purpose + // } + if (nextEnt != null && !nextEnt.isPossitionSet()) { + setPosition(nextEnt, currentMaxLevel, ent.getLane() + 1); + assignPositions(nextEnt); + } + } + + } + currentMaxLevel = ent.getLevel() + 1; + } + + private Entity findEntity(int i) { + + for (Entity ent : elts) { + if (ent.getId() == i) { + return ent; + } + } + return null; + } + + /** + * If there's at least 1 connection, this will return true + */ + private boolean isConnected(int id) { + int[] entConns = conns[id]; + + //System.out.println("entConns "+entConns.length); + for (int i = 0; i < entConns.length; i++) { + + if (entConns[i] == 1) { + return true; + } + + } + + return false; + } + + private void setPosition(Entity ent, int level, int lane) { + ent.setLevel(level); + ent.setLane(lane); + ent.setPossitionSet(true); + } + + public Entity getStartEnt() { + return startEnt; + } + + public void setStartEnt(Entity startEnt) { + this.startEnt = startEnt; + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/TuscanyCompositeEntityBuilder.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/TuscanyCompositeEntityBuilder.java new file mode 100755 index 0000000000..1a9b59e486 --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/layout/TuscanyCompositeEntityBuilder.java @@ -0,0 +1,359 @@ +/* + * 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.layout; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.apache.tuscany.sca.assembly.Component; +import org.apache.tuscany.sca.assembly.ComponentProperty; +import org.apache.tuscany.sca.assembly.ComponentReference; +import org.apache.tuscany.sca.assembly.ComponentService; +import org.apache.tuscany.sca.assembly.Composite; +import org.apache.tuscany.sca.assembly.CompositeReference; +import org.apache.tuscany.sca.assembly.CompositeService; +import org.apache.tuscany.sca.assembly.Property; +import org.apache.tuscany.sca.assembly.Reference; +import org.apache.tuscany.sca.assembly.Service; +import org.apache.tuscany.sca.assembly.Wire; + +public class TuscanyCompositeEntityBuilder { + + private Composite tuscanyComp; + //components connected to each other are tracked using following map + private HashMap> connectedEntities = new HashMap>(); + private int totalWidth = 0; + private int totalHeight = 0; + + CompositeEntity composite = null; + + /** + * Constructor which initiates the DOM document + * @param aDom DOM document + */ + public TuscanyCompositeEntityBuilder(Composite comp) { + tuscanyComp = comp; + } + + public CompositeEntity buildCompositeEntity() { + + String compositeName; + compositeName = tuscanyComp.getName().getLocalPart(); + System.out.println("compositeName " + compositeName); + + ComponentEntity[] comps = buildComponentEntities(); + + buildWires(tuscanyComp.getWires(), comps); + + composite = new CompositeEntity(compositeName); + + setParent(comps); + + System.out.println("ComponentEntity " + comps[0].getId()); + int[][] conns = buildConnectionMatrix(comps); + System.out.println("ComponentEntity " + conns[0][0]); + + composite.setComponentList(comps); + composite.setConnections(conns); + + LayoutBuilder buildLayout = new LayoutBuilder(comps, conns); + buildLayout.placeEntities(); + + System.out.println("conns " + conns[0][0]); + + buildCompositeService(); + buildCompositeReference(); + buildCompositeProperty(); + + addInclusions(); + + composite.setAttributes(); + + return composite; + } + + private void setParent(ComponentEntity[] comps) { + + for (ComponentEntity comp : comps) { + comp.setParent(composite); + } + } + + private void buildCompositeService() { + + List sers = tuscanyComp.getServices(); + + for (int i = 0; i < sers.size(); i++) { + Service compositeSer = sers.get(i); + composite.addAService(compositeSer.getName()); + String service = ((CompositeService)compositeSer).getPromotedService().getName(); + + composite.addToPromoteAService(compositeSer.getName(), service); + } + + } + + private void buildCompositeReference() { + + List refs = tuscanyComp.getReferences(); + + for (int i = 0; i < refs.size(); i++) { + Reference compositeRef = refs.get(i); + composite.addAReference(compositeRef.getName()); + + List promotedRefs = ((CompositeReference)compositeRef).getPromotedReferences(); + + for (ComponentReference ref : promotedRefs) { + String reference = ref.getName(); + + composite.addToPromoteAReference(compositeRef.getName(), reference); + } + + } + + } + + private void buildCompositeProperty() { + + List props = tuscanyComp.getProperties(); + + for (int i = 0; i < props.size(); i++) { + Property compositeProp = props.get(i); + composite.addAProperty(compositeProp.getName()); + } + + } + + private void addInclusions() { + + List includes = tuscanyComp.getIncludes(); + + for (int i = 0; i < includes.size(); i++) { + Composite anInclude = includes.get(i); + composite.addToIncludedComposites(anInclude.getName().getLocalPart()); + } + + } + + private int[][] buildConnectionMatrix(ComponentEntity[] comps) { + + int[][] connections = new int[comps.length][comps.length]; + connections = initConnections(connections); + + for (Entity ent : comps) { + for (String name : ent.getAdjacentEntities()) { + ComponentEntity e2 = findEntity(comps, name); + if (ent != null && e2 != null) { + //System.out.println("^^^^^^^^^ "+e2.getName()); + connections[ent.getId()][e2.getId()] = 1; + } + } + + } + + return connections; + } + + private String extractComp(ComponentEntity[] elts, String str, boolean isReference) { + + if (isReference) { + for (ComponentEntity elt : elts) { + for (String ref : elt.getReferences()) { + if (ref.equals(str)) { + return elt.getName(); + } + } + } + } else { + for (ComponentEntity elt : elts) { + for (String ser : elt.getServices()) { + if (ser.equals(str)) { + return elt.getName(); + } + } + } + } + return ""; + + } + + private int[][] initConnections(int[][] connections) { + + for (int i = 0; i < connections.length; i++) { + for (int j = 0; j < connections.length; j++) { + connections[i][j] = 0; + } + } + return connections; + } + + public ComponentEntity[] buildComponentEntities() { + + ComponentEntity[] elts = null; + + List components = tuscanyComp.getComponents(); + + elts = new ComponentEntity[components.size()]; + + for (int i = 0; i < components.size(); i++) { + Component aComp = components.get(i); + + elts[i] = new ComponentEntity(); + elts[i].setId(i); + elts[i].setName(aComp.getName()); + + setServices(aComp.getServices(), elts[i]); + setReferences(aComp.getReferences(), elts[i]); + setProperties(aComp.getProperties(), elts[i]); + + elts[i].referenceHeight(); + elts[i].serviceHeight(); + elts[i].propertyLength(); + } + + return elts; + + } + + private void buildWires(List wires, ComponentEntity[] elts) { + + for (int i = 0; i < wires.size(); i++) { + String service, serviceComp, reference, referenceComp; + Wire aWire = wires.get(i); + + reference = aWire.getSource().getName(); + service = aWire.getTarget().getName(); + + referenceComp = extractComp(elts, reference, true); + serviceComp = extractComp(elts, service, false); + + ComponentEntity e1 = findEntity(elts, referenceComp); + + //System.out.println("^^^^^^^^^ "+e1.getName()); + if (e1 != null) { + //System.out.println("^^^^^^^^^ "+e1.getId()); + //connections[e1.getId()][e2.getId()] = 1; + createConnection(e1, reference, serviceComp, service); + } + } + + } + + private ComponentEntity findEntity(ComponentEntity[] elts, String componentName) { + + for (ComponentEntity e : elts) { + if (e.getName().equals(componentName)) { + return e; + } + } + return null; + } + + private void setReferences(List refs, ComponentEntity ent) { + + for (int i = 0; i < refs.size(); i++) { + ent.addAReference(refs.get(i).getName()); + } + + } + + private void createConnection(ComponentEntity ent, String reference, String serviceComp, String service) { + + String referenceComp = ent.getName(); + + if (reference != null && service != null) { + + ent.addToRefToSerMap(reference, service); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } else if (reference == null && service != null) { + ent.addToRefToSerMap(referenceComp, service); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } else if (reference != null && service == null) { + ent.addToRefToSerMap(reference, serviceComp); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } else { + ent.addToRefToSerMap(referenceComp, serviceComp); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } + } + + @SuppressWarnings("unused") + private void print(ComponentEntity[] elts) { + + for (ComponentEntity ent : elts) { + System.out.println(ent.getName() + " : " + + ent.getLevel() + + " : " + + ent.getLane() + + " : " + + ent.getX() + + " : " + + ent.getY()); + } + } + + private void addToConnectedEntities(String ent1, String ent2) { + System.err.println(ent1 + " : " + ent2); + ArrayList list; + if (connectedEntities.containsKey(ent1)) { + list = connectedEntities.get(ent1); + + } else { + list = new ArrayList(); + + } + list.add(ent2); + connectedEntities.put(ent1, list); + } + + private void setServices(List sers, ComponentEntity ent) { + + for (int i = 0; i < sers.size(); i++) { + ent.addAService(sers.get(i).getName()); + } + + } + + private void setProperties(List props, ComponentEntity ent) { + + for (int i = 0; i < props.size(); i++) { + ent.addAProperty(props.get(i).getName()); + } + + } + + public int getTotalWidth() { + return totalWidth; + } + + public int getTotalHeight() { + return totalHeight; + } + +} 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; + } + +} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Artifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Artifact.java deleted file mode 100644 index 691d9da8d6..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Artifact.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public abstract class Artifact { - - private String name; - private String containerName; - private int height; - private int width; - private int xCoordinate; - private int yCoordinate; - private Document doc; - private String svgNs; - private static final String ROUND_CORNER = "20"; - - /** - * Abstract method - * @param document DOM document - * @param svgNs namespace URI - * @param x x-coordinate - * @param y y-coordinate - * @param height height of the shape - * @param width width of the shape - * @return DOM Element - */ - public abstract Element addElement(Document document, String svgNs, int x, int y, int height, int width); - - // public abstract Element addElement(Document document, String svgNs, - // int x, int y); - - public int getHeight() { - return height; - } - - public void setHeight(int height) { - this.height = height; - } - - public int getWidth() { - return width; - } - - public void setWidth(int width) { - this.width = width; - } - - public int getxCoordinate() { - return xCoordinate; - } - - public void setxCoordinate(int xCoordinate) { - this.xCoordinate = xCoordinate; - } - - public int getyCoordinate() { - return yCoordinate; - } - - public void setyCoordinate(int yCoordinate) { - this.yCoordinate = yCoordinate; - } - - public Document getDoc() { - return doc; - } - - public void setDoc(Document doc) { - this.doc = doc; - } - - public String getSvgNs() { - return svgNs; - } - - public void setSvgNs(String svgNs) { - this.svgNs = svgNs; - } - - public static String getRoundCorner() { - return ROUND_CORNER; - } - - public void setName(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public void setContainerName(String containerName) { - this.containerName = containerName; - } - - public String getContainerName() { - return containerName; - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ComponentArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ComponentArtifact.java deleted file mode 100755 index e2373cf1f5..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ComponentArtifact.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public class ComponentArtifact extends Artifact { - - /** - * Create an element with specified height and width - */ - public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { - - this.setHeight(height); - this.setWidth(width); - this.setxCoordinate(x); - this.setyCoordinate(y); - - Element rectangle = document.createElementNS(svgNs, "rect"); - rectangle.setAttributeNS(null, "x", x + ""); - rectangle.setAttributeNS(null, "y", y + ""); - rectangle.setAttributeNS(null, "rx", getRoundCorner()); - rectangle.setAttributeNS(null, "ry", getRoundCorner()); - rectangle.setAttributeNS(null, "width", width + ""); - rectangle.setAttributeNS(null, "height", height + ""); - rectangle.setAttributeNS(null, "fill", "#3D59AB"); - rectangle.setAttributeNS(null, "stroke", "#104E8B"); - rectangle.setAttributeNS(null, "fill-opacity", "0.75"); - return rectangle; - } - - /** - * Create an element with default height and width - */ - public Element addElement(Document document, String svgNs, int x, int y) { - - return addElement(document, svgNs, x, y, Constant.COMPONENT_DEFAULT_HEIGHT, Constant.COMPONENT_DEFAULT_WIDTH); - - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/CompositeArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/CompositeArtifact.java deleted file mode 100755 index 0496f7c6cc..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/CompositeArtifact.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * Structure of a "Composite" element in SCA, as a SVG element - * - */ -public class CompositeArtifact extends Artifact { - - public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { - - this.setHeight(height); - this.setWidth(width); - this.setxCoordinate(x); - this.setyCoordinate(y); - - Element rectangle = document.createElementNS(svgNs, "rect"); - rectangle.setAttributeNS(null, "x", x + ""); - rectangle.setAttributeNS(null, "y", y + ""); - rectangle.setAttributeNS(null, "rx", getRoundCorner()); - rectangle.setAttributeNS(null, "ry", getRoundCorner()); - rectangle.setAttributeNS(null, "width", width + ""); - rectangle.setAttributeNS(null, "height", height + ""); - rectangle.setAttributeNS(null, "fill", "#E5E5E5"); - rectangle.setAttributeNS(null, "stroke", "#919191"); - rectangle.setAttributeNS(null, "alignment-baseline", "middle"); - - return rectangle; - } - - // //OBSOLETE - // public Element addElement(Document document, String svgNs, int x, int y) { - // return null; - // } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Constant.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Constant.java deleted file mode 100755 index a2b2a93647..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Constant.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.apache.tuscany.sca.impl.artifacts; - -public final class Constant { - - public static final int COMPONENT_DEFAULT_WIDTH = 200; - public static final int COMPONENT_DEFAULT_HEIGHT = 130; - public static final int COMPONENT_TEXT_SPACING = 20; - - public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_PROPERTY = 20; - public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_PROPERTY = 60; - public static final int SPACING_FOR_COMPONENT_OF_PROPERTY = 20; - public static final int SPACING_FOR_COMPOSITE_OF_PROPERTY = 60; - - public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_REFERENCE = 30; - public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_REFERENCE = 90; - public static final int SPACING_FOR_COMPONENT_OF_REFERENCE = 10; - public static final int SPACING_FOR_COMPOSITE_OF_REFERENCE = 50; - - public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_SERVICE = 30; - public static final int DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_SERVICE = 90; - public static final int SPACING_FOR_COMPONENT_OF_SERVICE = 10; - public static final int SPACING_FOR_COMPOSITE_OF_SERVICE = 50; - - public static final int SPACING_FOR_TEXT = 1; - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/DashedWire.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/DashedWire.java deleted file mode 100755 index 0169cf9936..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/DashedWire.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public class DashedWire extends WireArtifact { - - @Override - public Element addElement(Document document, String svgNs, Object a, Object b, int changingFactor, String color) { - - Element polyline = document.createElementNS(svgNs, "polyline"); - int x1 = 0, x2 = 0, y1 = 0, y2 = 0; - - if (a instanceof ServiceArtifact && b instanceof ServiceArtifact) { - - ServiceArtifact aService1 = (ServiceArtifact)a; - ServiceArtifact aService2 = (ServiceArtifact)b; - - x1 = aService1.getxCoordinate() + aService1.getHeight() * 3 / 2; - y1 = aService1.getyCoordinate() + aService1.getHeight() / 2; - - x2 = aService2.getxCoordinate() + aService2.getHeight() / 2; - y2 = aService2.getyCoordinate() + aService2.getHeight() / 2; - - } - - else if (a instanceof ReferenceArtifact && b instanceof ReferenceArtifact) { - - ReferenceArtifact aReference1 = (ReferenceArtifact)a; - ReferenceArtifact aReference2 = (ReferenceArtifact)b; - - x1 = aReference1.getxCoordinate() + aReference1.getHeight() * 3 / 2; - y1 = aReference1.getyCoordinate() + aReference1.getHeight() / 2; - - x2 = aReference2.getxCoordinate() + aReference2.getHeight() / 2; - y2 = aReference2.getyCoordinate() + aReference2.getHeight() / 2; - - } - - polyline = setWireAttributes(x1, y1, x2, y2, polyline, changingFactor, color); - - polyline.setAttributeNS(null, "stroke-dasharray", "3 3"); - - return polyline; - } - - /** - * - ]]> - - - - */ - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Layer.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Layer.java deleted file mode 100755 index c3a41140f8..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Layer.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * Structure of a "Outermost layer" : not a SCA artifact - * - */ -public class Layer extends Artifact { - - public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { - - this.setHeight(height); - this.setWidth(width); - this.setxCoordinate(x); - this.setyCoordinate(y); - - Element rectangle = document.createElementNS(svgNs, "rect"); - rectangle.setAttributeNS(null, "x", x + ""); - rectangle.setAttributeNS(null, "y", y + ""); - rectangle.setAttributeNS(null, "rx", getRoundCorner()); - rectangle.setAttributeNS(null, "ry", getRoundCorner()); - rectangle.setAttributeNS(null, "width", width + ""); - rectangle.setAttributeNS(null, "height", height + ""); - rectangle.setAttributeNS(null, "fill", "#E5E5D0"); - rectangle.setAttributeNS(null, "stroke", "#919191"); - rectangle.setAttributeNS(null, "alignment-baseline", "middle"); - - return rectangle; - } - - public Element addElement(Document document, String svgNs, int x, int y, int height, int width, String fillColor) { - - Element rect = addElement(document, svgNs, x, y, height, width); - rect.setAttributeNS(null, "fill", fillColor); - - return rect; - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Link.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Link.java deleted file mode 100755 index 533c718595..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Link.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * An "a" element to link two SVG diagrams: not a SCA artifact - * - */ -public class Link { - - public Element addElement(Document document, String svgNs, String fileName, String compName) { - - Element link = document.createElementNS(svgNs, "a"); - link.setAttributeNS(null, "xlink:href", fileName); - link.setAttributeNS(null, "xlink:show", "new"); - link.setTextContent(" " + compName + " ,"); - - return link; - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/NormalWire.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/NormalWire.java deleted file mode 100755 index 69d7bb4a60..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/NormalWire.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public class NormalWire extends WireArtifact { - - @Override - public Element addElement(Document document, String svgNs, Object a, Object b, int changingFactor, String color) { - - ReferenceArtifact aReference = (ReferenceArtifact)a; - ServiceArtifact aService = (ServiceArtifact)b; - - Element polyline = document.createElementNS(svgNs, "polyline"); - int x1 = aReference.getxCoordinate() + aReference.getHeight() * 3 / 2; - int y1 = aReference.getyCoordinate() + aReference.getHeight() / 2; - - int x2 = aService.getxCoordinate() + aService.getHeight() / 2; - int y2 = aService.getyCoordinate() + aService.getHeight() / 2; - - polyline = setWireAttributes(x1, y1, x2, y2, polyline, changingFactor, color); - - return polyline; - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/PropertyArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/PropertyArtifact.java deleted file mode 100755 index d9bad6e017..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/PropertyArtifact.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public class PropertyArtifact extends Artifact { - - /** - * Property is a square. - * ___ - * | | - * |___| - * - */ - public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { - - this.setHeight(height); - this.setWidth(width); - this.setxCoordinate(x); - this.setyCoordinate(y); - - Element rectangle = document.createElementNS(svgNs, "rect"); - rectangle.setAttributeNS(null, "x", x + ""); - rectangle.setAttributeNS(null, "y", y + ""); - rectangle.setAttributeNS(null, "width", height + ""); - rectangle.setAttributeNS(null, "height", height + ""); - rectangle.setAttributeNS(null, "fill", "#EEEE00"); - rectangle.setAttributeNS(null, "stroke", "#EEC900"); - //rectangle.setAttributeNS(null, "fill-opacity", "0.75"); - - return rectangle; - } - - public Element addElement(Document document, String svgNs, int x, int y, int height) { - - return addElement(document, svgNs, x, y, height, height); - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ReferenceArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ReferenceArtifact.java deleted file mode 100755 index 27a5a426ee..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ReferenceArtifact.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public class ReferenceArtifact extends Artifact { - - /** - * In a Reference the (x,y) coordinates refers to the top corner edge of the polygon - * (x,y)______ - * \ \ - * \ \ - * / / - * /____ / - */ - public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { - - this.setHeight(height); - this.setWidth(width); - this.setxCoordinate(x); - this.setyCoordinate(y); - - int halfOfHeight = height / 2; - - Element polygon = document.createElementNS(svgNs, "polygon"); - polygon.setAttributeNS(null, "points", "" + x - + "," - + y - + " " - + "" - + (x + 2 * halfOfHeight) - + "," - + (y) - + " " - + "" - + (x + 3 * halfOfHeight) - + "," - + (y + halfOfHeight) - + " " - + "" - + (x + 2 * halfOfHeight) - + "," - + (y + 2 * halfOfHeight) - + " " - + "" - + (x) - + "," - + (y + 2 * halfOfHeight) - + " " - + "" - + (x + halfOfHeight) - + "," - + (y + halfOfHeight) - + " "); - - polygon.setAttributeNS(null, "fill", "#BF3EFF"); - polygon.setAttributeNS(null, "stroke", "#68228B"); - - return polygon; - } - - public Element addElement(Document document, String svgNs, int x, int y, int height) { - - return this.addElement(document, svgNs, x, y, height, height * 3 / 2); - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ServiceArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ServiceArtifact.java deleted file mode 100755 index f92b5cab08..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ServiceArtifact.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public class ServiceArtifact extends Artifact { - - /** - * In a Service the (x,y) coordinates refers to the top corner edge of the polygon - * (x,y)______ - * \ \ - * \ \ - * / / - * /____ / - */ - public Element addElement(Document document, String svgNs, int x, int y, int height, int width) { - - this.setHeight(height); - this.setWidth(width); - this.setxCoordinate(x); - this.setyCoordinate(y); - - int halfOfHeight = height / 2; - - Element polygon = document.createElementNS(svgNs, "polygon"); - polygon.setAttributeNS(null, "points", "" + x - + "," - + y - + " " - + "" - + (x + 2 * halfOfHeight) - + "," - + (y) - + " " - + "" - + (x + 3 * halfOfHeight) - + "," - + (y + halfOfHeight) - + " " - + "" - + (x + 2 * halfOfHeight) - + "," - + (y + 2 * halfOfHeight) - + " " - + "" - + (x) - + "," - + (y + 2 * halfOfHeight) - + " " - + "" - + (x + halfOfHeight) - + "," - + (y + halfOfHeight) - + " "); - - polygon.setAttributeNS(null, "fill", "#00CD66"); - polygon.setAttributeNS(null, "stroke", "#008B45"); - - return polygon; - } - - /** - * Width is 3/2 times of the height - * @param document - * @param svgNs - * @param x - * @param y - * @param height - * @return - */ - public Element addElement(Document document, String svgNs, int x, int y, int height) { - - return this.addElement(document, svgNs, x, y, height, height * 3 / 2); - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Text.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Text.java deleted file mode 100644 index 976ccb547f..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Text.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public class Text { - - public static Element addTextElement(Document document, String svgNs, int x, int y, String content) { - Element text = document.createElementNS(svgNs, "text"); - text.setAttributeNS(null, "x", x + ""); - text.setAttributeNS(null, "y", y + ""); - //text.setAttributeNS(null, "text-anchor", "middle"); - text.setAttributeNS(null, "dominant-baseline", "mathematical"); - text.setAttributeNS(null, "font-size", "15"); - text.setTextContent(content); - - return text; - } -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/WireArtifact.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/WireArtifact.java deleted file mode 100755 index 4703abb80d..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/WireArtifact.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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.impl.artifacts; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public abstract class WireArtifact { - - public abstract Element addElement(Document document, - String svgNs, - Object a, - Object b, - int changingFactor, - String color); - - public Element setWireAttributes(int x1, int y1, int x2, int y2, Element polyline, int changingFactor, String color) { - - if (y1 == y2 && x2 > x1) { - polyline.setAttributeNS(null, "points", x1 + "," + y1 + " " + x2 + "," + y2); - } else if (y1 == y2 && x1 > x2) { - polyline.setAttributeNS(null, "points", x1 + "," - + y1 - + " " - + (x1 + changingFactor) - + "," - + y1 - + " " - + (x1 + changingFactor) - + "," - + (y1 - (changingFactor * 2)) - + " " - + (x2 - changingFactor) - + "," - + (y1 - (changingFactor * 2)) - + " " - + (x2 - changingFactor) - + "," - + (y1) - + " " - + (x2) - + "," - + (y1)); - - } else { - polyline.setAttributeNS(null, "points", x1 + "," - + y1 - + " " - + (x1 + changingFactor) - + "," - + y1 - + " " - + (x1 + changingFactor) - + "," - + y2 - + " " - + x2 - + "," - + y2); - } - - polyline.setAttributeNS(null, "stroke", color); - polyline.setAttributeNS(null, "stroke-width", "2"); - polyline.setAttributeNS(null, "fill", "none"); - - return polyline; - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/diagram/DiagramGenerator.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/diagram/DiagramGenerator.java deleted file mode 100755 index 822e427026..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/diagram/DiagramGenerator.java +++ /dev/null @@ -1,602 +0,0 @@ -/* - * 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.impl.diagram; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.Map.Entry; - -import org.apache.batik.dom.svg.SVGDOMImplementation; -import org.apache.tuscany.sca.impl.artifacts.ComponentArtifact; -import org.apache.tuscany.sca.impl.artifacts.CompositeArtifact; -import org.apache.tuscany.sca.impl.artifacts.Constant; -import org.apache.tuscany.sca.impl.artifacts.DashedWire; -import org.apache.tuscany.sca.impl.artifacts.Layer; -import org.apache.tuscany.sca.impl.artifacts.Link; -import org.apache.tuscany.sca.impl.artifacts.NormalWire; -import org.apache.tuscany.sca.impl.artifacts.PropertyArtifact; -import org.apache.tuscany.sca.impl.artifacts.ReferenceArtifact; -import org.apache.tuscany.sca.impl.artifacts.ServiceArtifact; -import org.apache.tuscany.sca.impl.artifacts.Text; -import org.apache.tuscany.sca.impl.artifacts.WireArtifact; -import org.apache.tuscany.sca.impl.layout.ComponentEntity; -import org.apache.tuscany.sca.impl.layout.CompositeEntity; -import org.apache.tuscany.sca.impl.layout.Entity; -import org.w3c.dom.DOMImplementation; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public class DiagramGenerator { - - private CompositeEntity comp; - private Document doc; - private String svgNS; - private Element svgRoot; - private ArrayList refs = new ArrayList(); - private ArrayList sers = new ArrayList(); - private int diagramHeight, diagramWidth; - - private boolean isHtml; - - private int lastUsedChangingFactor = 0; - - enum changingFactor { - a(20), b(25), c(30), d(35), e(40), f(15); - - private final int val; - - private changingFactor(int x) { - val = x; - } - - public int getVal() { - return val; - } - - }; - - enum color { - black - }//, violet, red, green}; - - private int previousWireColor = 0; - - /** - * Constructor to generate a SVG diagram for a given CompositeEntity - * Object. - */ - public DiagramGenerator(CompositeEntity comp, boolean isHtml) { - - this.comp = comp; - this.isHtml = isHtml; - - } - - /** - * Draws the diagram. - */ - public Document buildSVGDocument() { - - DOMImplementation impl = SVGDOMImplementation.getDOMImplementation(); - svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; - doc = impl.createDocument(svgNS, "svg", null); - - // Get the root element (the 'svg' element). - svgRoot = doc.getDocumentElement(); - - setDiagramHeight(comp.getHeight() + 200); - setDiagramWidth(comp.getWidth() + 400); - - svgRoot.setAttributeNS(null, "viewBox", "0 0 " + getDiagramWidth() + " " + getDiagramHeight()); - - addLayer(); - addComposite(); - - for (ComponentEntity ent : comp.getComponentList()) { - - addComponent(ent); - addComponentProperties(ent); - addComponentService(ent); - addComponentReference(ent); - } - - addCompositeProperties(); - addCompositeService(); - addCompositeReference(); - - addComponentConnections(); - addReferencePromotion(); - addServicePromotion(); - - addInclusions(); - - return doc; - } - - private void addLayer() { - - Layer outerLayer = new Layer(); - Element layerElt = outerLayer.addElement(doc, svgNS, 0, 0, getDiagramHeight(), getDiagramWidth()); - svgRoot.appendChild(layerElt); - } - - private void addReferencePromotion() { - - for (Iterator it = comp.getPromoteAReference().entrySet().iterator(); it.hasNext();) { - Entry entry = (Entry)it.next(); - String compositeRef = (String)entry.getKey(); - ArrayList componentRef = (ArrayList)entry.getValue(); - - ReferenceArtifact r1 = getRef(compositeRef); - - for (String ref : componentRef) { - - ReferenceArtifact r2 = getRef(ref); - - if (r1 != null && r2 != null) { - addWire(r2, r1); - } - } - - } - } - - private void addServicePromotion() { - - for (Iterator it = comp.getPromoteAService().entrySet().iterator(); it.hasNext();) { - Entry entry = (Entry)it.next(); - String compositeSer = (String)entry.getKey(); - String componentSer = (String)entry.getValue(); - - ServiceArtifact s1 = getSer(compositeSer); - ServiceArtifact s2 = getSer(componentSer); - - if (s1 != null && s2 != null) { - addWire(s1, s2); - } - } - } - - private void addInclusions() { - - if (!comp.getIncludedComposites().isEmpty()) { - - Layer inclusionLayer = new Layer(); - int constant = 5; - int x0 = comp.getX() + constant; - int y0 = comp.getY() + comp.getHeight() - (Constant.COMPONENT_DEFAULT_HEIGHT / 2 + constant); - int height = Constant.COMPONENT_DEFAULT_HEIGHT / 2; - int width = comp.getWidth() - constant * 2; - - Element layerElt = inclusionLayer.addElement(doc, svgNS, x0, y0, height, width, "#E5E5C0"); - - Element text = Text.addTextElement(doc, svgNS, x0 + constant, y0 + constant * 2, "Included Composites"); - - svgRoot.appendChild(layerElt); - svgRoot.appendChild(text); - - text = Text.addTextElement(doc, svgNS, x0 + constant, y0 + constant * 7, ""); - - String ext; - - if (isHtml) { - ext = ".html"; - } else { - ext = ".svg"; - } - - for (String includedComposite : comp.getIncludedComposites()) { - - Link link = new Link(); - Element aLink = - link.addElement(doc, svgNS, includedComposite + comp.getFileNameSuffix() + ext, includedComposite); - text.appendChild(aLink); - - } - svgRoot.appendChild(text); - } - } - - /** - * Connects references to services. - */ - private void addComponentConnections() { - - for (Entity ent : comp.getComponentList()) { - //if(ent instanceof ComponentEntity){ - - for (Iterator it = ((ComponentEntity)ent).getReferenceToServiceMap().entrySet().iterator(); it.hasNext();) { - Entry entry = (Entry)it.next(); - String ref = (String)entry.getKey(); - String ser = (String)entry.getValue(); - - ReferenceArtifact r = getRef(ref); - ServiceArtifact s = getSer(ser); - - if (r != null && s != null) { - addWire(r, s); - } - } - //} - } - } - - /** - * This is to remove overlapping of wire elements - */ - private String getColor() { - - previousWireColor = previousWireColor % color.values().length; - return color.values()[previousWireColor++].toString(); - } - - /** - * This is to remove overlapping of wire elements - */ - private int getChangingFactor() { - - lastUsedChangingFactor = lastUsedChangingFactor % changingFactor.values().length; - return changingFactor.values()[lastUsedChangingFactor++].getVal(); - - } - - private void addWire(ReferenceArtifact r, ServiceArtifact s) { - - WireArtifact edge = new NormalWire(); - Element wire = edge.addElement(doc, svgNS, r, s, getChangingFactor(), getColor()); - svgRoot.appendChild(wire); - } - - private void addWire(ServiceArtifact s1, ServiceArtifact s2) { - - DashedWire edge = new DashedWire(); - Element wire = edge.addElement(doc, svgNS, s1, s2, getChangingFactor(), getColor()); - svgRoot.appendChild(wire); - } - - private void addWire(ReferenceArtifact r1, ReferenceArtifact r2) { - - DashedWire edge = new DashedWire(); - Element wire = edge.addElement(doc, svgNS, r1, r2, getChangingFactor(), getColor()); - svgRoot.appendChild(wire); - } - - private ServiceArtifact getSer(String ser) { - - for (ServiceArtifact s : sers) { - if (s.getContainerName().equals(ser) || s.getName().equals(ser)) { - return s; - } - } - return null; - } - - private ReferenceArtifact getRef(String ref) { - - for (ReferenceArtifact r : refs) { - - if (r.getContainerName().equals(ref) || r.getName().equals(ref)) { - return r; - } - } - return null; - } - - private void addComponentProperties(ComponentEntity ent) { - int propLen = ent.getPropLength(); - int x = ent.getX() + Constant.SPACING_FOR_COMPONENT_OF_PROPERTY; - int y = ent.getY() - propLen / 2; - - for (String prop : ent.getProperties()) { - PropertyArtifact pro = new PropertyArtifact(); - Element property = pro.addElement(doc, svgNS, x, y, propLen); - Element text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, prop); - - svgRoot.appendChild(property); - svgRoot.appendChild(text); - - x += (propLen + Constant.SPACING_FOR_COMPONENT_OF_PROPERTY); - - pro.setName(prop); - pro.setContainerName(ent.getName()); - } - } - - private void addComponentReference(ComponentEntity ent) { - - int refHeight = ent.getRefHeight(); - int x = (ent.getX() + ent.getWidth()) - (refHeight * 2 / 3); - int y = ent.getY() + Constant.SPACING_FOR_COMPONENT_OF_REFERENCE; - - for (String ref : setRefOrder(ent)) { - ReferenceArtifact refer = new ReferenceArtifact(); - Element polygon = refer.addElement(doc, svgNS, x, y, refHeight); - Element text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ref); - svgRoot.appendChild(polygon); - svgRoot.appendChild(text); - - y += (refHeight + Constant.SPACING_FOR_COMPONENT_OF_REFERENCE); - - refer.setName(ref); - refer.setContainerName(ent.getName()); - refs.add(refer); - - } - } - - /** - * This method is used to organize the Component References, - * in a manner where they are stay approximately in-line with the - * connecting Service. This would enhance the clearness of the diagram. - */ - private String[] setRefOrder(ComponentEntity e) { - - ArrayList refs = e.getReferences(); - ArrayList sers = new ArrayList(); - String[] orderedRefs = new String[refs.size()]; - - //sers = new ArrayList(e.getReferenceToServiceMap().values()); - - sers = buildReferenceToMappingServiceList(refs, e); - - for (String eName : e.getAdjacentEntities()) { - for (Entity ent : comp.getComponentList()) { - - if (ent.getName().equals(eName)) { - for (String s : sers) { - for (String s1 : ent.getServices()) { - //System.err.println("XXXXX "+ s1 +" ::: "+s); - if (s1.equals(s) || s.equals(ent.getName())) { - //System.err.println("|||||||| "+ sers.size()+ " ||| " + refs.size()+"|| "+orderedRefs.length); - if (orderedRefs[ent.getLevel()] == null) { - //System.err.println("XXXXX "+ sers.get(1)+ " ::::::: "+refs.get(1)); - // System.err.println("XXXXX "+ sers.get(2)+ " ::::::: "+refs.get(2)); - // System.err.println("XXXXX "+ sers.get(3)+ " ::::::: "+refs.get(3)); - //System.err.println("XXXXX "+ refs.get(sers.indexOf(s))+" ::: "+ent.getLevel()+" ::: "+ent.getName()); - orderedRefs[ent.getLevel()] = refs.get(sers.indexOf(s)); - break; - } else { - for (int i = ent.getLevel(); i < orderedRefs.length; i++) { - if (orderedRefs[i] == null) { - - orderedRefs[i] = refs.get(sers.indexOf(s)); - break; - } - // else{ - // if(i==orderedRefs.length) - // System.out.println("GRRR"); - // } - } - } - } - } - } - } - } - } - - //adding references which are not connected to any service - for (String ref : refs) { - for (int i = 0; i < orderedRefs.length; i++) { - if (ref.equals(orderedRefs[i])) { - break; - } else if (orderedRefs[i] == null) { - orderedRefs[i] = ref; - break; - } - } - } - - return orderedRefs; - } - - private ArrayList buildReferenceToMappingServiceList(ArrayList refs, ComponentEntity e) { - - ArrayList sers = new ArrayList(); - - for (int i = 0; i < refs.size(); i++) { - sers.add(i, ""); - } - - for (Iterator it = e.getReferenceToServiceMap().entrySet().iterator(); it.hasNext();) { - - Entry entry = (Entry)it.next(); - String ref = (String)entry.getKey(); - String ser = (String)entry.getValue(); - //System.out.println("---------"+ref); - int idx = refs.indexOf(ref); - //System.out.println("---------"+sers.get(idx)); - sers.remove(idx); - sers.add(idx, ser); - //System.out.println(refs.get(idx)+"---"+sers.get(idx)); - - } - - return sers; - } - - private void addComponentService(ComponentEntity ent) { - int serHeight = ent.getSerHeight(); - int x = ent.getX() - (serHeight * 2 / 3); - int y = ent.getY() + Constant.SPACING_FOR_COMPONENT_OF_SERVICE; - - //System.out.println("''''''"+ent.getName() +" '''''' "+ ent.getServices().size()); - for (String ser : ent.getServices()) { - - ServiceArtifact serve = new ServiceArtifact(); - Element polygon = serve.addElement(doc, svgNS, x, y, serHeight); - Element text; - if (!ser.endsWith("Impl")) - text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ser); - else - text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ""); - - svgRoot.appendChild(polygon); - svgRoot.appendChild(text); - - y += (serHeight + Constant.SPACING_FOR_COMPONENT_OF_SERVICE); - - serve.setName(ser); - serve.setContainerName(ent.getName()); - sers.add(serve); - } - } - - private void addCompositeService() { - - int serHeight = comp.getSerHeight(); - int x = comp.getX() - (serHeight * 2 / 3); - int y = - comp.getY() + getStartingPoint(comp.getHeight(), serHeight, Constant.SPACING_FOR_COMPOSITE_OF_SERVICE, comp - .getServices().size()); - - //int y= comp.getY() + Constant.SPACING_FOR_COMPOSITE_OF_SERVICE; - - //System.err.println(serHeight); - //System.out.println("''''''"+((CompositeEntity)comp).getName() +" '''''' "+ comp.getServices().size()); - for (String ser : comp.getServices()) { - - ServiceArtifact serve = new ServiceArtifact(); - Element polygon = serve.addElement(doc, svgNS, x, y, serHeight); - Element text; - if (!ser.endsWith("Impl")) - text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ser); - else - text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ""); - - svgRoot.appendChild(polygon); - svgRoot.appendChild(text); - - y += (serHeight + Constant.SPACING_FOR_COMPOSITE_OF_SERVICE); - - serve.setName(ser); - serve.setContainerName(comp.getName()); - sers.add(serve); - } - } - - private void addCompositeReference() { - - int refHeight = comp.getRefHeight(); - - int x = (comp.getX() + comp.getWidth()) - (refHeight * 2 / 3); - int y = - comp.getY() + getStartingPoint(comp.getHeight(), - refHeight, - Constant.SPACING_FOR_COMPOSITE_OF_REFERENCE, - comp.getReferences().size()); - - for (String ref : comp.getReferences()) { - ReferenceArtifact refer = new ReferenceArtifact(); - Element polygon = refer.addElement(doc, svgNS, x, y, refHeight); - Element text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, ref); - svgRoot.appendChild(polygon); - svgRoot.appendChild(text); - - y += (refHeight + Constant.SPACING_FOR_COMPOSITE_OF_REFERENCE); - - refer.setName(ref); - refer.setContainerName(comp.getName()); - refs.add(refer); - - } - - } - - //Algorithm to position in center - private int getStartingPoint(int compDim, int artifactDim, int gap, int artifactQty) { - - int x = (compDim - artifactQty * artifactDim - (artifactQty - 1) * gap) / 2; - return x; - } - - private void addCompositeProperties() { - int propLen = comp.getPropLength(); - - int x = - comp.getX() + getStartingPoint(comp.getWidth(), propLen, Constant.SPACING_FOR_COMPOSITE_OF_PROPERTY, comp - .getProperties().size()); - //int x= comp.getX() + Constant.SPACING_FOR_COMPOSITE_OF_PROPERTY; - int y = comp.getY() - propLen / 2; - - for (String prop : comp.getProperties()) { - PropertyArtifact pro = new PropertyArtifact(); - Element property = pro.addElement(doc, svgNS, x, y, propLen); - Element text = Text.addTextElement(doc, svgNS, x, y - Constant.SPACING_FOR_TEXT, prop); - - svgRoot.appendChild(property); - svgRoot.appendChild(text); - - x += (propLen + Constant.SPACING_FOR_COMPOSITE_OF_PROPERTY); - - pro.setName(prop); - pro.setContainerName(comp.getName()); - } - } - - private void addComponent(Entity ent) { - - ComponentArtifact comp = new ComponentArtifact(); - //System.err.println(ent.getX()); - Element com = comp.addElement(doc, svgNS, ent.getX(), ent.getY(), ent.getHeight(), ent.getWidth()); - Element text = - Text.addTextElement(doc, - svgNS, - ent.getX(), - ent.getY() + (ent.getHeight() + Constant.COMPONENT_TEXT_SPACING), - ent.getName()); - - svgRoot.appendChild(com); - svgRoot.appendChild(text); - - comp.setName(ent.getName()); - } - - private void addComposite() { - - CompositeArtifact composite = new CompositeArtifact(); - - Element composi = composite.addElement(doc, svgNS, comp.getX(), comp.getY(), comp.getHeight(), comp.getWidth()); - Element text = Text.addTextElement(doc, svgNS, comp.getX() + 20, comp.getY() + 20, comp.getName()); - - svgRoot.appendChild(composi); - svgRoot.appendChild(text); - - composite.setName(comp.getName()); - - } - - public void setDiagramHeight(int diagramHeight) { - this.diagramHeight = diagramHeight; - } - - public int getDiagramHeight() { - return diagramHeight; - } - - public void setDiagramWidth(int diagramWidth) { - this.diagramWidth = diagramWidth; - } - - public int getDiagramWidth() { - return diagramWidth; - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/html/HTMLWrapper.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/html/HTMLWrapper.java deleted file mode 100755 index 8feedd84b1..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/html/HTMLWrapper.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 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.impl.html; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; - -public class HTMLWrapper { - - private File htmlFilePath; - private String compositeName; - private String svg; - - /** - * - * @param svg - * @param compositeName - * @param htmlFilePath - */ - public HTMLWrapper(String svg, String compositeName, File htmlFilePath) { - - this.svg = svg; - this.compositeName = compositeName; - this.htmlFilePath = htmlFilePath; - } - - public String buildHTML() throws Exception { - String content = - "" + "\n" - + "\n" - + "

Apache Tuscany - Composite Diagram Generator

\n" - + "

" - + compositeName - + "

\n" - + "
\n" - + - // "\n" + - // "\n" + - // "\n" + - "\n" - + "\n" - + svg - + "\n" - + - // "\n" + - // "\n" + - "\n" - + ""; - - fileWriter(content); - - return content; - - } - - private void fileWriter(String content) throws Exception { - - FileWriter fileWriter = new FileWriter(htmlFilePath); - BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); - bufferedWriter.append(content); - bufferedWriter.close(); - - } -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/io/XMLReader.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/io/XMLReader.java deleted file mode 100755 index b297421149..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/io/XMLReader.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.impl.io; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - -import org.w3c.dom.Document; - -public class XMLReader { - - //get the factory - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - private Document dom; - - public Document parseXMLFile(String file) throws Exception { - //Using factory get an instance of document builder - DocumentBuilder db = dbf.newDocumentBuilder(); - - //parse using builder to get DOM representation of the XML file - dom = db.parse(file); - - return dom; - } -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/io/XMLWriter.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/io/XMLWriter.java deleted file mode 100755 index 8963e09ec1..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/io/XMLWriter.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.impl.io; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; - -public class XMLWriter { - - public void fileWriter(String content, File outFile) throws Exception { - - FileWriter fileWriter = new FileWriter(outFile); - BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); - bufferedWriter.write(content); - bufferedWriter.close(); - - // TransformerFactory transformerFactory = TransformerFactory.newInstance(); - // Transformer transformer = transformerFactory.newTransformer(); - // DOMSource source = new DOMSource(doc); - // StreamResult result = new StreamResult(bufferedWriter); - // transformer.transform(source, result); - - } -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/ComponentEntity.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/ComponentEntity.java deleted file mode 100755 index 9e12656b8a..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/ComponentEntity.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * 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.impl.layout; - -import java.util.HashMap; - -import org.apache.tuscany.sca.impl.artifacts.Constant; - -/** - * Represents an unit (a component including its references, services, properties - * and adjacent units) in the diagram. - * - */ -public class ComponentEntity extends Entity { - - // private String componentName; - // private int X, Y, level=-1, lane=-1, refHeight, serHeight, propLength; - // private final int height= Component.DEFAULT_HEIGHT, width= Component.DEFAULT_WIDTH; - // public static final int defaultNoOfSers= Component.DEFAULT_HEIGHT / (Service.MAXIMUM_HEIGHT+Service.SPACING); - // public static final int defaultNoOfRefs= Component.DEFAULT_HEIGHT / (Reference.MAXIMUM_HEIGHT+Reference.SPACING); //same value for defaultNoOfSers - // public static final int defaultNoOfProps= Component.DEFAULT_WIDTH / (Property.MAXIMUM_HEIGHT+Property.SPACING); - - private HashMap referenceToServiceMap = new HashMap(); - - //private HashSet connectedEntities = new HashSet(); - - public ComponentEntity() { - - setStartPosition(200); - setHeight(Constant.COMPONENT_DEFAULT_HEIGHT); - setWidth(Constant.COMPONENT_DEFAULT_WIDTH); - - setDefaultNoOfSers(Constant.COMPONENT_DEFAULT_HEIGHT / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_SERVICE + Constant.SPACING_FOR_COMPONENT_OF_SERVICE)); - setDefaultNoOfRefs(Constant.COMPONENT_DEFAULT_HEIGHT / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_REFERENCE + Constant.SPACING_FOR_COMPONENT_OF_REFERENCE)); - setDefaultNoOfProps(Constant.COMPONENT_DEFAULT_WIDTH / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_PROPERTY + Constant.SPACING_FOR_COMPONENT_OF_PROPERTY)); - } - - public void referenceHeight() { - if (getDefaultNoOfRefs() < getNoOfRefs()) { - - setRefHeight((Constant.COMPONENT_DEFAULT_HEIGHT / getNoOfRefs()) - Constant.SPACING_FOR_COMPONENT_OF_REFERENCE); - } else - setRefHeight(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_REFERENCE); - } - - public void serviceHeight() { - if (getDefaultNoOfSers() < getNoOfSers()) { - - setSerHeight((Constant.COMPONENT_DEFAULT_HEIGHT / getNoOfSers()) - Constant.SPACING_FOR_COMPONENT_OF_SERVICE); - } else - setSerHeight(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_SERVICE); - } - - public void propertyLength() { - if (getDefaultNoOfProps() < getNoOfProps()) { - - setPropLength((Constant.COMPONENT_DEFAULT_WIDTH / getNoOfProps()) - Constant.SPACING_FOR_COMPONENT_OF_PROPERTY); - } else - setPropLength(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPONENT_OF_PROPERTY); - } - - /** - * Put a value to referenceToServiceMap - * @param ref - * @param ser - * @return successfully added or not - */ - //assumption there can not be two services for the same reference - public boolean addToRefToSerMap(String ref, String ser) { - //ref = ref.toLowerCase(); - //ser = ser.toLowerCase(); - - if (referenceToServiceMap.containsKey(ref)) - return false; - - referenceToServiceMap.put(ref, ser); - return true; - } - - /** - * Retrieve a service name for a given reference - * @param ref - * @return service name - */ - public String getSerOfRef(String ref) { - //ref = ref.toLowerCase(); - - if (!referenceToServiceMap.containsKey(ref)) - return null; - - return referenceToServiceMap.get(ref); - } - - public HashMap getReferenceToServiceMap() { - return referenceToServiceMap; - } - - public void setReferenceToServiceMap(HashMap referenceToServiceMap) { - this.referenceToServiceMap = referenceToServiceMap; - } - - // public int getNoOfRefs(){ - // return references.size(); - // } - // - // public int getNoOfSers(){ - // return services.size(); - // } - // - // public int getNoOfProps(){ - // return properties.size(); - // } - // - // public int getNoOfAdjacentUnits(){ - // return adjacentEntities.size(); - // } - // - // /** - // * Put a value to referenceToServiceMap - // * @param ref - // * @param ser - // * @return successfully added or not - // */ - // //assumption there can not be two services for the same reference - // public boolean addToRefToSerMap(String ref, String ser){ - // //ref = ref.toLowerCase(); - // //ser = ser.toLowerCase(); - // - // if (referenceToServiceMap.containsKey(ref)) - // return false; - // - // referenceToServiceMap.put(ref, ser); - // return true; - // } - // - // /** - // * Retrieve a service name for a given reference - // * @param ref - // * @return service name - // */ - // public String getSerOfRef(String ref){ - // //ref = ref.toLowerCase(); - // - // if (!referenceToServiceMap.containsKey(ref)) - // return null; - // - // return referenceToServiceMap.get(ref); - // } - // - // public void addAService(String serName){ - // //serName = serName.toLowerCase(); - // services.add(serName); - // - // } - // - // public void addAReference(String refName){ - // //refName = refName.toLowerCase(); - // references.add(refName); - // - // } - // - // public void addAProperty(String propName){ - // //propName = propName.toLowerCase(); - // properties.add(propName); - // - // } - // - // public void addAnAdjacentEntity(String x){ - //// System.out.println("eee "+x); - // adjacentEntities.add(x); - // - // } - // - // public void addAnConnectedEntity(String x){ - //// System.out.println("eee "+x); - // adjacentEntities.add(x); - // - // } - // - // public HashMap getReferenceToServiceMap() { - // return referenceToServiceMap; - // } - // public void setReferenceToServiceMap( - // HashMap referenceToServiceMap) { - // this.referenceToServiceMap = referenceToServiceMap; - // } - // public ArrayList getProperties() { - // return properties; - // } - // public void setProperties(ArrayList properties) { - // this.properties = properties; - // } - // public HashSet getAdjacentEntities() { - // return adjacentEntities; - // } - // public void setAdjacentEntities(HashSet adjacentEntities) { - // this.adjacentEntities = adjacentEntities; - // } - // public void setServices(ArrayList services) { - // this.services = services; - // } - // - // public ArrayList getServices() { - // return services; - // } - // - // public ArrayList getReferences() { - // return references; - // } - - // public void setConnectedEntities(HashSet connectedEntities) { - // this.connectedEntities = connectedEntities; - // } - // - // public HashSet getConnectedEntities() { - // return connectedEntities; - // } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/CompositeEntity.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/CompositeEntity.java deleted file mode 100755 index 21746dfa28..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/CompositeEntity.java +++ /dev/null @@ -1,374 +0,0 @@ -/* - * 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.impl.layout; - -import java.util.ArrayList; -import java.util.HashMap; - -import org.apache.tuscany.sca.impl.artifacts.Constant; - -/** - * Represents an unit (a component including its references, services, properties - * and adjacent units) in the diagram. - * - */ -public class CompositeEntity extends Entity { - - // private String componentName; - // private int X, Y, level=-1, lane=-1, refHeight, serHeight, propLength; - // private final int height= Component.DEFAULT_HEIGHT, width= Component.DEFAULT_WIDTH; - // public static final int defaultNoOfSers= Component.DEFAULT_HEIGHT / (Service.MAXIMUM_HEIGHT+Service.SPACING); - // public static final int defaultNoOfRefs= Component.DEFAULT_HEIGHT / (Reference.MAXIMUM_HEIGHT+Reference.SPACING); //same value for defaultNoOfSers - // public static final int defaultNoOfProps= Component.DEFAULT_WIDTH / (Property.MAXIMUM_HEIGHT+Property.SPACING); - - private final String fileNameSuffix = "_diagram"; - private int maxInternalLevel = 0; - private int maxInternalLane = 0; - private ComponentEntity[] componentList; - private int[][] connections; - private HashMap promoteAService = new HashMap(); - private HashMap> promoteAReference = new HashMap>(); - private ArrayList includedComposites = new ArrayList(); - - //private HashSet connectedEntities = new HashSet(); - - public CompositeEntity(String name) { - - setStartPosition(200); - setLevel(0); - setLane(0); - - setX(getStartPosition()); - setY(getStartPosition() / 2); - - setName(name); - //componentList = comps; - //setConnections(conns); - - } - - public void referenceHeight() { - //System.err.println(getDefaultNoOfRefs() + " kkkkkkk "+getNoOfRefs()); - - if (getDefaultNoOfRefs() < getNoOfRefs()) { - - setRefHeight((getHeight() / getNoOfRefs()) - Constant.SPACING_FOR_COMPOSITE_OF_REFERENCE); - } else - setRefHeight(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_REFERENCE); - } - - public void serviceHeight() { - if (getDefaultNoOfSers() < getNoOfSers()) { - setSerHeight((getHeight() / getNoOfSers()) - Constant.SPACING_FOR_COMPOSITE_OF_SERVICE); - } else - setSerHeight(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_SERVICE); - } - - public void propertyLength() { - if (getDefaultNoOfProps() < getNoOfProps()) { - - setPropLength((getWidth() / getNoOfProps()) - Constant.SPACING_FOR_COMPOSITE_OF_PROPERTY); - } else - setPropLength(Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_PROPERTY); - } - - // /** - // * Put a value to referenceToServiceMap - // * @param ref - // * @param ser - // * @return successfully added or not - // */ - // //assumption there can not be two services for the same reference - // public boolean addToRefToSerMap(String ref, String ser){ - // //ref = ref.toLowerCase(); - // //ser = ser.toLowerCase(); - // - // if (referenceToServiceMap.containsKey(ref)) - // return false; - // - // referenceToServiceMap.put(ref, ser); - // return true; - // } - // - // /** - // * Retrieve a service name for a given reference - // * @param ref - // * @return service name - // */ - // public String getSerOfRef(String ref){ - // //ref = ref.toLowerCase(); - // - // if (!referenceToServiceMap.containsKey(ref)) - // return null; - // - // return referenceToServiceMap.get(ref); - // } - // - // public HashMap getReferenceToServiceMap() { - // return referenceToServiceMap; - // } - // - // public void setReferenceToServiceMap( - // HashMap referenceToServiceMap) { - // this.referenceToServiceMap = referenceToServiceMap; - // } - - public void calcHeight(int initPoint) { - setHeight((Constant.COMPONENT_DEFAULT_HEIGHT * getSpaceFactor()) * (maxInternalLevel + 1) + initPoint); - } - - public void calcWidth(int initPoint) { - //System.err.println("maxInternalLane "+maxInternalLane); - setWidth((Constant.COMPONENT_DEFAULT_WIDTH * getSpaceFactor()) * (maxInternalLane + 1) + initPoint); - } - - private int max(int a, int b) { - if (a >= b) - return a; - return b; - } - - public void setMaxInternalProperties() { - - for (ComponentEntity ent : componentList) { - - maxInternalLevel = max(maxInternalLevel, ent.getLevel()); - maxInternalLane = max(maxInternalLane, ent.getLane()); - - } - //System.out.println("++++++ "+maxInternalLevel+" +++++ "+maxInternalLane); - } - - public int getMaxInternalLevel() { - return maxInternalLevel; - } - - public int getMaxInternalLane() { - return maxInternalLane; - } - - public boolean addToPromoteAService(String compositeSer, String componentSer) { - //ref = ref.toLowerCase(); - //ser = ser.toLowerCase(); - - if (promoteAService.containsKey(compositeSer)) - return false; - - promoteAService.put(compositeSer, componentSer); - return true; - } - - public void setPromoteAService(HashMap promoteAService) { - this.promoteAService = promoteAService; - } - - public HashMap getPromoteAService() { - return promoteAService; - } - - public boolean addToPromoteAReference(String compositeRef, String componentRef) { - ArrayList list; - - if (promoteAReference.containsKey(compositeRef)) { - list = promoteAReference.get(compositeRef); - } else { - list = new ArrayList(); - } - - list.add(componentRef); - promoteAReference.put(compositeRef, list); - return true; - } - - public boolean addToIncludedComposites(String composite) { - - includedComposites.add(composite); - - return true; - } - - public void setPromoteAReference(HashMap> promoteAReference) { - this.promoteAReference = promoteAReference; - } - - public HashMap> getPromoteAReference() { - return promoteAReference; - } - - public ComponentEntity[] getComponentList() { - return componentList; - } - - public void setComponentList(ComponentEntity[] componentList) { - this.componentList = componentList; - } - - public void setConnections(int[][] connections) { - this.connections = connections; - } - - public int[][] getConnections() { - return connections; - } - - public void setAttributes() { - - setMaxInternalProperties(); - - //System.out.println("++++++ "+this.maxInternalLevel); - - calcHeight(getY()); - calcWidth(getX()); - - setDefaultNoOfSers(getHeight() / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_SERVICE + Constant.SPACING_FOR_COMPOSITE_OF_SERVICE)); - setDefaultNoOfRefs(getHeight() / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_REFERENCE + Constant.SPACING_FOR_COMPOSITE_OF_REFERENCE)); - setDefaultNoOfProps(getWidth() / (Constant.DEFAULT_MAXIMUM_HEIGHT_FOR_COMPOSITE_OF_PROPERTY + Constant.SPACING_FOR_COMPOSITE_OF_PROPERTY)); - - referenceHeight(); - serviceHeight(); - propertyLength(); - } - - public ArrayList getIncludedComposites() { - return includedComposites; - } - - public String getFileNameSuffix() { - return fileNameSuffix; - } - - // public int getNoOfRefs(){ - // return references.size(); - // } - // - // public int getNoOfSers(){ - // return services.size(); - // } - // - // public int getNoOfProps(){ - // return properties.size(); - // } - // - // public int getNoOfAdjacentUnits(){ - // return adjacentEntities.size(); - // } - // - // /** - // * Put a value to referenceToServiceMap - // * @param ref - // * @param ser - // * @return successfully added or not - // */ - // //assumption there can not be two services for the same reference - // public boolean addToRefToSerMap(String ref, String ser){ - // //ref = ref.toLowerCase(); - // //ser = ser.toLowerCase(); - // - // if (referenceToServiceMap.containsKey(ref)) - // return false; - // - // referenceToServiceMap.put(ref, ser); - // return true; - // } - // - // /** - // * Retrieve a service name for a given reference - // * @param ref - // * @return service name - // */ - // public String getSerOfRef(String ref){ - // //ref = ref.toLowerCase(); - // - // if (!referenceToServiceMap.containsKey(ref)) - // return null; - // - // return referenceToServiceMap.get(ref); - // } - // - // public void addAService(String serName){ - // //serName = serName.toLowerCase(); - // services.add(serName); - // - // } - // - // public void addAReference(String refName){ - // //refName = refName.toLowerCase(); - // references.add(refName); - // - // } - // - // public void addAProperty(String propName){ - // //propName = propName.toLowerCase(); - // properties.add(propName); - // - // } - // - // public void addAnAdjacentEntity(String x){ - //// System.out.println("eee "+x); - // adjacentEntities.add(x); - // - // } - // - // public void addAnConnectedEntity(String x){ - //// System.out.println("eee "+x); - // adjacentEntities.add(x); - // - // } - // - // public HashMap getReferenceToServiceMap() { - // return referenceToServiceMap; - // } - // public void setReferenceToServiceMap( - // HashMap referenceToServiceMap) { - // this.referenceToServiceMap = referenceToServiceMap; - // } - // public ArrayList getProperties() { - // return properties; - // } - // public void setProperties(ArrayList properties) { - // this.properties = properties; - // } - // public HashSet getAdjacentEntities() { - // return adjacentEntities; - // } - // public void setAdjacentEntities(HashSet adjacentEntities) { - // this.adjacentEntities = adjacentEntities; - // } - // public void setServices(ArrayList services) { - // this.services = services; - // } - // - // public ArrayList getServices() { - // return services; - // } - // - // public ArrayList getReferences() { - // return references; - // } - - // public void setConnectedEntities(HashSet connectedEntities) { - // this.connectedEntities = connectedEntities; - // } - // - // public HashSet getConnectedEntities() { - // return connectedEntities; - // } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/Entity.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/Entity.java deleted file mode 100755 index f0f7215a24..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/Entity.java +++ /dev/null @@ -1,259 +0,0 @@ -package org.apache.tuscany.sca.impl.layout; - -import java.util.ArrayList; -import java.util.HashSet; - -public abstract class Entity { - - private int id = -1; //a unique integer id (0..n) - private String name; // a unique name - private int spaceFactor = 2; //which determines the free space surrounded by this - private int x; // x coordinate - private int y; // y coordinate - private int level = -1; // corresponding row which this entity is placed - private int lane = -1; // corresponding column which this entity is placed - private boolean isPossitionSet = false; - private int height; // height of the entity - private int width; // width of the entity - private int refHeight; // height of a reference element - private int serHeight; // height of a service element - private int propLength; // length of a property element - private int defaultNoOfSers; // default # of service elements - private int defaultNoOfRefs; // default # of reference elements - private int defaultNoOfProps; // default # of property elements - private int startPosition = 0; - private Entity parent = null; - - private ArrayList references = new ArrayList(); - - private ArrayList services = new ArrayList(); - - private ArrayList properties = new ArrayList(); - - private HashSet adjacentEntities = new HashSet(); - - public abstract void referenceHeight(); - - public abstract void serviceHeight(); - - public abstract void propertyLength(); - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getX() { - return x; - } - - public void setX(int init) { - this.x = init + width * spaceFactor * lane; - } - - public int getY() { - return y; - } - - public void setY(int init) { - this.y = init + height * spaceFactor * level; - } - - public int getLevel() { - return level; - } - - public void setLevel(int level) { - this.level = level; - } - - public int getLane() { - return lane; - } - - public void setLane(int lane) { - this.lane = lane; - } - - public int getHeight() { - return height; - } - - public void setHeight(int height) { - this.height = height; - } - - public int getWidth() { - return width; - } - - public void setWidth(int width) { - this.width = width; - } - - public int getRefHeight() { - return refHeight; - } - - public void setRefHeight(int refHeight) { - this.refHeight = refHeight; - } - - public int getSerHeight() { - return serHeight; - } - - public void setSerHeight(int serHeight) { - this.serHeight = serHeight; - } - - public int getPropLength() { - return propLength; - } - - public void setPropLength(int propLength) { - this.propLength = propLength; - } - - public int getDefaultNoOfSers() { - return defaultNoOfSers; - } - - public void setDefaultNoOfSers(int defaultNoOfSers) { - this.defaultNoOfSers = defaultNoOfSers; - } - - public int getDefaultNoOfRefs() { - return defaultNoOfRefs; - } - - public void setDefaultNoOfRefs(int defaultNoOfRefs) { - this.defaultNoOfRefs = defaultNoOfRefs; - } - - public int getDefaultNoOfProps() { - return defaultNoOfProps; - } - - public void setDefaultNoOfProps(int defaultNoOfProps) { - this.defaultNoOfProps = defaultNoOfProps; - } - - public int getNoOfRefs() { - return references.size(); - } - - public int getNoOfSers() { - return services.size(); - } - - public int getNoOfProps() { - return properties.size(); - } - - public int getNoOfAdjacentUnits() { - return adjacentEntities.size(); - } - - public void addAService(String serName) { - //serName = serName.toLowerCase(); - services.add(serName); - - } - - public void addAReference(String refName) { - //refName = refName.toLowerCase(); - references.add(refName); - - } - - public void addAProperty(String propName) { - //propName = propName.toLowerCase(); - properties.add(propName); - - } - - public void addAnAdjacentEntity(String x) { - // System.out.println("eee "+x); - adjacentEntities.add(x); - - } - - public void addAnConnectedEntity(String x) { - // System.out.println("eee "+x); - adjacentEntities.add(x); - - } - - public ArrayList getProperties() { - return properties; - } - - public void setProperties(ArrayList properties) { - this.properties = properties; - } - - public HashSet getAdjacentEntities() { - return adjacentEntities; - } - - public void setAdjacentEntities(HashSet adjacentEntities) { - this.adjacentEntities = adjacentEntities; - } - - public void setServices(ArrayList services) { - this.services = services; - } - - public ArrayList getServices() { - return services; - } - - public ArrayList getReferences() { - return references; - } - - public void setId(int id) { - this.id = id; - } - - public int getId() { - return id; - } - - public void setPossitionSet(boolean isPossitionSet) { - this.isPossitionSet = isPossitionSet; - } - - public boolean isPossitionSet() { - return isPossitionSet; - } - - public int getSpaceFactor() { - return spaceFactor; - } - - public void setSpaceFactor(int spaceFactor) { - this.spaceFactor = spaceFactor; - } - - public void setStartPosition(int startPosition) { - this.startPosition = startPosition; - } - - public int getStartPosition() { - return startPosition; - } - - public void setParent(Entity parent) { - this.parent = parent; - } - - public Entity getParent() { - return parent; - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java deleted file mode 100755 index 387afd22c0..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java +++ /dev/null @@ -1,733 +0,0 @@ -/* - * 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.impl.layout; - -import java.util.ArrayList; -import java.util.HashMap; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; - -public class EntityBuilder { - - private Document dom; - - //components connected to each other are tracked using following map - private HashMap> connectedEntities = new HashMap>(); - private int totalWidth = 0; - private int totalHeight = 0; - - CompositeEntity composite = null; - - /** - * Constructor which initiates the DOM document - * @param aDom DOM document - */ - public EntityBuilder(Document aDom) { - dom = aDom; - } - - public CompositeEntity buildCompositeEntity() { - - //get the root element - Element docEle = dom.getDocumentElement(); - - String compositeName; - compositeName = docEle.getAttribute("name"); - //System.out.println("compositeName "+compositeName); - - ComponentEntity[] comps = buildComponentEntities(docEle); - - composite = new CompositeEntity(compositeName); - - setParent(comps); - - //System.out.println("ComponentEntity "+comps[0].getLevel()); - int[][] conns = buildConnectionMatrix(comps); - - composite.setComponentList(comps); - composite.setConnections(conns); - - LayoutBuilder buildLayout = new LayoutBuilder(comps, conns); - buildLayout.placeEntities(); - - //System.out.println("conns "+conns[0][0]); - - buildCompositeService(docEle); - buildCompositeReference(docEle); - buildCompositeProperty(docEle); - - addInclusions(docEle); - - composite.setAttributes(); - - return composite; - } - - // private void assignCoordinates() { - // - // for(Entity ent: elts){ - // ent.setX(ent.getParent().getX() + ent.getStartPosition()); - // ent.setY(ent.getParent().getY() + ent.getStartPosition()/2); - // } - // } - - private void setParent(ComponentEntity[] comps) { - - for (ComponentEntity comp : comps) { - comp.setParent(composite); - } - } - - private void buildCompositeService(Element docEle) { - - NodeList nl = docEle.getElementsByTagName("service"); - //System.err.println("^^^^^^^^^ "+nl.getLength()); - if (nl != null && nl.getLength() > 0) { - - for (int i = 0; i < nl.getLength(); i++) { - - Element elt = (Element)nl.item(i); - - if (elt.getParentNode().getNodeName().equals("composite")) { - String compositeSer = elt.getAttribute("name"); - composite.addAService(compositeSer); - - String target = elt.getAttribute("promote"); - - String service, serviceComp; - String[] arr1 = extractComp(target); - serviceComp = arr1[0]; - service = arr1[1]; - - if (service == null) { - composite.addToPromoteAService(compositeSer, serviceComp); - } else { - composite.addToPromoteAService(compositeSer, service); - } - } - - } - } - } - - private void buildCompositeReference(Element docEle) { - - NodeList nl = docEle.getElementsByTagName("reference"); - //System.out.println("^^^^^^^^^ "+nl.getLength()); - if (nl != null && nl.getLength() > 0) { - - for (int i = 0; i < nl.getLength(); i++) { - - Element elt = (Element)nl.item(i); - - if (elt.getParentNode().getNodeName().equals("composite")) { - String compositeRef = elt.getAttribute("name"); - composite.addAReference(compositeRef); - - String targetStr = elt.getAttribute("promote"); - - String[] targets = targetStr.split(" "); - - for (String target : targets) { - - String reference, referenceComp; - String[] arr1 = extractComp(target); - referenceComp = arr1[0]; - reference = arr1[1]; - - if (reference == null) { - composite.addToPromoteAReference(compositeRef, referenceComp); - } else { - composite.addToPromoteAReference(compositeRef, reference); - } - } - - } - } - } - } - - private void buildCompositeProperty(Element docEle) { - - NodeList nl = docEle.getElementsByTagName("property"); - //System.out.println("^^^^^^^^^ "+nl.getLength()); - if (nl != null && nl.getLength() > 0) { - - for (int i = 0; i < nl.getLength(); i++) { - - Element elt = (Element)nl.item(i); - - if (elt.getParentNode().getNodeName().equals("composite")) { - String compositeProp = elt.getAttribute("name"); - composite.addAProperty(compositeProp); - } - } - } - } - - private void addInclusions(Element docEle) { - - NodeList nl = docEle.getElementsByTagName("include"); - //System.out.println("^^^^^^^^^ "+nl.getLength()); - if (nl != null && nl.getLength() > 0) { - - for (int i = 0; i < nl.getLength(); i++) { - - Element elt = (Element)nl.item(i); - - if (elt.getParentNode().getNodeName().equals("composite")) { - String compToBeIncluded = elt.getAttribute("name"); - composite.addToIncludedComposites(compToBeIncluded); - } - } - } - } - - private int[][] buildConnectionMatrix(ComponentEntity[] comps) { - - int[][] connections = new int[comps.length][comps.length]; - connections = initConnections(connections); - - // //sec. 5.4 in the spec - // NodeList nl = docEle.getElementsByTagName("wire"); - // //System.out.println("^^^^^^^^^ "+nl.getLength()); - // if(nl != null && nl.getLength() > 0 ) { - // - // for(int i = 0 ; i < nl.getLength();i++) { - // - // Element elt = (Element)nl.item(i); - // - // String source = elt.getAttribute("source"); - // String target = elt.getAttribute("target"); - // - // String service, serviceComp, reference, referenceComp; - // - // String[] arr1 = extractComp(target); - // serviceComp = arr1[0]; - // service = arr1[1]; - // - // String[] arr2 = extractComp(source); - // referenceComp = arr2[0]; - // reference = arr2[1]; - - // //System.out.println("^^^^^^^^^ "+source+" ::: "+target); - // if(target.contains("/")){ - // String[] arr = target.split("/"); - // serviceComp = arr[0]; - // service = arr[1]; - // } - // else{ - // serviceComp = target; - // service = null; - // } - // - // if(source.contains("/")){ - // String[] arr = source.split("/"); - // referenceComp = arr[0]; - // reference = arr[1]; - // } - // else{ - // referenceComp = source; - // reference = null; - // } - // //sec. 5.4 in the spec - // NodeList nl = docEle.getElementsByTagName("wire"); - // //System.out.println("^^^^^^^^^ "+nl.getLength()); - // if(nl != null && nl.getLength() > 0 ) { - // - // for(int i = 0 ; i < nl.getLength();i++) { - // - // Element elt = (Element)nl.item(i); - // - // String source = elt.getAttribute("source"); - // String target = elt.getAttribute("target"); - // - // String service, serviceComp, reference, referenceComp; - // - // String[] arr1 = extractComp(target); - // serviceComp = arr1[0]; - // service = arr1[1]; - // - // String[] arr2 = extractComp(source); - // referenceComp = arr2[0]; - // reference = arr2[1]; - - for (Entity ent : comps) { - for (String name : ent.getAdjacentEntities()) { - ComponentEntity e2 = findEntity(comps, name); - if (ent != null && e2 != null) { - //System.out.println("^^^^^^^^^ "+e2.getName()); - connections[ent.getId()][e2.getId()] = 1; - } - } - - } - // ComponentEntity e1 = findEntity(comps, referenceComp); - // ComponentEntity e2 = findEntity(comps, serviceComp); - // - // System.out.println("^^^^^^^^^ "+e1.getName()); - // if(e1 != null && e2 != null){ - // System.out.println("^^^^^^^^^ "+e1.getId()); - // connections[e1.getId()][e2.getId()] = 1; - // createConnection(e1, reference, serviceComp, service); - // } - // } - // } - // - return connections; - } - - private String[] extractComp(String str) { - - String[] arr = new String[2]; - - if (str.contains("/")) { - arr = str.split("/"); - } else { - arr[0] = str; - arr[1] = null; - } - return arr; - } - - private int[][] initConnections(int[][] connections) { - - for (int i = 0; i < connections.length; i++) { - for (int j = 0; j < connections.length; j++) { - connections[i][j] = 0; - } - } - return connections; - } - - public ComponentEntity[] buildComponentEntities(Element docEle) { - - ComponentEntity[] elts = null; - - // //get the root element - // Element docEle = dom.getDocumentElement(); - // compositeName = docEle.getAttribute("name"); - // System.out.println("compositeName "+compositeName); - - //get a nodelist of elements - NodeList nl = docEle.getElementsByTagName("component"); - if (nl != null && nl.getLength() > 0) { - elts = new ComponentEntity[nl.getLength()]; - - for (int i = 0; i < nl.getLength(); i++) { - elts[i] = new ComponentEntity(); - Element nVal = (Element)nl.item(i); - //System.out.println(nVal.hasAttribute("name")); - elts[i].setId(i); - elts[i].setName(nVal.getAttribute("name")); - - setServices(nVal, elts[i]); - setReferences(nVal, elts[i]); - setProperties(nVal, elts[i]); - - elts[i].referenceHeight(); - elts[i].serviceHeight(); - elts[i].propertyLength(); - } - } - - buildWires(docEle, elts); - // //sec. 5.4 in the spec - // nl = docEle.getElementsByTagName("wire"); - // System.out.println("^^^^^^^^^ "+nl.getLength()); - // if(nl != null && nl.getLength() > 0 ) { - // for(int i = 0 ; i < nl.getLength();i++) { - // Element elt = (Element)nl.item(i); - // String source = elt.getAttribute("source"); - // String target = elt.getAttribute("target"); - // String service, serviceComp, reference, referenceComp; - // - // System.out.println("^^^^^^^^^ "+source+" ::: "+target); - // if(target.contains("/")){ - // String[] arr = target.split("/"); - // serviceComp = arr[0]; - // service = arr[1]; - // } - // else{ - // serviceComp = target; - // service = null; - // } - // - // if(source.contains("/")){ - // String[] arr = source.split("/"); - // referenceComp = arr[0]; - // reference = arr[1]; - // } - // else{ - // referenceComp = source; - // reference = null; - // } - // - // ComponentEntity e = findEntity(referenceComp); - // System.out.println("^^^^^^^^^ "+e.getName()); - // if(e != null){ - // createConnection(e, reference, serviceComp, service); - // } - // } - // } - // - // positionEntities(elts); - // - // calculateProperties(elts); - // print(elts); - - return elts; - - } - - private void buildWires(Element docEle, ComponentEntity[] elts) { - - //sec. 5.4 in the spec - NodeList nl = docEle.getElementsByTagName("wire"); - //System.out.println("^^^^^^^^^ "+nl.getLength()); - if (nl != null && nl.getLength() > 0) { - - for (int i = 0; i < nl.getLength(); i++) { - - Element elt = (Element)nl.item(i); - - String source = elt.getAttribute("source"); - String target = elt.getAttribute("target"); - - String service, serviceComp, reference, referenceComp; - - String[] arr1 = extractComp(target); - serviceComp = arr1[0]; - service = arr1[1]; - - String[] arr2 = extractComp(source); - referenceComp = arr2[0]; - reference = arr2[1]; - - // //System.out.println("^^^^^^^^^ "+source+" ::: "+target); - // if(target.contains("/")){ - // String[] arr = target.split("/"); - // serviceComp = arr[0]; - // service = arr[1]; - // } - // else{ - // serviceComp = target; - // service = null; - // } - // - // if(source.contains("/")){ - // String[] arr = source.split("/"); - // referenceComp = arr[0]; - // reference = arr[1]; - // } - // else{ - // referenceComp = source; - // reference = null; - // } - // - ComponentEntity e1 = findEntity(elts, referenceComp); - //ComponentEntity e2 = findEntity(comps, serviceComp); - - //System.out.println("^^^^^^^^^ "+e1.getName()); - if (e1 != null) { - //System.out.println("^^^^^^^^^ "+e1.getId()); - //connections[e1.getId()][e2.getId()] = 1; - createConnection(e1, reference, serviceComp, service); - } - } - } - - } - - private ComponentEntity findEntity(ComponentEntity[] elts, String componentName) { - - for (ComponentEntity e : elts) { - if (e.getName().equals(componentName)) { - return e; - } - } - return null; - } - - private void setReferences(Element nVal, ComponentEntity ent) { - - NodeList nl = nVal.getElementsByTagName("reference"); - if (nl != null && nl.getLength() > 0) { - for (int i = 0; i < nl.getLength(); i++) { - Element elt = (Element)nl.item(i); - String target = elt.getAttribute("target"); - String ref = elt.getAttribute("name"); - if (target.contains("/")) { - String[] arr = target.split("/"); - createConnection(ent, ref, arr[0], arr[1]); - // ent.addToRefToSerMap(ref, arr[1]); - // ent.addAnAdjacentEntity(arr[0]); - // addToConnectedEntities(ent.getComponentName(), arr[0]); - // addToConnectedEntities(arr[0], ent.getComponentName()); - } else if (!target.equals("")) { - createConnection(ent, ref, target, null); - // ent.addToRefToSerMap(ref, target); - // ent.addAnAdjacentEntity(target); - // addToConnectedEntities(ent.getComponentName(), target); - // addToConnectedEntities(target, ent.getComponentName()); - } - - ent.addAReference(ref); - - } - } - } - - private void createConnection(ComponentEntity ent, String reference, String serviceComp, String service) { - - String referenceComp = ent.getName(); - - if (reference != null && service != null) { - - ent.addToRefToSerMap(reference, service); - ent.addAnAdjacentEntity(serviceComp); - addToConnectedEntities(referenceComp, serviceComp); - addToConnectedEntities(serviceComp, referenceComp); - } else if (reference == null && service != null) { - ent.addToRefToSerMap(referenceComp, service); - ent.addAnAdjacentEntity(serviceComp); - addToConnectedEntities(referenceComp, serviceComp); - addToConnectedEntities(serviceComp, referenceComp); - } else if (reference != null && service == null) { - ent.addToRefToSerMap(reference, serviceComp); - ent.addAnAdjacentEntity(serviceComp); - addToConnectedEntities(referenceComp, serviceComp); - addToConnectedEntities(serviceComp, referenceComp); - } else { - ent.addToRefToSerMap(referenceComp, serviceComp); - ent.addAnAdjacentEntity(serviceComp); - addToConnectedEntities(referenceComp, serviceComp); - addToConnectedEntities(serviceComp, referenceComp); - } - } - - // private void calculateProperties(ComponentEntity[] elts) { - // int level=0, lane=0; - // - // for(ComponentEntity ent: elts){ - // level = max(level, ent.getLevel()); - // lane = max(lane, ent.getLane()); - // - // } - // totalHeight += spaceY*(level+1) + initPoint; - // totalWidth += spaceX*(lane+1) + initPoint; - // - // System.err.println(totalHeight + " :: "+totalWidth); - // } - - // private int max(int a, int b){ - // if(a>=b) - // return a; - // return b; - // } - - @SuppressWarnings("unused") - private void print(ComponentEntity[] elts) { - - for (ComponentEntity ent : elts) { - System.out.println(ent.getName() + " : " - + ent.getLevel() - + " : " - + ent.getLane() - + " : " - + ent.getX() - + " : " - + ent.getY()); - } - } - - // private void positionEntities(ComponentEntity[] ents){ - // - // for(ComponentEntity ent: ents){ - // if(ent.getAdjacentEntities().size() != 0 || ents.length==1){ - // setPosition(ent, initPoint, initPoint, 0, 0); - // levelCount.add(0, 1); - // startEnt = ent; - // System.err.println(ent.getName()); - // break; - // } - // } - // - // - // if(startEnt != null) - // assignPositions(ents, startEnt); - // - // } - // - // private void assignPositions(ComponentEntity[] ents, ComponentEntity ent){ - // int i=0; - // if(ent.getAdjacentEntities().size()>0){ - // - // System.out.println(ent.getName()); - // for(String name: ent.getAdjacentEntities()){ - // //System.out.println("eee "+name); - // for(ComponentEntity aEnt: ents){ - // i++; - // if(name.equalsIgnoreCase(aEnt.getName())){ - // int lane = ent.getLane()+1; - // if(levelCount.size()<= lane){ - // levelCount.add(lane, 1); - // setPosition(aEnt, ent.getX()+spaceX, ent.getY(), 0, lane); - // } - // else{ - // int level = levelCount.get(lane); - // levelCount.add(lane, level+1); - // setPosition(aEnt, ent.getX()+spaceX, ent.getY()+spaceY*level, level, lane); - // } - // if(i conns = connectedEntities.get(ent.getName()); - // System.err.println(conns.size()); - // if(conns.size()>0){ - // - // for(String conn: conns){ - // System.err.println("conn "+conn +" : "+ent.getName()); - // for(ComponentEntity e: ents){ - // if(e.getLane() == -1 && e.getName().equals(conn)){ - // - // int lane = ent.getLane()-1; - // System.err.println(lane); - // int level = levelCount.get(lane); - // levelCount.add(lane, level+1); - // setPosition(e, ent.getX()-spaceX, ent.getY()+spaceY*level, level, lane); - // - // break; - // } - // } - // } - // } - // } - // } - // - // private void setPosition(ComponentEntity ent, int x, int y, int level, int lane){ - // ent.setX(x); - // ent.setY(y); - // ent.setLevel(level); - // ent.setLane(lane); - // } - // - // - // private String[] splitValues(String str){ - // return str.split("/"); - // } - - private void addToConnectedEntities(String ent1, String ent2) { - //System.err.println(ent1+" : "+ent2); - ArrayList list; - if (connectedEntities.containsKey(ent1)) { - list = connectedEntities.get(ent1); - - } else { - list = new ArrayList(); - - } - list.add(ent2); - connectedEntities.put(ent1, list); - } - - private void setServices(Element nVal, ComponentEntity ent) { - - NodeList nl = nVal.getElementsByTagName("service"); - if (nl != null && nl.getLength() > 0) { - for (int i = 0; i < nl.getLength(); i++) { - Element elt = (Element)nl.item(i); - ent.addAService(elt.getAttribute("name")); - } - } else { - - NodeList nl1 = nVal.getElementsByTagName("implementation.java"); - if (nl1 != null && nl1.getLength() > 0) { - for (int i = 0; i < nl1.getLength(); i++) { - Element elt = (Element)nl1.item(i); - //System.out.println(elt.getAttribute("class")); - String serName = extractServiceName(elt.getAttribute("class")); - ent.addAService(serName); - } - } - - } - - } - - /** - * - * This will extract the service name part from the class attribute of - * implementation.java element. - * eg: if class = "NirmalServiceImpl", returning service name would be "NirmalService" - */ - private String extractServiceName(String classAttr) { - if (classAttr != null) { - String[] x = classAttr.split("\\."); - String name = x[x.length - 1]; - if (name.endsWith("Impl")) { - return name.substring(0, name.length() - 4); - } else { - return name; - } - } - return ""; - } - - private void setProperties(Element nVal, ComponentEntity ent) { - - NodeList nl = nVal.getElementsByTagName("property"); - if (nl != null && nl.getLength() > 0) { - for (int i = 0; i < nl.getLength(); i++) { - Element elt = (Element)nl.item(i); - ent.addAProperty(elt.getAttribute("name")); - } - } - } - - // public void setCompositeName(String compositeName) { - // this.compositeName = compositeName; - // } - // - // public String getCompositeName() { - // return compositeName; - // } - - public int getTotalWidth() { - return totalWidth; - } - - public int getTotalHeight() { - return totalHeight; - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/LayoutBuilder.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/LayoutBuilder.java deleted file mode 100755 index 6143cede48..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/LayoutBuilder.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * 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.impl.layout; - -public class LayoutBuilder { - - private Entity[] elts = null; - private int[][] conns = null; - private Entity startEnt = null; - private int currentMaxLevel = 0; - - /** - * Constructor which takes set of entities and their connection matrix - */ - public LayoutBuilder(Entity[] entities, int[][] connections) { - elts = entities; - conns = connections; - } - - /** - * Layout Building Algorithm - * ~~~~~~~~~~~~~~~~~~~~~~~~~ - * - * Here we position (i.e. assigning a level and a lane) all Entities - * in a unique cell of a grid. - * - * lane0 lane1 lane2 lane3 .... - * _______________________________ - * level0 | | | | | - * |_______|_______|_______|_______| - * level1 | | | | | - * |_______|_______|_______|_______| - * level2 | | | | | - * - * 1) Determining the Entity at level0, lane0 (starting entity) - * -First Entity in the list of Entities which has one or more adjacent Entities - * -If there is only one Entity it will eventually chosen - * - * 2) Get connected Entities of starting Entity. - * * If there are connected entities; - * *For each connected Entity; - * *We assign a corresponding level and a lane - * *Then recurse the procedure for connections of the assigned Entity - * - * - */ - public Entity[] placeEntities() { - - /** - * Finding the starting entity - */ - for (int i = 0; i < elts.length; i++) { - //System.out.println("ELts "+elts.length); - Entity ent = elts[i]; - if (isConnected(ent.getId())) { - setPosition(ent, 0, 0); - startEnt = ent; - //System.out.println("startEnt "+ent.getId()); - break; - } - - } - - if (startEnt != null) { - assignPositions(startEnt); - } - - assignPositionsOfOtherConncetedEntities();//such as a different cluster of components - assignPositionsOfIdleEntities(); - assignCoordinates(); - - return elts; - - } - - private void assignPositionsOfIdleEntities() { - - for (Entity ent : elts) { - if (!ent.isPossitionSet()) { - - setPosition(ent, currentMaxLevel++, 0); - } - } - } - - private void assignPositionsOfOtherConncetedEntities() { - - for (Entity ent : elts) { - if (!ent.isPossitionSet() && isConnected(ent.getId())) { - assignPositions(ent); - } - } - } - - private void assignCoordinates() { - - for (Entity ent : elts) { - ent.setX(ent.getParent().getX() + ent.getStartPosition()); - ent.setY(ent.getParent().getY() + ent.getStartPosition() / 2); - } - } - - private void assignPositions(Entity ent) { - int id = ent.getId(); - int[] entConns = conns[id]; - - for (int i = 0; i < entConns.length; i++) { - if (entConns[i] == 1) { - Entity nextEnt = findEntity(i); - - // if(nextEnt.isPossitionSet()){ - // currentMaxLevel = nextEnt.getLevel()+1; // for diagram clearness purpose - // } - if (nextEnt != null && !nextEnt.isPossitionSet()) { - setPosition(nextEnt, currentMaxLevel, ent.getLane() + 1); - assignPositions(nextEnt); - } - } - - } - currentMaxLevel = ent.getLevel() + 1; - } - - private Entity findEntity(int i) { - - for (Entity ent : elts) { - if (ent.getId() == i) { - return ent; - } - } - return null; - } - - /** - * If there's at least 1 connection, this will return true - */ - private boolean isConnected(int id) { - int[] entConns = conns[id]; - - //System.out.println("entConns "+entConns.length); - for (int i = 0; i < entConns.length; i++) { - - if (entConns[i] == 1) { - return true; - } - - } - - return false; - } - - private void setPosition(Entity ent, int level, int lane) { - ent.setLevel(level); - ent.setLane(lane); - ent.setPossitionSet(true); - } - - public Entity getStartEnt() { - return startEnt; - } - - public void setStartEnt(Entity startEnt) { - this.startEnt = startEnt; - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/TuscanyCompositeEntityBuilder.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/TuscanyCompositeEntityBuilder.java deleted file mode 100755 index 33f3d63a12..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/TuscanyCompositeEntityBuilder.java +++ /dev/null @@ -1,359 +0,0 @@ -/* - * 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.impl.layout; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.apache.tuscany.sca.assembly.Component; -import org.apache.tuscany.sca.assembly.ComponentProperty; -import org.apache.tuscany.sca.assembly.ComponentReference; -import org.apache.tuscany.sca.assembly.ComponentService; -import org.apache.tuscany.sca.assembly.Composite; -import org.apache.tuscany.sca.assembly.CompositeReference; -import org.apache.tuscany.sca.assembly.CompositeService; -import org.apache.tuscany.sca.assembly.Property; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.assembly.Service; -import org.apache.tuscany.sca.assembly.Wire; - -public class TuscanyCompositeEntityBuilder { - - private Composite tuscanyComp; - //components connected to each other are tracked using following map - private HashMap> connectedEntities = new HashMap>(); - private int totalWidth = 0; - private int totalHeight = 0; - - CompositeEntity composite = null; - - /** - * Constructor which initiates the DOM document - * @param aDom DOM document - */ - public TuscanyCompositeEntityBuilder(Composite comp) { - tuscanyComp = comp; - } - - public CompositeEntity buildCompositeEntity() { - - String compositeName; - compositeName = tuscanyComp.getName().getLocalPart(); - System.out.println("compositeName " + compositeName); - - ComponentEntity[] comps = buildComponentEntities(); - - buildWires(tuscanyComp.getWires(), comps); - - composite = new CompositeEntity(compositeName); - - setParent(comps); - - System.out.println("ComponentEntity " + comps[0].getId()); - int[][] conns = buildConnectionMatrix(comps); - System.out.println("ComponentEntity " + conns[0][0]); - - composite.setComponentList(comps); - composite.setConnections(conns); - - LayoutBuilder buildLayout = new LayoutBuilder(comps, conns); - buildLayout.placeEntities(); - - System.out.println("conns " + conns[0][0]); - - buildCompositeService(); - buildCompositeReference(); - buildCompositeProperty(); - - addInclusions(); - - composite.setAttributes(); - - return composite; - } - - private void setParent(ComponentEntity[] comps) { - - for (ComponentEntity comp : comps) { - comp.setParent(composite); - } - } - - private void buildCompositeService() { - - List sers = tuscanyComp.getServices(); - - for (int i = 0; i < sers.size(); i++) { - Service compositeSer = sers.get(i); - composite.addAService(compositeSer.getName()); - String service = ((CompositeService)compositeSer).getPromotedService().getName(); - - composite.addToPromoteAService(compositeSer.getName(), service); - } - - } - - private void buildCompositeReference() { - - List refs = tuscanyComp.getReferences(); - - for (int i = 0; i < refs.size(); i++) { - Reference compositeRef = refs.get(i); - composite.addAReference(compositeRef.getName()); - - List promotedRefs = ((CompositeReference)compositeRef).getPromotedReferences(); - - for (ComponentReference ref : promotedRefs) { - String reference = ref.getName(); - - composite.addToPromoteAReference(compositeRef.getName(), reference); - } - - } - - } - - private void buildCompositeProperty() { - - List props = tuscanyComp.getProperties(); - - for (int i = 0; i < props.size(); i++) { - Property compositeProp = props.get(i); - composite.addAProperty(compositeProp.getName()); - } - - } - - private void addInclusions() { - - List includes = tuscanyComp.getIncludes(); - - for (int i = 0; i < includes.size(); i++) { - Composite anInclude = includes.get(i); - composite.addToIncludedComposites(anInclude.getName().getLocalPart()); - } - - } - - private int[][] buildConnectionMatrix(ComponentEntity[] comps) { - - int[][] connections = new int[comps.length][comps.length]; - connections = initConnections(connections); - - for (Entity ent : comps) { - for (String name : ent.getAdjacentEntities()) { - ComponentEntity e2 = findEntity(comps, name); - if (ent != null && e2 != null) { - //System.out.println("^^^^^^^^^ "+e2.getName()); - connections[ent.getId()][e2.getId()] = 1; - } - } - - } - - return connections; - } - - private String extractComp(ComponentEntity[] elts, String str, boolean isReference) { - - if (isReference) { - for (ComponentEntity elt : elts) { - for (String ref : elt.getReferences()) { - if (ref.equals(str)) { - return elt.getName(); - } - } - } - } else { - for (ComponentEntity elt : elts) { - for (String ser : elt.getServices()) { - if (ser.equals(str)) { - return elt.getName(); - } - } - } - } - return ""; - - } - - private int[][] initConnections(int[][] connections) { - - for (int i = 0; i < connections.length; i++) { - for (int j = 0; j < connections.length; j++) { - connections[i][j] = 0; - } - } - return connections; - } - - public ComponentEntity[] buildComponentEntities() { - - ComponentEntity[] elts = null; - - List components = tuscanyComp.getComponents(); - - elts = new ComponentEntity[components.size()]; - - for (int i = 0; i < components.size(); i++) { - Component aComp = components.get(i); - - elts[i] = new ComponentEntity(); - elts[i].setId(i); - elts[i].setName(aComp.getName()); - - setServices(aComp.getServices(), elts[i]); - setReferences(aComp.getReferences(), elts[i]); - setProperties(aComp.getProperties(), elts[i]); - - elts[i].referenceHeight(); - elts[i].serviceHeight(); - elts[i].propertyLength(); - } - - return elts; - - } - - private void buildWires(List wires, ComponentEntity[] elts) { - - for (int i = 0; i < wires.size(); i++) { - String service, serviceComp, reference, referenceComp; - Wire aWire = wires.get(i); - - reference = aWire.getSource().getName(); - service = aWire.getTarget().getName(); - - referenceComp = extractComp(elts, reference, true); - serviceComp = extractComp(elts, service, false); - - ComponentEntity e1 = findEntity(elts, referenceComp); - - //System.out.println("^^^^^^^^^ "+e1.getName()); - if (e1 != null) { - //System.out.println("^^^^^^^^^ "+e1.getId()); - //connections[e1.getId()][e2.getId()] = 1; - createConnection(e1, reference, serviceComp, service); - } - } - - } - - private ComponentEntity findEntity(ComponentEntity[] elts, String componentName) { - - for (ComponentEntity e : elts) { - if (e.getName().equals(componentName)) { - return e; - } - } - return null; - } - - private void setReferences(List refs, ComponentEntity ent) { - - for (int i = 0; i < refs.size(); i++) { - ent.addAReference(refs.get(i).getName()); - } - - } - - private void createConnection(ComponentEntity ent, String reference, String serviceComp, String service) { - - String referenceComp = ent.getName(); - - if (reference != null && service != null) { - - ent.addToRefToSerMap(reference, service); - ent.addAnAdjacentEntity(serviceComp); - addToConnectedEntities(referenceComp, serviceComp); - addToConnectedEntities(serviceComp, referenceComp); - } else if (reference == null && service != null) { - ent.addToRefToSerMap(referenceComp, service); - ent.addAnAdjacentEntity(serviceComp); - addToConnectedEntities(referenceComp, serviceComp); - addToConnectedEntities(serviceComp, referenceComp); - } else if (reference != null && service == null) { - ent.addToRefToSerMap(reference, serviceComp); - ent.addAnAdjacentEntity(serviceComp); - addToConnectedEntities(referenceComp, serviceComp); - addToConnectedEntities(serviceComp, referenceComp); - } else { - ent.addToRefToSerMap(referenceComp, serviceComp); - ent.addAnAdjacentEntity(serviceComp); - addToConnectedEntities(referenceComp, serviceComp); - addToConnectedEntities(serviceComp, referenceComp); - } - } - - @SuppressWarnings("unused") - private void print(ComponentEntity[] elts) { - - for (ComponentEntity ent : elts) { - System.out.println(ent.getName() + " : " - + ent.getLevel() - + " : " - + ent.getLane() - + " : " - + ent.getX() - + " : " - + ent.getY()); - } - } - - private void addToConnectedEntities(String ent1, String ent2) { - System.err.println(ent1 + " : " + ent2); - ArrayList list; - if (connectedEntities.containsKey(ent1)) { - list = connectedEntities.get(ent1); - - } else { - list = new ArrayList(); - - } - list.add(ent2); - connectedEntities.put(ent1, list); - } - - private void setServices(List sers, ComponentEntity ent) { - - for (int i = 0; i < sers.size(); i++) { - ent.addAService(sers.get(i).getName()); - } - - } - - private void setProperties(List props, ComponentEntity ent) { - - for (int i = 0; i < props.size(); i++) { - ent.addAProperty(props.get(i).getName()); - } - - } - - public int getTotalWidth() { - return totalWidth; - } - - public int getTotalHeight() { - return totalHeight; - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/main/Main.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/main/Main.java deleted file mode 100755 index 64b9ccdb92..0000000000 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/main/Main.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * 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.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.impl.diagram.DiagramGenerator; -import org.apache.tuscany.sca.impl.html.HTMLWrapper; -import org.apache.tuscany.sca.impl.io.XMLReader; -import org.apache.tuscany.sca.impl.io.XMLWriter; -import org.apache.tuscany.sca.impl.layout.CompositeEntity; -import org.apache.tuscany.sca.impl.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; - } - -} diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/test/java/org/apache/tuscany/sca/diagram/layout/LayoutBuilderTestCase.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/test/java/org/apache/tuscany/sca/diagram/layout/LayoutBuilderTestCase.java new file mode 100755 index 0000000000..992a47c1dd --- /dev/null +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/test/java/org/apache/tuscany/sca/diagram/layout/LayoutBuilderTestCase.java @@ -0,0 +1,141 @@ +package org.apache.tuscany.sca.diagram.layout; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.diagram.layout.ComponentEntity; +import org.apache.tuscany.sca.diagram.layout.CompositeEntity; +import org.apache.tuscany.sca.diagram.layout.Entity; +import org.apache.tuscany.sca.diagram.layout.LayoutBuilder; +import org.junit.Before; +import org.junit.Test; + +public class LayoutBuilderTestCase { + + LayoutBuilder lb; + Entity[] ents; + Entity parent; + int[][] conns; + + @Before + public void setUp() throws Exception { + parent = new CompositeEntity("composite"); + parent.setX(200); + parent.setY(100); + + ents = new Entity[5]; + for (int i = 0; i < ents.length; i++) { + ents[i] = new ComponentEntity(); + ents[i].setId(i); + ents[i].setParent(parent); + } + + } + + @Test + public void testPlaceEntities() throws Exception { + //setUp(); + Assert.assertEquals(5, ents.length); + Assert.assertEquals(200, ents[0].getStartPosition()); + + conns = new int[5][5]; + for (int i = 0; i < conns.length; i++) { + for (int j = 0; j < conns.length; j++) { + //int x = Math.getExponent(Math.random()); + if (i == j - 1) + conns[i][j] = 1; + else + conns[i][j] = 0; + } + } + + lb = new LayoutBuilder(ents, conns); + + ents = lb.placeEntities(); + + Assert.assertEquals(5, ents.length); + Assert.assertEquals(0, lb.getStartEnt().getId()); + + Assert.assertEquals(0, ents[0].getLevel()); + Assert.assertEquals(0, ents[1].getLevel()); + Assert.assertEquals(0, ents[2].getLevel()); + Assert.assertEquals(0, ents[3].getLevel()); + Assert.assertEquals(0, ents[4].getLevel()); + + Assert.assertEquals(0, ents[0].getLane()); + Assert.assertEquals(1, ents[1].getLane()); + Assert.assertEquals(2, ents[2].getLane()); + Assert.assertEquals(3, ents[3].getLane()); + Assert.assertEquals(4, ents[4].getLane()); + + } + + @Test + public void testPlaceEntities1() throws Exception { + + conns = new int[5][5]; + for (int i = 0; i < conns.length; i++) { + for (int j = 0; j < conns.length; j++) { + //int x = Math.getExponent(Math.random()); + if (i == j - 1 || i == j - 4) + conns[i][j] = 1; + else + conns[i][j] = 0; + } + } + conns[3][4] = 0; + + lb = new LayoutBuilder(ents, conns); + + ents = lb.placeEntities(); + + Assert.assertEquals(5, ents.length); + Assert.assertEquals(0, lb.getStartEnt().getId()); + + Assert.assertEquals(0, ents[0].getLevel()); + Assert.assertEquals(0, ents[1].getLevel()); + Assert.assertEquals(0, ents[2].getLevel()); + Assert.assertEquals(0, ents[3].getLevel()); + Assert.assertEquals(1, ents[4].getLevel()); + + Assert.assertEquals(0, ents[0].getLane()); + Assert.assertEquals(1, ents[1].getLane()); + Assert.assertEquals(2, ents[2].getLane()); + Assert.assertEquals(3, ents[3].getLane()); + Assert.assertEquals(1, ents[4].getLane()); + + } + + @Test + public void testPlaceEntities2() throws Exception { + + conns = new int[5][5]; + for (int i = 0; i < conns.length; i++) { + for (int j = 0; j < conns.length; j++) { + if (i * j > 2 && i * j <= 6) + conns[i][j] = 1; + else + conns[i][j] = 0; + } + } + + lb = new LayoutBuilder(ents, conns); + + ents = lb.placeEntities(); + + Assert.assertEquals(5, ents.length); + Assert.assertEquals(1, lb.getStartEnt().getId()); + + Assert.assertEquals(1, ents[0].getLevel()); + Assert.assertEquals(0, ents[1].getLevel()); + Assert.assertEquals(0, ents[2].getLevel()); + Assert.assertEquals(0, ents[3].getLevel()); + Assert.assertEquals(1, ents[4].getLevel()); + + Assert.assertEquals(0, ents[0].getLane()); + Assert.assertEquals(0, ents[1].getLane()); + Assert.assertEquals(2, ents[2].getLane()); + Assert.assertEquals(1, ents[3].getLane()); + Assert.assertEquals(1, ents[4].getLane()); + + } +} -- cgit v1.2.3