diff options
Diffstat (limited to 'collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java')
-rwxr-xr-x | collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java | 148 |
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; + } + } |