summaryrefslogtreecommitdiffstats
path: root/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main')
-rw-r--r--collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/artifacts/Text.java2
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/diagram/DiagramGenerator.java73
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java47
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/main/Main.java2
4 files changed, 119 insertions, 5 deletions
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 7457084eb6..fabbf40873 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
@@ -31,7 +31,7 @@ public class Text {
text.setAttributeNS(null, "y", y+"");
text.setAttributeNS(null, "text-anchor", "middle");
text.setAttributeNS(null, "dominant-baseline", "mathematical");
- text.setAttributeNS(null, "font-size", "20");
+ text.setAttributeNS(null, "font-size", "10");
text.setTextContent(content);
return text;
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 af7437d494..8c86248663 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
@@ -107,6 +107,7 @@ public class DiagramGenerator {
private Reference getRef(String ref) {
for(Reference r: refs){
+
if(r.getContainerName().equals(ref) || r.getName().equals(ref)){
return r;
}
@@ -139,7 +140,7 @@ public class DiagramGenerator {
int x=(ent.getX()+ent.getWidth())-(refHeight*2/3);
int y=ent.getY()+Reference.SPACING;
- for(String ref: ent.getReferences()){
+ for(String ref: setRefOrder(ent)){
Reference refer= new Reference();
Element polygon = refer.addElement(doc, svgNS, x, y, refHeight);
Element text = Text.addTextElement(doc, svgNS, x, y+refHeight/2, ref);
@@ -155,6 +156,69 @@ public class DiagramGenerator {
}
}
+ private String[] setRefOrder(Entity e){
+
+ ArrayList<String> refs = e.getReferences();
+ ArrayList<String> sers = new ArrayList<String>();
+ String[] orderedRefs = new String[refs.size()];
+
+ 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();
+
+ 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));
+
+ }
+
+ for(String eName: e.getAdjacentEntities()){
+ for(Entity ent: entities){
+
+ if(ent.getComponentName().equals(eName)){
+ for(String s : sers){
+ for(String s1: ent.getServices()){
+ //System.err.println("XXXXX "+ s1 +" ::: "+s);
+ if(s1.equals(s) || s.equals(ent.getComponentName())){
+ 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.getComponentName());
+ 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");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return orderedRefs;
+ }
+
private void addService(Entity ent) {
int serHeight = ent.getSerHeight();
int x=ent.getX()-(serHeight*2/3);
@@ -163,7 +227,12 @@ public class DiagramGenerator {
for(String ser: ent.getServices()){
Service serve= new Service();
Element polygon = serve.addElement(doc, svgNS, x, y, serHeight);
- Element text = Text.addTextElement(doc, svgNS, x, y+serHeight/2, ser);
+ Element text;
+ if(!ser.endsWith("Impl"))
+ text = Text.addTextElement(doc, svgNS, x, y+serHeight/2, ser);
+ else
+ text = Text.addTextElement(doc, svgNS, x, y+serHeight/2, "");
+
svgRoot.appendChild(polygon);
svgRoot.appendChild(text);
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 3251fd5d75..168915f40c 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
@@ -29,20 +29,52 @@ import org.w3c.dom.NodeList;
public class EntityBuilder {
private Document dom;
- private final int initPoint = 100;//initial point
+ private final int initPoint = 200;//initial point
private final int spaceX = Component.DEFAULT_WIDTH*2;
private final int spaceY = Component.DEFAULT_HEIGHT*2;
private ArrayList<Integer> levelCount = new ArrayList<Integer>();//keeps track of levels used in lanes
+ //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;
private Entity startEnt = null;
private String compositeName;
+ /**
+ * Constructor which initiates the DOM document
+ * @param aDom DOM document
+ */
public EntityBuilder(Document aDom){
dom = aDom;
}
+ /**
+ * Layout Building Algorithm
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~
+ *
+ * An Entity object represents a component element of a composite XML.
+ * Here we position (i.e. assigning a level and a lane) all such components
+ * 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 adjacent Entities of starting Entity.
+ * * If there are adjacent entities;
+ * *For each adjacent Entity;
+ *
+ *
+ * @return
+ */
public Entity[] buildEntities(){
Entity[] elts = null;
//get the root element
@@ -146,6 +178,8 @@ public class EntityBuilder {
}
if(i<ents.length)
assignPositions(ents, aEnt);
+// else
+// System.out.println(i+ " <<<<< "+ents.length);
break;
}
@@ -242,6 +276,17 @@ public class EntityBuilder {
ent.addAService(elt.getAttribute("name"));
}
}
+
+ 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 = elt.getAttribute("class").split("\\.")[1];
+ ent.addAService(serName);
+ }
+ }
+
}
private void setProperties(Element nVal, Entity ent) {
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 6f8f047adc..3f62f38cb5 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
@@ -38,7 +38,7 @@ public class Main {
public static void main(String[] args) throws Exception {
XMLReader reader = new XMLReader();
- Document doc =reader.parseXMLFile(System.getProperty("user.dir")+"/input/composite2.xml");
+ Document doc =reader.parseXMLFile(System.getProperty("user.dir")+"/input/composite3.xml");
EntityBuilder eb = new EntityBuilder(doc);
Entity[] ents =eb.buildEntities();
DiagramGenerator dg = new DiagramGenerator(ents, eb.getTotalHeight(), eb.getTotalWidth(), eb.getCompositeName());