diff options
Diffstat (limited to 'collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/diagram/DiagramGenerator.java')
-rwxr-xr-x | collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/diagram/DiagramGenerator.java | 118 |
1 files changed, 72 insertions, 46 deletions
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 39addafe40..031ff25e95 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 @@ -31,6 +31,7 @@ import org.apache.tuscany.sca.impl.artifacts.Reference; import org.apache.tuscany.sca.impl.artifacts.Service; import org.apache.tuscany.sca.impl.artifacts.Text; import org.apache.tuscany.sca.impl.artifacts.Wire; +import org.apache.tuscany.sca.impl.layout.ComponentEntity; import org.apache.tuscany.sca.impl.layout.Entity; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; @@ -38,15 +39,19 @@ import org.w3c.dom.Element; public class DiagramGenerator { - Entity[] entities; - int height, width; - Document doc; - String compositeName; - String svgNS ; - Element svgRoot; - ArrayList<Reference> refs= new ArrayList<Reference>(); - ArrayList<Service> sers= new ArrayList<Service>(); + private Entity[] entities; + private int height, width; + private Document doc; + private String compositeName; + private String svgNS ; + private Element svgRoot; + private ArrayList<Reference> refs= new ArrayList<Reference>(); + private ArrayList<Service> sers= new ArrayList<Service>(); + /** + * Constructor to generate a SVG diagram for compositeName + * with a given height and a width and consisting of entities. + */ public DiagramGenerator(Entity[] entities, int height, int width, String compositeName) { this.entities = entities; this.height = height; @@ -54,6 +59,9 @@ public class DiagramGenerator { this.compositeName = compositeName; } + /** + * Draws the diagram. + */ public Document buildSVGDocument(){ DOMImplementation impl = SVGDOMImplementation.getDOMImplementation(); svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; @@ -63,6 +71,7 @@ public class DiagramGenerator { svgRoot = doc.getDocumentElement(); addComposite(); + for(Entity ent: entities){ addComponent(ent); addService(ent); @@ -70,23 +79,36 @@ public class DiagramGenerator { addProperties(ent); } + addConnections(); + + return doc; + } + + /** + * Connects references to services. + */ + private void addConnections() { + for(Entity ent: entities){ - for(Iterator it= ent.getReferenceToServiceMap().entrySet().iterator();it.hasNext();){ - Entry entry = (Entry) it.next(); - String ref = (String)entry.getKey(); - String ser = (String)entry.getValue(); + if(ent instanceof ComponentEntity){ - Reference r = getRef(ref); - Service s = getSer(ser); - - if(r != null && s != null){ - addWire(r,s); + 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(); + + Reference r = getRef(ref); + Service s = getSer(ser); + + if(r != null && s != null){ + addWire(r,s); + } } } } - return doc; } - + private void addWire(Reference r, Service s) { Wire edge = new Wire(); @@ -117,7 +139,7 @@ public class DiagramGenerator { private void addProperties(Entity ent) { int propLen = ent.getPropLength(); - int x=ent.getX()+Property.SPACING; + int x= ent.getX() + Property.SPACING_FOR_COMPONENT; int y= ent.getY()-propLen/2; for(String prop: ent.getProperties()){ @@ -128,17 +150,17 @@ public class DiagramGenerator { svgRoot.appendChild(property); svgRoot.appendChild(text); - x += (propLen + Property.SPACING); + x += (propLen + Property.SPACING_FOR_COMPONENT); pro.setName(prop); - pro.setContainerName(ent.getComponentName()); + pro.setContainerName(ent.getName()); } } private void addReference(Entity ent) { int refHeight = ent.getRefHeight(); int x=(ent.getX()+ent.getWidth())-(refHeight*2/3); - int y=ent.getY()+Reference.SPACING; + int y=ent.getY() + Reference.SPACING_FOR_COMPONENT; for(String ref: setRefOrder(ent)){ Reference refer= new Reference(); @@ -147,10 +169,10 @@ public class DiagramGenerator { svgRoot.appendChild(polygon); svgRoot.appendChild(text); - y += (refHeight + Reference.SPACING); + y += (refHeight + Reference.SPACING_FOR_COMPONENT); refer.setName(ref); - refer.setContainerName(ent.getComponentName()); + refer.setContainerName(ent.getName()); refs.add(refer); } @@ -166,33 +188,35 @@ public class DiagramGenerator { 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)); - + if(e instanceof ComponentEntity){ + for(Iterator it= ((ComponentEntity)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)); + + } } for(String eName: e.getAdjacentEntities()){ for(Entity ent: entities){ - if(ent.getComponentName().equals(eName)){ + 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.getComponentName())){ + 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(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()); + System.err.println("XXXXX "+ refs.get(sers.indexOf(s))+" ::: "+ent.getLevel()+" ::: "+ent.getName()); orderedRefs[ent.getLevel()] = refs.get(sers.indexOf(s)); break; } @@ -221,10 +245,12 @@ public class DiagramGenerator { private void addService(Entity ent) { int serHeight = ent.getSerHeight(); - int x=ent.getX()-(serHeight*2/3); - int y=ent.getY()+Service.SPACING; + int x= ent.getX()-(serHeight*2/3); + int y= ent.getY() + Service.SPACING_FOR_COMPONENT; + System.out.println("''''''"+ent.getName() +" '''''' "+ ent.getServices().size()); for(String ser: ent.getServices()){ + Service serve= new Service(); Element polygon = serve.addElement(doc, svgNS, x, y, serHeight); Element text; @@ -236,10 +262,10 @@ public class DiagramGenerator { svgRoot.appendChild(polygon); svgRoot.appendChild(text); - y += (serHeight + Service.SPACING); + y += (serHeight + Service.SPACING_FOR_COMPONENT); serve.setName(ser); - serve.setContainerName(ent.getComponentName()); + serve.setContainerName(ent.getName()); sers.add(serve); } } @@ -250,12 +276,12 @@ public class DiagramGenerator { Element com = comp.addElement(doc, svgNS, ent.getX(), ent.getY(), ent.getHeight(), ent.getWidth()); Element text = Text.addTextElement(doc, svgNS, ent.getX()+(ent.getWidth()/4), - ent.getY()+(ent.getHeight()+Component.TEXT_SPACING), ent.getComponentName()); + ent.getY()+(ent.getHeight()+Component.TEXT_SPACING), ent.getName()); svgRoot.appendChild(com); svgRoot.appendChild(text); - comp.setName(ent.getComponentName()); + comp.setName(ent.getName()); } private void addComposite() { |