diff --git a/src/tmltranslator/TMLCP.java b/src/tmltranslator/TMLCP.java index adb280bccc626084d7017afd8e8a1cb702d61288..f3214b8198fc17f3cbe7f4b050c3881d0ac5a289 100755 --- a/src/tmltranslator/TMLCP.java +++ b/src/tmltranslator/TMLCP.java @@ -332,6 +332,7 @@ public class TMLCP extends TMLElement { for(TMLCPActivityDiagram diag: otherCPs) { all.addAll(diag.splitADs()); } + otherCPs.addAll(all); } public void printDataStructure() { diff --git a/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java b/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java index 89444dc48b6beb4d8d20b0e3469de8c687bd9992..e288adb07e0ed114b72c02ff4fb36a488c34c69e 100755 --- a/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java +++ b/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java @@ -212,6 +212,10 @@ public class TMLCPActivityDiagram extends TMLElement { start = _elt; } + public TMLCPElement getStartElement() { + return start; + } + public void addTMLCPElement(TMLCPElement _elt) { elements.add(_elt); } @@ -307,6 +311,8 @@ public class TMLCPActivityDiagram extends TMLElement { int id = 0; TMLCPActivityDiagram diag; + TraceManager.addDev("Splitting AD: " + getName()); + // For each junction, we create a new AD ArrayList<TMLCPJunction> junctions = new ArrayList<TMLCPJunction>(); ArrayList<TMLCPRefAD> refsAD = new ArrayList<TMLCPRefAD>(); @@ -320,6 +326,7 @@ public class TMLCPActivityDiagram extends TMLElement { diag.setStartElement(start); diag.addTMLCPElement(start); refs.put((TMLCPJunction)elt, diag); + TraceManager.addDev("Adding a new diag named: " + diag.getName()); } } @@ -345,7 +352,7 @@ public class TMLCPActivityDiagram extends TMLElement { // To be modified-> add elements from RefADs // Also, avoid to add already met elements - addElementsFromJunction(refAD, start, diag, refs, toBeRemoved); + addElementsFromJunction(junction, diag.getStartElement(), diag, refs, toBeRemoved); } // Removing elements from main diagram @@ -368,14 +375,15 @@ public class TMLCPActivityDiagram extends TMLElement { } for(TMLCPElement elt: originInOld.getNextElements()) { - if (elt instanceof TMLCPRefAD) { + TraceManager.addDev("Exploring elt (0):" + elt.getName()); + if (elt instanceof TMLCPJunction) { // Must replace the junction by a ref to an AD - //TMLCPActivityDiagram toAD = refs.get((TMLCPJunction)elt); - //TMLCPRefAD ref = new TMLCPRefAD(toAD, toAD.getName(), elt.getReferenceObject()); - newDiag.addTMLCPElement(elt); - originInNew.setNextElement(elt); + TMLCPActivityDiagram toAD = refs.get((TMLCPJunction)elt); + TMLCPRefAD ref = new TMLCPRefAD(toAD, toAD.getName(), elt.getReferenceObject()); + newDiag.addTMLCPElement(ref); + originInNew.setNextElement(ref); } else { - + TraceManager.addDev("Exploring elt (1):" + elt.getName()); if (originInOld != originInNew) { originInNew.addNextElement(elt); }