summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Artifact.java176
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ComponentArtifact.java70
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/CompositeArtifact.java58
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Constant.java42
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/DashedWire.java111
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Layer.java63
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Link.java20
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/NormalWire.java38
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/PropertyArtifact.java66
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ReferenceArtifact.java98
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/ServiceArtifact.java118
-rw-r--r--collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Text.java23
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/WireArtifact.java94
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/diagram/DiagramGenerator.java1052
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/html/HTMLWrapper.java121
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/io/XMLReader.java22
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/io/XMLWriter.java31
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/ComponentEntity.java420
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/CompositeEntity.java707
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/Entity.java467
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java1414
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/LayoutBuilder.java316
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/TuscanyCompositeEntityBuilder.java654
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/main/Main.java243
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/test/java/org/apache/tuscany/sca/layout/LayoutBuilderTest.java257
25 files changed, 3341 insertions, 3340 deletions
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
index a2093dbf10..691d9da8d6 100644
--- 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
@@ -24,87 +24,97 @@ 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;
- }
-
+ 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
index ae81ad8cda..e2373cf1f5 100755
--- 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
@@ -22,40 +22,38 @@ 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);
-
- }
-
+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
index af2a525577..0496f7c6cc 100755
--- 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
@@ -26,34 +26,32 @@ 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;
-// }
-
+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
index a08fedfd49..a2b2a93647 100755
--- 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
@@ -1,26 +1,26 @@
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 ;
+
+ 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
index 70c8882c2b..0169cf9936 100755
--- 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
@@ -22,63 +22,60 @@ 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;
- }
-
-
- /**
- * <script type="text/ecmascript"><![CDATA[
- <SCRIPT LANGUAGE="JavaScript">
-
-var test = document.open("store_diagram.svg");
-
-</SCRIPT>
- ]]></script>
-
-<!--rect x="0" y="0" alignment-baseline="central" fill="#E5E5D0" width="1400" rx="20" ry="20" height="560" stroke="#919191"/><rect x="200" y="100" alignment-baseline="central" fill="#E5E5E5" width="1000" rx="20" ry="20" height="360" stroke="#919191"/><text x="700" font-size="20" dominant-baseline="mathematical" y="120" text-anchor="middle">
-
-<a xlink:href="store_diagram.svg" xlink:show="new">MyValueComposite2</a></text-->
-
- */
+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;
+ }
+
+ /**
+ * <script type="text/ecmascript"><![CDATA[
+ <SCRIPT LANGUAGE="JavaScript">
+
+ var test = document.open("store_diagram.svg");
+
+ </SCRIPT>
+ ]]></script>
+
+ <!--rect x="0" y="0" alignment-baseline="central" fill="#E5E5D0" width="1400" rx="20" ry="20" height="560" stroke="#919191"/><rect x="200" y="100" alignment-baseline="central" fill="#E5E5E5" width="1000" rx="20" ry="20" height="360" stroke="#919191"/><text x="700" font-size="20" dominant-baseline="mathematical" y="120" text-anchor="middle">
+
+ <a xlink:href="store_diagram.svg" xlink:show="new">MyValueComposite2</a></text-->
+
+ */
}
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
index 0a1ca90c1d..c3a41140f8 100755
--- 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
@@ -26,38 +26,35 @@ 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;
- }
+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
index e03edfd0e2..533c718595 100755
--- 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
@@ -28,14 +28,14 @@ import org.w3c.dom.Element;
*/
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;
- }
-
+ 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
index 517bea1980..69d7bb4a60 100755
--- 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
@@ -22,26 +22,24 @@ 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;
- }
+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
index f1151f8b57..d9bad6e017 100755
--- 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
@@ -22,41 +22,37 @@ 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);
- }
+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
index 5001f4908e..27a5a426ee 100755
--- 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
@@ -23,48 +23,64 @@ 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) {
-
+ /**
+ * 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);
- }
+ 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
index 98ad6ee740..f92b5cab08 100755
--- 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
@@ -22,58 +22,74 @@ package org.apache.tuscany.sca.impl.artifacts;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-public class ServiceArtifact extends Artifact{
+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) {
- /**
- * 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);
- }
+ 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
index 40edf226c0..976ccb547f 100644
--- 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
@@ -24,16 +24,15 @@ 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;
- }
+ 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
index ef179b9a70..4703abb80d 100755
--- 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
@@ -23,42 +23,64 @@ 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;
- }
+ 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
index f2c0ca08eb..822e427026 100755
--- 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
@@ -45,556 +45,558 @@ import org.w3c.dom.Element;
public class DiagramGenerator {
- private CompositeEntity comp;
- private Document doc;
- private String svgNS ;
- private Element svgRoot;
- private ArrayList<ReferenceArtifact> refs= new ArrayList<ReferenceArtifact>();
- private ArrayList<ServiceArtifact> sers= new ArrayList<ServiceArtifact>();
- 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<String> componentRef = (ArrayList<String>)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<String> refs = e.getReferences();
- ArrayList<String> sers = new ArrayList<String>();
- String[] orderedRefs = new String[refs.size()];
-
- //sers = new ArrayList<String>(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<String> buildReferenceToMappingServiceList(ArrayList<String> refs, ComponentEntity e) {
-
- ArrayList<String> sers = new ArrayList<String>();
-
- 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);
+ private CompositeEntity comp;
+ private Document doc;
+ private String svgNS;
+ private Element svgRoot;
+ private ArrayList<ReferenceArtifact> refs = new ArrayList<ReferenceArtifact>();
+ private ArrayList<ServiceArtifact> sers = new ArrayList<ServiceArtifact>();
+ private int diagramHeight, diagramWidth;
- }
+ private boolean isHtml;
- }
+ private int lastUsedChangingFactor = 0;
- //Algorithm to position in center
- private int getStartingPoint(int compDim, int artifactDim, int gap, int artifactQty) {
+ enum changingFactor {
+ a(20), b(25), c(30), d(35), e(40), f(15);
- int x = (compDim - artifactQty * artifactDim - (artifactQty-1) * gap ) / 2;
- return x;
- }
+ private final int val;
- 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;
+ private changingFactor(int x) {
+ val = x;
+ }
- 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);
+ public int getVal() {
+ return val;
+ }
- svgRoot.appendChild(property);
- svgRoot.appendChild(text);
+ };
- x += (propLen + Constant.SPACING_FOR_COMPOSITE_OF_PROPERTY);
+ enum color {
+ black
+ }//, violet, red, green};
- pro.setName(prop);
- pro.setContainerName(comp.getName());
- }
- }
+ private int previousWireColor = 0;
- private void addComponent(Entity ent) {
+ /**
+ * Constructor to generate a SVG diagram for a given CompositeEntity
+ * Object.
+ */
+ public DiagramGenerator(CompositeEntity comp, boolean isHtml) {
- 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());
+ this.comp = comp;
+ this.isHtml = isHtml;
- svgRoot.appendChild(com);
- svgRoot.appendChild(text);
+ }
- comp.setName(ent.getName());
- }
+ /**
+ * Draws the diagram.
+ */
+ public Document buildSVGDocument() {
- private void addComposite() {
+ DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();
+ svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
+ doc = impl.createDocument(svgNS, "svg", null);
- CompositeArtifact composite = new CompositeArtifact();
+ // Get the root element (the 'svg' element).
+ svgRoot = doc.getDocumentElement();
- 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());
+ setDiagramHeight(comp.getHeight() + 200);
+ setDiagramWidth(comp.getWidth() + 400);
- svgRoot.appendChild(composi);
- svgRoot.appendChild(text);
+ svgRoot.setAttributeNS(null, "viewBox", "0 0 " + getDiagramWidth() + " " + getDiagramHeight());
- composite.setName(comp.getName());
+ addLayer();
+ addComposite();
+ for (ComponentEntity ent : comp.getComponentList()) {
- }
+ addComponent(ent);
+ addComponentProperties(ent);
+ addComponentService(ent);
+ addComponentReference(ent);
+ }
- public void setDiagramHeight(int diagramHeight) {
- this.diagramHeight = diagramHeight;
- }
+ addCompositeProperties();
+ addCompositeService();
+ addCompositeReference();
- public int getDiagramHeight() {
- return diagramHeight;
- }
+ addComponentConnections();
+ addReferencePromotion();
+ addServicePromotion();
- public void setDiagramWidth(int diagramWidth) {
- this.diagramWidth = diagramWidth;
- }
+ addInclusions();
- public int getDiagramWidth() {
- return diagramWidth;
- }
+ 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<String> componentRef = (ArrayList<String>)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<String> refs = e.getReferences();
+ ArrayList<String> sers = new ArrayList<String>();
+ String[] orderedRefs = new String[refs.size()];
+
+ //sers = new ArrayList<String>(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<String> buildReferenceToMappingServiceList(ArrayList<String> refs, ComponentEntity e) {
+
+ ArrayList<String> sers = new ArrayList<String>();
+
+ 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
index e53c9ff90f..8feedd84b1 100755
--- 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
@@ -22,76 +22,69 @@ package org.apache.tuscany.sca.impl.html;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
-import java.io.StringWriter;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
+public class HTMLWrapper {
-import org.w3c.dom.Document;
+ private File htmlFilePath;
+ private String compositeName;
+ private String svg;
+ /**
+ *
+ * @param svg
+ * @param compositeName
+ * @param htmlFilePath
+ */
+ public HTMLWrapper(String svg, String compositeName, File htmlFilePath) {
-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 = "" +
- "<html>\n" +
- "<head>\n" +
- "<h1 align='center'>Apache Tuscany - Composite Diagram Generator</h1>\n" +
- "<h2 align='center'>"+compositeName+"</h2>\n" +
- "</br>\n" +
-// "<script type=\"text/javascript\" src=\""+CANVG_LIB_DIR+RGB_FILE+"\"></script>\n" +
-// "<script type=\"text/javascript\" src=\""+CANVG_LIB_DIR+CANVG_FILE+"\"></script>\n" +
-// "<script type=\"text/javascript\">\n" +
-// "window.onload = function() {\n" +
-// "//load '../path/to/your.svg' in the canvas with id = 'canvas'\n" +
-// "canvg('canvas', '"+svgFileName+"')\n" +
-// "//load a svg snippet in the canvas with id = 'drawingArea'\n" +
-// "canvg(document.getElementById('drawingArea'), '<svg>...</svg>')\n" +
-// "canvg('canvas', '"+svgFileName+"', {})\n" +
-// "}\n" +
-// "</script>\n" +
- "</head>\n" +
- "<body>\n" +
- svg+"\n"+
-// "<canvas id=\"canvas\" width=\""+compositeWidth+"px\" height=\""+compositeHeight+"px\">\n" +
-// "</canvas>\n" +
- "</body>\n" +
- "</html>";
-
- fileWriter(content);
-
- return content;
-
- }
+ this.svg = svg;
+ this.compositeName = compositeName;
+ this.htmlFilePath = htmlFilePath;
+ }
+
+ public String buildHTML() throws Exception {
+ String content =
+ "" + "<html>\n"
+ + "<head>\n"
+ + "<h1 align='center'>Apache Tuscany - Composite Diagram Generator</h1>\n"
+ + "<h2 align='center'>"
+ + compositeName
+ + "</h2>\n"
+ + "</br>\n"
+ +
+ // "<script type=\"text/javascript\" src=\""+CANVG_LIB_DIR+RGB_FILE+"\"></script>\n" +
+ // "<script type=\"text/javascript\" src=\""+CANVG_LIB_DIR+CANVG_FILE+"\"></script>\n" +
+ // "<script type=\"text/javascript\">\n" +
+ // "window.onload = function() {\n" +
+ // "//load '../path/to/your.svg' in the canvas with id = 'canvas'\n" +
+ // "canvg('canvas', '"+svgFileName+"')\n" +
+ // "//load a svg snippet in the canvas with id = 'drawingArea'\n" +
+ // "canvg(document.getElementById('drawingArea'), '<svg>...</svg>')\n" +
+ // "canvg('canvas', '"+svgFileName+"', {})\n" +
+ // "}\n" +
+ // "</script>\n" +
+ "</head>\n"
+ + "<body>\n"
+ + svg
+ + "\n"
+ +
+ // "<canvas id=\"canvas\" width=\""+compositeWidth+"px\" height=\""+compositeHeight+"px\">\n" +
+ // "</canvas>\n" +
+ "</body>\n"
+ + "</html>";
+
+ fileWriter(content);
+
+ return content;
+ }
- private void fileWriter(String content) throws Exception{
+ private void fileWriter(String content) throws Exception {
- FileWriter fileWriter = new FileWriter(htmlFilePath);
- BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
- bufferedWriter.append(content);
- bufferedWriter.close();
+ 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
index 9bd01260de..b297421149 100755
--- 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
@@ -21,22 +21,22 @@ 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;
+ //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();
+ 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);
+ //parse using builder to get DOM representation of the XML file
+ dom = db.parse(file);
- return dom;
- }
+ 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
index 15e9785d3c..8963e09ec1 100755
--- 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
@@ -23,27 +23,20 @@ import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.w3c.dom.Document;
-
public class XMLWriter {
- public void fileWriter(String content, File outFile) throws Exception{
+ public void fileWriter(String content, File outFile) throws Exception {
+
+ FileWriter fileWriter = new FileWriter(outFile);
+ BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
+ bufferedWriter.write(content);
+ bufferedWriter.close();
- 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);
+ // 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
index 9f71f3aa1e..9e12656b8a 100755
--- 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
@@ -19,238 +19,218 @@
package org.apache.tuscany.sca.impl.layout;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
-import org.apache.tuscany.sca.impl.artifacts.ComponentArtifact;
import org.apache.tuscany.sca.impl.artifacts.Constant;
-import org.apache.tuscany.sca.impl.artifacts.PropertyArtifact;
-import org.apache.tuscany.sca.impl.artifacts.ReferenceArtifact;
-import org.apache.tuscany.sca.impl.artifacts.ServiceArtifact;
/**
* 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<String, String> referenceToServiceMap = new HashMap<String, String>();
- //private HashSet<String> connectedEntities = new HashSet<String>();
-
-
- 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()){
+public class ComponentEntity extends Entity {
- 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()){
+ // 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);
- 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()){
+ private HashMap<String, String> referenceToServiceMap = new HashMap<String, String>();
- 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<String, String> getReferenceToServiceMap() {
- return referenceToServiceMap;
- }
-
- public void setReferenceToServiceMap(
- HashMap<String, String> 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<String, String> getReferenceToServiceMap() {
-// return referenceToServiceMap;
-// }
-// public void setReferenceToServiceMap(
-// HashMap<String, String> referenceToServiceMap) {
-// this.referenceToServiceMap = referenceToServiceMap;
-// }
-// public ArrayList<String> getProperties() {
-// return properties;
-// }
-// public void setProperties(ArrayList<String> properties) {
-// this.properties = properties;
-// }
-// public HashSet<String> getAdjacentEntities() {
-// return adjacentEntities;
-// }
-// public void setAdjacentEntities(HashSet<String> adjacentEntities) {
-// this.adjacentEntities = adjacentEntities;
-// }
-// public void setServices(ArrayList<String> services) {
-// this.services = services;
-// }
-//
-// public ArrayList<String> getServices() {
-// return services;
-// }
-//
-// public ArrayList<String> getReferences() {
-// return references;
-// }
+ //private HashSet<String> connectedEntities = new HashSet<String>();
-// public void setConnectedEntities(HashSet<String> connectedEntities) {
-// this.connectedEntities = connectedEntities;
-// }
-//
-// public HashSet<String> getConnectedEntities() {
-// return connectedEntities;
-// }
+ 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<String, String> getReferenceToServiceMap() {
+ return referenceToServiceMap;
+ }
+
+ public void setReferenceToServiceMap(HashMap<String, String> 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<String, String> getReferenceToServiceMap() {
+ // return referenceToServiceMap;
+ // }
+ // public void setReferenceToServiceMap(
+ // HashMap<String, String> referenceToServiceMap) {
+ // this.referenceToServiceMap = referenceToServiceMap;
+ // }
+ // public ArrayList<String> getProperties() {
+ // return properties;
+ // }
+ // public void setProperties(ArrayList<String> properties) {
+ // this.properties = properties;
+ // }
+ // public HashSet<String> getAdjacentEntities() {
+ // return adjacentEntities;
+ // }
+ // public void setAdjacentEntities(HashSet<String> adjacentEntities) {
+ // this.adjacentEntities = adjacentEntities;
+ // }
+ // public void setServices(ArrayList<String> services) {
+ // this.services = services;
+ // }
+ //
+ // public ArrayList<String> getServices() {
+ // return services;
+ // }
+ //
+ // public ArrayList<String> getReferences() {
+ // return references;
+ // }
+
+ // public void setConnectedEntities(HashSet<String> connectedEntities) {
+ // this.connectedEntities = connectedEntities;
+ // }
+ //
+ // public HashSet<String> 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
index e916b176a5..21746dfa28 100755
--- 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
@@ -21,379 +21,354 @@ package org.apache.tuscany.sca.impl.layout;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
-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.PropertyArtifact;
-import org.apache.tuscany.sca.impl.artifacts.ReferenceArtifact;
-import org.apache.tuscany.sca.impl.artifacts.ServiceArtifact;
/**
* 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<String, String> promoteAService = new HashMap<String, String>();
- private HashMap<String, ArrayList<String>> promoteAReference = new HashMap<String, ArrayList<String>>();
- private ArrayList<String> includedComposites = new ArrayList<String>();
- //private HashSet<String> connectedEntities = new HashSet<String>();
-
-
- 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<String, String> getReferenceToServiceMap() {
-// return referenceToServiceMap;
-// }
-//
-// public void setReferenceToServiceMap(
-// HashMap<String, String> 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<String, String> promoteAService) {
- this.promoteAService = promoteAService;
- }
-
- public HashMap<String, String> getPromoteAService() {
- return promoteAService;
- }
-
- public boolean addToPromoteAReference(String compositeRef, String componentRef){
- ArrayList<String> list;
-
- if (promoteAReference.containsKey(compositeRef)){
- list = promoteAReference.get(compositeRef);
- }
- else{
- list = new ArrayList<String>();
- }
-
- list.add(componentRef);
- promoteAReference.put(compositeRef, list);
- return true;
- }
-
- public boolean addToIncludedComposites(String composite){
-
- includedComposites.add(composite);
-
- return true;
- }
-
- public void setPromoteAReference(HashMap<String, ArrayList<String>> promoteAReference) {
- this.promoteAReference = promoteAReference;
- }
-
- public HashMap<String, ArrayList<String>> 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<String> 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<String, String> getReferenceToServiceMap() {
-// return referenceToServiceMap;
-// }
-// public void setReferenceToServiceMap(
-// HashMap<String, String> referenceToServiceMap) {
-// this.referenceToServiceMap = referenceToServiceMap;
-// }
-// public ArrayList<String> getProperties() {
-// return properties;
-// }
-// public void setProperties(ArrayList<String> properties) {
-// this.properties = properties;
-// }
-// public HashSet<String> getAdjacentEntities() {
-// return adjacentEntities;
-// }
-// public void setAdjacentEntities(HashSet<String> adjacentEntities) {
-// this.adjacentEntities = adjacentEntities;
-// }
-// public void setServices(ArrayList<String> services) {
-// this.services = services;
-// }
-//
-// public ArrayList<String> getServices() {
-// return services;
-// }
-//
-// public ArrayList<String> getReferences() {
-// return references;
-// }
-
-// public void setConnectedEntities(HashSet<String> connectedEntities) {
-// this.connectedEntities = connectedEntities;
-// }
-//
-// public HashSet<String> getConnectedEntities() {
-// return connectedEntities;
-// }
+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<String, String> promoteAService = new HashMap<String, String>();
+ private HashMap<String, ArrayList<String>> promoteAReference = new HashMap<String, ArrayList<String>>();
+ private ArrayList<String> includedComposites = new ArrayList<String>();
+
+ //private HashSet<String> connectedEntities = new HashSet<String>();
+
+ 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<String, String> getReferenceToServiceMap() {
+ // return referenceToServiceMap;
+ // }
+ //
+ // public void setReferenceToServiceMap(
+ // HashMap<String, String> 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<String, String> promoteAService) {
+ this.promoteAService = promoteAService;
+ }
+
+ public HashMap<String, String> getPromoteAService() {
+ return promoteAService;
+ }
+
+ public boolean addToPromoteAReference(String compositeRef, String componentRef) {
+ ArrayList<String> list;
+
+ if (promoteAReference.containsKey(compositeRef)) {
+ list = promoteAReference.get(compositeRef);
+ } else {
+ list = new ArrayList<String>();
+ }
+
+ list.add(componentRef);
+ promoteAReference.put(compositeRef, list);
+ return true;
+ }
+
+ public boolean addToIncludedComposites(String composite) {
+
+ includedComposites.add(composite);
+
+ return true;
+ }
+
+ public void setPromoteAReference(HashMap<String, ArrayList<String>> promoteAReference) {
+ this.promoteAReference = promoteAReference;
+ }
+
+ public HashMap<String, ArrayList<String>> 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<String> 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<String, String> getReferenceToServiceMap() {
+ // return referenceToServiceMap;
+ // }
+ // public void setReferenceToServiceMap(
+ // HashMap<String, String> referenceToServiceMap) {
+ // this.referenceToServiceMap = referenceToServiceMap;
+ // }
+ // public ArrayList<String> getProperties() {
+ // return properties;
+ // }
+ // public void setProperties(ArrayList<String> properties) {
+ // this.properties = properties;
+ // }
+ // public HashSet<String> getAdjacentEntities() {
+ // return adjacentEntities;
+ // }
+ // public void setAdjacentEntities(HashSet<String> adjacentEntities) {
+ // this.adjacentEntities = adjacentEntities;
+ // }
+ // public void setServices(ArrayList<String> services) {
+ // this.services = services;
+ // }
+ //
+ // public ArrayList<String> getServices() {
+ // return services;
+ // }
+ //
+ // public ArrayList<String> getReferences() {
+ // return references;
+ // }
+
+ // public void setConnectedEntities(HashSet<String> connectedEntities) {
+ // this.connectedEntities = connectedEntities;
+ // }
+ //
+ // public HashSet<String> 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
index b9a38a0deb..f0f7215a24 100755
--- 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
@@ -1,224 +1,259 @@
package org.apache.tuscany.sca.impl.layout;
import java.util.ArrayList;
-import java.util.HashMap;
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<String> references = new ArrayList<String>();
-
- private ArrayList<String> services = new ArrayList<String>();
-
- private ArrayList<String> properties = new ArrayList<String>();
-
- private HashSet<String> adjacentEntities = new HashSet<String>();
-
- 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<String> getProperties() {
- return properties;
- }
- public void setProperties(ArrayList<String> properties) {
- this.properties = properties;
- }
- public HashSet<String> getAdjacentEntities() {
- return adjacentEntities;
- }
- public void setAdjacentEntities(HashSet<String> adjacentEntities) {
- this.adjacentEntities = adjacentEntities;
- }
- public void setServices(ArrayList<String> services) {
- this.services = services;
- }
-
- public ArrayList<String> getServices() {
- return services;
- }
-
- public ArrayList<String> 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;
- }
-
-
+ 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<String> references = new ArrayList<String>();
+
+ private ArrayList<String> services = new ArrayList<String>();
+
+ private ArrayList<String> properties = new ArrayList<String>();
+
+ private HashSet<String> adjacentEntities = new HashSet<String>();
+
+ 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<String> getProperties() {
+ return properties;
+ }
+
+ public void setProperties(ArrayList<String> properties) {
+ this.properties = properties;
+ }
+
+ public HashSet<String> getAdjacentEntities() {
+ return adjacentEntities;
+ }
+
+ public void setAdjacentEntities(HashSet<String> adjacentEntities) {
+ this.adjacentEntities = adjacentEntities;
+ }
+
+ public void setServices(ArrayList<String> services) {
+ this.services = services;
+ }
+
+ public ArrayList<String> getServices() {
+ return services;
+ }
+
+ public ArrayList<String> 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
index b859e2de55..387afd22c0 100755
--- 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
@@ -21,727 +21,713 @@ 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<String, ArrayList<String>> connectedEntities = new HashMap<String, ArrayList<String>>();
- 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<ents.length)
-// assignPositions(ents, aEnt);
-//// else
-//// System.out.println(i+ " <<<<< "+ents.length);
-// break;
-// }
-//
-// }
-// }
-// }
-//
-//
-// else{
-// ArrayList<String> 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<String> list;
- if(connectedEntities.containsKey(ent1)){
- list = connectedEntities.get(ent1);
-
- }
- else{
- list =new ArrayList<String>();
-
- }
- 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;
- }
+ private Document dom;
+
+ //components connected to each other are tracked using following map
+ private HashMap<String, ArrayList<String>> connectedEntities = new HashMap<String, ArrayList<String>>();
+ 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<ents.length)
+ // assignPositions(ents, aEnt);
+ //// else
+ //// System.out.println(i+ " <<<<< "+ents.length);
+ // break;
+ // }
+ //
+ // }
+ // }
+ // }
+ //
+ //
+ // else{
+ // ArrayList<String> 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<String> list;
+ if (connectedEntities.containsKey(ent1)) {
+ list = connectedEntities.get(ent1);
+
+ } else {
+ list = new ArrayList<String>();
+
+ }
+ 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
index b4ea2bdaa4..6143cede48 100755
--- 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
@@ -21,163 +21,163 @@ 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;
- }
+ 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
index 2e521387e7..33f3d63a12 100755
--- 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
@@ -23,337 +23,337 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import org.apache.tuscany.sca.assembly.*;
+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<String, ArrayList<String>> connectedEntities = new HashMap<String, ArrayList<String>>();
- 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<Service> 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<Reference> refs = tuscanyComp.getReferences();
-
- for(int i = 0 ; i < refs.size(); i++) {
- Reference compositeRef = refs.get(i);
- composite.addAReference(compositeRef.getName());
-
- List<ComponentReference> promotedRefs = ((CompositeReference)compositeRef).getPromotedReferences();
-
- for(ComponentReference ref: promotedRefs){
- String reference = ref.getName();
-
- composite.addToPromoteAReference(compositeRef.getName(), reference);
- }
-
- }
-
- }
-
- private void buildCompositeProperty() {
-
- List<Property> props = tuscanyComp.getProperties();
-
- for(int i = 0 ; i < props.size(); i++) {
- Property compositeProp = props.get(i);
- composite.addAProperty(compositeProp.getName());
- }
-
- }
-
- private void addInclusions() {
-
- List<Composite> 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<Component> 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<Wire> 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<ComponentReference> 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<String> list;
- if(connectedEntities.containsKey(ent1)){
- list = connectedEntities.get(ent1);
-
- }
- else{
- list =new ArrayList<String>();
-
- }
- list.add(ent2);
- connectedEntities.put(ent1, list);
- }
-
- private void setServices(List<ComponentService> sers, ComponentEntity ent) {
-
- for(int i = 0 ; i < sers.size() ;i++) {
- ent.addAService(sers.get(i).getName());
- }
-
- }
-
-
- private void setProperties(List<ComponentProperty> 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;
- }
+ private Composite tuscanyComp;
+ //components connected to each other are tracked using following map
+ private HashMap<String, ArrayList<String>> connectedEntities = new HashMap<String, ArrayList<String>>();
+ 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<Service> 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<Reference> refs = tuscanyComp.getReferences();
+
+ for (int i = 0; i < refs.size(); i++) {
+ Reference compositeRef = refs.get(i);
+ composite.addAReference(compositeRef.getName());
+
+ List<ComponentReference> promotedRefs = ((CompositeReference)compositeRef).getPromotedReferences();
+
+ for (ComponentReference ref : promotedRefs) {
+ String reference = ref.getName();
+
+ composite.addToPromoteAReference(compositeRef.getName(), reference);
+ }
+
+ }
+
+ }
+
+ private void buildCompositeProperty() {
+
+ List<Property> props = tuscanyComp.getProperties();
+
+ for (int i = 0; i < props.size(); i++) {
+ Property compositeProp = props.get(i);
+ composite.addAProperty(compositeProp.getName());
+ }
+
+ }
+
+ private void addInclusions() {
+
+ List<Composite> 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<Component> 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<Wire> 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<ComponentReference> 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<String> list;
+ if (connectedEntities.containsKey(ent1)) {
+ list = connectedEntities.get(ent1);
+
+ } else {
+ list = new ArrayList<String>();
+
+ }
+ list.add(ent2);
+ connectedEntities.put(ent1, list);
+ }
+
+ private void setServices(List<ComponentService> sers, ComponentEntity ent) {
+
+ for (int i = 0; i < sers.size(); i++) {
+ ent.addAService(sers.get(i).getName());
+ }
+
+ }
+
+ private void setProperties(List<ComponentProperty> 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
index ab2da110e4..64b9ccdb92 100755
--- 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
@@ -36,130 +36,123 @@ 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;
- }
-
-
-
-
+ 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/layout/LayoutBuilderTest.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/test/java/org/apache/tuscany/sca/layout/LayoutBuilderTest.java
index 6d45eed39b..36ea55f5d1 100755
--- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/test/java/org/apache/tuscany/sca/layout/LayoutBuilderTest.java
+++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/test/java/org/apache/tuscany/sca/layout/LayoutBuilderTest.java
@@ -1,6 +1,5 @@
package org.apache.tuscany.sca.layout;
-import static org.junit.Assert.*;
import junit.framework.Assert;
import org.apache.tuscany.sca.impl.layout.ComponentEntity;
@@ -12,133 +11,131 @@ import org.junit.Test;
public class LayoutBuilderTest {
- 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());
-
- }
+ 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());
+
+ }
}