diff options
Diffstat (limited to 'collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src')
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()); |