summaryrefslogtreecommitdiffstats
path: root/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java')
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java148
1 files changed, 63 insertions, 85 deletions
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 75dd21f5c3..156d5676e5 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
@@ -2,23 +2,23 @@ package org.apache.tuscany.sca.impl.layout;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Iterator;
-
import org.apache.tuscany.sca.impl.artifacts.Component;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class EntityBuilder {
private Document dom;
- private final int initPoint = 100;
+ private final int initPoint = 100;//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
private HashMap<String, ArrayList<String>> connectedEntities = new HashMap<String, ArrayList<String>>();
- public final int totalLength=0, totalHeight=0;
+ private int totalWidth=0;
+ private int totalHeight=0;
+ private Entity startEnt = null;
+ private String compositeName;
public EntityBuilder(Document aDom){
dom = aDom;
@@ -28,6 +28,8 @@ public class EntityBuilder {
Entity[] 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");
@@ -47,51 +49,36 @@ public class EntityBuilder {
}
}
- // //get a nodelist of elements
- // NodeList nl2 = docEle.getElementsByTagName("wire");
- // if(nl2 != null && nl2.getLength() > 0 ) {
- //
- // for(int i = 0 ; i < nl2.getLength();i++) {
- // Element nVal = (Element)nl2.item(i);
- // String[] source = splitValues(nVal.getAttribute("source"));
- // String[] target = splitValues(nVal.getAttribute("target"));
- //
- // for(Entity ent: elts){
- // if(ent.getComponentName().equalsIgnoreCase(source[0])){
- // ent.addAnAdjacentEntity(target[0]);
- // ent.addToRefToSerMap(source[1], target[1]);
- // break;
- // }
- // }
- // }
- // }
-
- //correctMap(elts);
-
positionEntities(elts);
+ calculateProperties(elts);
print(elts);
return elts;
}
- // private void correctMap(Entity[] elts) {
- //
- // for(Entity ent: elts){
- // for(Iterator it=ent.getReferenceToServiceMap().values().iterator();it.hasNext();){
- // String target = (String)it.next();
- // if(target.startsWith("#")){
- // for(Entity e: elts){
- // if(e.getComponentName().equals(target.substring(1))){
- //
- // }
- // }
- // }
- // }
- // }
- // }
+ private void calculateProperties(Entity[] elts) {
+ int level=0, lane=0;
+
+ for(Entity 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;
+ }
+
private void print(Entity[] elts) {
for(Entity ent: elts){
@@ -101,7 +88,7 @@ public class EntityBuilder {
}
private void positionEntities(Entity[] ents){
- Entity startEnt = null;
+
for(Entity ent: ents){
if(ent.getAdjacentEntities().size() != 0 || ents.length==1){
setPosition(ent, initPoint, initPoint, 0, 0);
@@ -112,31 +99,19 @@ public class EntityBuilder {
}
}
-// for(Entity ent: ents){
-// if(ent != startEnt){
-// assignPosition(ent, ents);
-// }
-// }
if(startEnt != null)
assignPositions(ents, startEnt);
}
- private void assignPosition(Entity ent, Entity[] ents) {
-
-
- }
-
private void assignPositions(Entity[] ents, Entity ent){
int i=0;
-
- //for(Entity ent: ents){
+ if(ent.getAdjacentEntities().size()>0){
- if(ent.getAdjacentEntities().size()>0){
- System.out.println(ent.getComponentName());
+ System.out.println(ent.getComponentName());
for(String name: ent.getAdjacentEntities()){
- System.out.println("eee "+name);
+ //System.out.println("eee "+name);
for(Entity aEnt: ents){
i++;
if(name.equalsIgnoreCase(aEnt.getComponentName())){
@@ -150,7 +125,7 @@ public class EntityBuilder {
levelCount.add(lane, level+1);
setPosition(aEnt, ent.getX()+spaceX, ent.getY()+spaceY*level, level, lane);
}
- if(i<ents.length)
+ if(i<ents.length)
assignPositions(ents, aEnt);
break;
}
@@ -158,42 +133,30 @@ public class EntityBuilder {
}
}
}
-
- //}
-
- else{
- ArrayList<String> conns = connectedEntities.get(ent.getComponentName());
- System.err.println(conns.size());
- if(conns.size()>0){
-
- for(String conn: conns){
- System.err.println("conn "+conn +" : "+ent.getComponentName());
+
+
+ else{
+ ArrayList<String> conns = connectedEntities.get(ent.getComponentName());
+ System.err.println(conns.size());
+ if(conns.size()>0){
+
+ for(String conn: conns){
+ System.err.println("conn "+conn +" : "+ent.getComponentName());
for(Entity e: ents){
if(e.getLane() == -1 && e.getComponentName().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);
-
-// 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);
-// }
-// System.err.println(e.getComponentName());
-// assignPositions(ents, e);
+
break;
}
}
- }
}
}
+ }
}
private void setPosition(Entity ent, int x, int y, int level, int lane){
@@ -223,9 +186,8 @@ public class EntityBuilder {
addToConnectedEntities(target.split("/")[0], ent.getComponentName());
}
else if(!target.equals("")){
- //adding a #, since this is not the name of the service
- //but the component which has only one service
- ent.addToRefToSerMap(ref, "#"+target);
+
+ ent.addToRefToSerMap(ref, target);
ent.addAnAdjacentEntity(target);
addToConnectedEntities(ent.getComponentName(), target);
addToConnectedEntities(target, ent.getComponentName());
@@ -274,6 +236,22 @@ public class EntityBuilder {
}
}
+ public void setCompositeName(String compositeName) {
+ this.compositeName = compositeName;
+ }
+
+ public String getCompositeName() {
+ return compositeName;
+ }
+
+ public int getTotalWidth() {
+ return totalWidth;
+ }
+
+ public int getTotalHeight() {
+ return totalHeight;
+ }
+
}