diff options
Diffstat (limited to 'collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/LayoutBuilder.java')
-rwxr-xr-x | collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/LayoutBuilder.java | 316 |
1 files changed, 158 insertions, 158 deletions
diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/LayoutBuilder.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/LayoutBuilder.java index b4ea2bdaa4..6143cede48 100755 --- a/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/LayoutBuilder.java +++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/impl/layout/LayoutBuilder.java @@ -21,163 +21,163 @@ package org.apache.tuscany.sca.impl.layout; public class LayoutBuilder { - private Entity[] elts = null; - private int[][] conns = null; - private Entity startEnt = null; - private int currentMaxLevel= 0; - - /** - * Constructor which takes set of entities and their connection matrix - */ - public LayoutBuilder(Entity[] entities, int[][] connections){ - elts = entities; - conns = connections; - } - - /** - * Layout Building Algorithm - * ~~~~~~~~~~~~~~~~~~~~~~~~~ - * - * Here we position (i.e. assigning a level and a lane) all Entities - * 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 connected Entities of starting Entity. - * * If there are connected entities; - * *For each connected Entity; - * *We assign a corresponding level and a lane - * *Then recurse the procedure for connections of the assigned Entity - * - * - */ - public Entity[] placeEntities(){ - - /** - * Finding the starting entity - */ - for(int i = 0 ; i < elts.length; i++) { - //System.out.println("ELts "+elts.length); - Entity ent = elts[i]; - if( isConnected(ent.getId()) ){ - setPosition(ent, 0, 0); - startEnt = ent; - //System.out.println("startEnt "+ent.getId()); - break; - } - - } - - if(startEnt!=null){ - assignPositions(startEnt); - } - - assignPositionsOfOtherConncetedEntities();//such as a different cluster of components - assignPositionsOfIdleEntities(); - assignCoordinates(); - - return elts; - - } - - private void assignPositionsOfIdleEntities() { - - for(Entity ent: elts){ - if(!ent.isPossitionSet()){ - - setPosition(ent, currentMaxLevel++, 0); - } - } - } - - private void assignPositionsOfOtherConncetedEntities() { - - for(Entity ent: elts){ - if(!ent.isPossitionSet() && isConnected(ent.getId())){ - assignPositions(ent); - } - } - } - - private void assignCoordinates() { - - for(Entity ent: elts){ - ent.setX(ent.getParent().getX() + ent.getStartPosition()); - ent.setY(ent.getParent().getY() + ent.getStartPosition()/2); - } - } - - private void assignPositions(Entity ent) { - int id = ent.getId(); - int[] entConns = conns[id]; - - for(int i=0; i<entConns.length; i++){ - if( entConns[i] == 1 ){ - Entity nextEnt = findEntity(i); - -// if(nextEnt.isPossitionSet()){ -// currentMaxLevel = nextEnt.getLevel()+1; // for diagram clearness purpose -// } - if(nextEnt != null && !nextEnt.isPossitionSet()){ - setPosition(nextEnt, currentMaxLevel, ent.getLane()+1); - assignPositions(nextEnt); - } - } - - } - currentMaxLevel = ent.getLevel()+1; - } - - private Entity findEntity(int i) { - - for(Entity ent: elts){ - if(ent.getId() == i){ - return ent; - } - } - return null; - } - - /** - * If there's at least 1 connection, this will return true - */ - private boolean isConnected(int id) { - int[] entConns = conns[id]; - - //System.out.println("entConns "+entConns.length); - for(int i=0; i<entConns.length; i++){ - - if(entConns[i] == 1){ - return true; - } - - } - - return false; - } - - private void setPosition(Entity ent, int level, int lane){ - ent.setLevel(level); - ent.setLane(lane); - ent.setPossitionSet(true); - } - - public Entity getStartEnt() { - return startEnt; - } - - public void setStartEnt(Entity startEnt) { - this.startEnt = startEnt; - } + private Entity[] elts = null; + private int[][] conns = null; + private Entity startEnt = null; + private int currentMaxLevel = 0; + + /** + * Constructor which takes set of entities and their connection matrix + */ + public LayoutBuilder(Entity[] entities, int[][] connections) { + elts = entities; + conns = connections; + } + + /** + * Layout Building Algorithm + * ~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * Here we position (i.e. assigning a level and a lane) all Entities + * 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 connected Entities of starting Entity. + * * If there are connected entities; + * *For each connected Entity; + * *We assign a corresponding level and a lane + * *Then recurse the procedure for connections of the assigned Entity + * + * + */ + public Entity[] placeEntities() { + + /** + * Finding the starting entity + */ + for (int i = 0; i < elts.length; i++) { + //System.out.println("ELts "+elts.length); + Entity ent = elts[i]; + if (isConnected(ent.getId())) { + setPosition(ent, 0, 0); + startEnt = ent; + //System.out.println("startEnt "+ent.getId()); + break; + } + + } + + if (startEnt != null) { + assignPositions(startEnt); + } + + assignPositionsOfOtherConncetedEntities();//such as a different cluster of components + assignPositionsOfIdleEntities(); + assignCoordinates(); + + return elts; + + } + + private void assignPositionsOfIdleEntities() { + + for (Entity ent : elts) { + if (!ent.isPossitionSet()) { + + setPosition(ent, currentMaxLevel++, 0); + } + } + } + + private void assignPositionsOfOtherConncetedEntities() { + + for (Entity ent : elts) { + if (!ent.isPossitionSet() && isConnected(ent.getId())) { + assignPositions(ent); + } + } + } + + private void assignCoordinates() { + + for (Entity ent : elts) { + ent.setX(ent.getParent().getX() + ent.getStartPosition()); + ent.setY(ent.getParent().getY() + ent.getStartPosition() / 2); + } + } + + private void assignPositions(Entity ent) { + int id = ent.getId(); + int[] entConns = conns[id]; + + for (int i = 0; i < entConns.length; i++) { + if (entConns[i] == 1) { + Entity nextEnt = findEntity(i); + + // if(nextEnt.isPossitionSet()){ + // currentMaxLevel = nextEnt.getLevel()+1; // for diagram clearness purpose + // } + if (nextEnt != null && !nextEnt.isPossitionSet()) { + setPosition(nextEnt, currentMaxLevel, ent.getLane() + 1); + assignPositions(nextEnt); + } + } + + } + currentMaxLevel = ent.getLevel() + 1; + } + + private Entity findEntity(int i) { + + for (Entity ent : elts) { + if (ent.getId() == i) { + return ent; + } + } + return null; + } + + /** + * If there's at least 1 connection, this will return true + */ + private boolean isConnected(int id) { + int[] entConns = conns[id]; + + //System.out.println("entConns "+entConns.length); + for (int i = 0; i < entConns.length; i++) { + + if (entConns[i] == 1) { + return true; + } + + } + + return false; + } + + private void setPosition(Entity ent, int level, int lane) { + ent.setLevel(level); + ent.setLane(lane); + ent.setPossitionSet(true); + } + + public Entity getStartEnt() { + return startEnt; + } + + public void setStartEnt(Entity startEnt) { + this.startEnt = startEnt; + } } |