summaryrefslogtreecommitdiffstats
path: root/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/diagram/DiagramGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to 'collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/diagram/DiagramGenerator.java')
-rwxr-xr-xcollaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/diagram/DiagramGenerator.java118
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() {