From a9c20c2a85a0bf6b2b359721b596202754965cf8 Mon Sep 17 00:00:00 2001 From: nirmal070125 Date: Sun, 3 Jul 2011 08:11:18 +0000 Subject: add support to wire element git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1142395 13f79535-47bb-0310-9956-ffa450edef68 --- .../tuscany/sca/impl/layout/EntityBuilder.java | 141 +++++++++++++++++---- 1 file changed, 113 insertions(+), 28 deletions(-) (limited to 'collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/EntityBuilder.java') 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 168915f40c..2d753221db 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 @@ -39,6 +39,7 @@ public class EntityBuilder { private int totalHeight=0; private Entity startEnt = null; private String compositeName; + Entity[] elts = null; /** * Constructor which initiates the DOM document @@ -76,7 +77,7 @@ public class EntityBuilder { * @return */ public Entity[] buildEntities(){ - Entity[] elts = null; + //get the root element Element docEle = dom.getDocumentElement(); compositeName = docEle.getAttribute("name"); @@ -99,6 +100,44 @@ public class EntityBuilder { elts[i].propertyLength(); } } + //sec. 5.4 in the spec + nl = docEle.getElementsByTagName("wire"); + System.out.println("^^^^^^^^^ "+nl.getLength()); + if(nl != null && nl.getLength() > 0 ) { + for(int i = 0 ; i < nl.getLength();i++) { + Element elt = (Element)nl.item(i); + String source = elt.getAttribute("source"); + String target = elt.getAttribute("target"); + String service, serviceComp, reference, referenceComp; + + System.out.println("^^^^^^^^^ "+source+" ::: "+target); + if(target.contains("/")){ + String[] arr = target.split("/"); + serviceComp = arr[0]; + service = arr[1]; + } + else{ + serviceComp = target; + service = null; + } + + if(source.contains("/")){ + String[] arr = source.split("/"); + referenceComp = arr[0]; + reference = arr[1]; + } + else{ + referenceComp = source; + reference = null; + } + + Entity e = findEntity(referenceComp); + System.out.println("^^^^^^^^^ "+e.getComponentName()); + if(e != null){ + createConnection(e, reference, serviceComp, service); + } + } + } positionEntities(elts); @@ -108,6 +147,78 @@ public class EntityBuilder { return elts; } + + private Entity findEntity(String componentName) { + + for(Entity e: elts){ + if(e.getComponentName().equals(componentName)){ + return e; + } + } + return null; + } + + private void setReferences(Element nVal, Entity ent) { + + NodeList nl = nVal.getElementsByTagName("reference"); + if(nl != null && nl.getLength() > 0 ) { + for(int i = 0 ; i < nl.getLength();i++) { + Element elt = (Element)nl.item(i); + String target = elt.getAttribute("target"); + String ref = elt.getAttribute("name"); + if(target.contains("/")){ + String[] arr = target.split("/"); + createConnection(ent, ref, arr[0], arr[1]); +// ent.addToRefToSerMap(ref, arr[1]); +// ent.addAnAdjacentEntity(arr[0]); +// addToConnectedEntities(ent.getComponentName(), arr[0]); +// addToConnectedEntities(arr[0], ent.getComponentName()); + } + else if(!target.equals("")){ + createConnection(ent, ref, target, null); +// ent.addToRefToSerMap(ref, target); +// ent.addAnAdjacentEntity(target); +// addToConnectedEntities(ent.getComponentName(), target); +// addToConnectedEntities(target, ent.getComponentName()); + } + + ent.addAReference(ref); + + } + } + } + + private void createConnection(Entity ent, String reference, + String serviceComp, String service) { + + String referenceComp = ent.getComponentName(); + + if(reference != null && service != null){ + + ent.addToRefToSerMap(reference, service); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } + else if(reference == null && service != null){ + ent.addToRefToSerMap(referenceComp, service); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } + else if(reference != null && service == null){ + ent.addToRefToSerMap(reference, serviceComp); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } + else{ + ent.addToRefToSerMap(referenceComp, serviceComp); + ent.addAnAdjacentEntity(serviceComp); + addToConnectedEntities(referenceComp, serviceComp); + addToConnectedEntities(serviceComp, referenceComp); + } + } private void calculateProperties(Entity[] elts) { int level=0, lane=0; @@ -224,33 +335,7 @@ public class EntityBuilder { return str.split("/"); } - private void setReferences(Element nVal, Entity ent) { - - NodeList nl = nVal.getElementsByTagName("reference"); - if(nl != null && nl.getLength() > 0 ) { - for(int i = 0 ; i < nl.getLength();i++) { - Element elt = (Element)nl.item(i); - String target = elt.getAttribute("target"); - String ref = elt.getAttribute("name"); - if(target.contains("/")){ - ent.addToRefToSerMap(ref, target.split("/")[1]); - ent.addAnAdjacentEntity(target.split("/")[0]); - addToConnectedEntities(ent.getComponentName(), target.split("/")[0]); - addToConnectedEntities(target.split("/")[0], ent.getComponentName()); - } - else if(!target.equals("")){ - - ent.addToRefToSerMap(ref, target); - ent.addAnAdjacentEntity(target); - addToConnectedEntities(ent.getComponentName(), target); - addToConnectedEntities(target, ent.getComponentName()); - } - - ent.addAReference(ref); - - } - } - } + private void addToConnectedEntities(String ent1, String ent2) { System.err.println(ent1+" : "+ent2); -- cgit v1.2.3