From 1e379865eb41ef42a6adf18f52ebf44186376927 Mon Sep 17 00:00:00 2001 From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr> Date: Tue, 9 Dec 2014 08:43:29 +0000 Subject: [PATCH] Update on non connected elements --- src/tmltranslator/TMLCP.java | 40 ++++++++++++---- .../tmlcp/TMLCPActivityDiagram.java | 47 +++++++++++++++++++ 2 files changed, 77 insertions(+), 10 deletions(-) diff --git a/src/tmltranslator/TMLCP.java b/src/tmltranslator/TMLCP.java index ceb0e0eafe..85754dc871 100755 --- a/src/tmltranslator/TMLCP.java +++ b/src/tmltranslator/TMLCP.java @@ -337,20 +337,40 @@ public class TMLCP extends TMLElement { } public TMLCPElement getNonConnectedElement() { - TMLCPElement elt; - elt = mainCP.getNonConnectedElement(); - if (elt != null) { - return elt; - } - for(TMLCPActivityDiagram diag: otherCPs) { + TMLCPElement elt; + elt = mainCP.getNonConnectedElement(); + if (elt != null) { + return elt; + } + for(TMLCPActivityDiagram diag: otherCPs) { elt = diag.getNonConnectedElement(); - if (elt != null) { - return elt; - } + if (elt != null) { + return elt; + } + } + return null; + } + + public LinkedList<TMLCPElement> getAllNonConnectedElements() { + LinkedList<TMLCPElement> list = new LinkedList<TMLCPElement>(); + TMLCPElement elt; + list.addAll(mainCP.getAllNonConnectedElements()); + for(TMLCPActivityDiagram diag: otherCPs) { + list.addAll(diag.getAllNonConnectedElements()); } - return null; + return list; } + public LinkedList<TMLCPElement> removeAllNonConnectedElements() { + LinkedList<TMLCPElement> list = new LinkedList<TMLCPElement>(); + TMLCPElement elt; + list.addAll(mainCP.removeAllNonConnectedElements()); + for(TMLCPActivityDiagram diag: otherCPs) { + list.addAll(diag.removeAllNonConnectedElements()); + } + return list; + } + public void printDataStructure() { ArrayList<TMLCPActivityDiagram> CPlist = new ArrayList<TMLCPActivityDiagram>(); diff --git a/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java b/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java index 3d93a53f14..61b5a538eb 100755 --- a/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java +++ b/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java @@ -436,6 +436,53 @@ public class TMLCPActivityDiagram extends TMLElement { return null; } + public LinkedList<TMLCPElement> getAllNonConnectedElements() { + // Starting from Start state ... reaching all elements + // Then, see elements which are not in the reachable ones + if (start == null) { + return null; + } + + LinkedList<TMLCPElement> list = new LinkedList<TMLCPElement>(); + ArrayList<TMLCPElement> reached = new ArrayList<TMLCPElement>(); + + computeReachableElements(start, reached); + + // Find elements which were not reached + for(TMLCPElement elt: elements) { + if (!(reached.contains(elt))) { + list.add(elt); + } + } + return list; + } + + public LinkedList<TMLCPElement> removeAllNonConnectedElements() { + // Starting from Start state ... reaching all elements + // Then, see elements which are not in the reachable ones + if (start == null) { + return null; + } + + LinkedList<TMLCPElement> list = new LinkedList<TMLCPElement>(); + ArrayList<TMLCPElement> reached = new ArrayList<TMLCPElement>(); + + computeReachableElements(start, reached); + + // Find elements which were not reached + for(TMLCPElement elt: elements) { + if (!(reached.contains(elt))) { + list.add(elt); + } + } + + for(TMLCPElement elt: list) { + elements.remove(elt); + } + + return list; + } + private void computeReachableElements(TMLCPElement _elt, ArrayList<TMLCPElement> _reached) { if (_reached.contains(_elt)) { return; -- GitLab