|
@@ -212,12 +212,13 @@ public class NodeController {
|
|
// TODO Auto-generated method stub
|
|
// TODO Auto-generated method stub
|
|
ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
ArrayList<CpsEdge> lostEdges = new ArrayList<>();
|
|
ArrayList<CpsEdge> lostEdges = new ArrayList<>();
|
|
- ArrayList<AbstractCpsObject> found = (upperNode == null ? model.getObjectsOnCanvas() : upperNode.getNodes());
|
|
|
|
|
|
+ ArrayList<CpsEdge> foundEdges = (upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges());
|
|
ArrayList<AbstractCpsObject> lostChildren = new ArrayList<>();
|
|
ArrayList<AbstractCpsObject> lostChildren = new ArrayList<>();
|
|
|
|
+ ArrayList<AbstractCpsObject> foundChildren = (upperNode == null ? model.getObjectsOnCanvas()
|
|
|
|
+ : upperNode.getNodes());
|
|
|
|
|
|
// für jede Edge aus upperNode die Node enthält tu sie in toDelete
|
|
// für jede Edge aus upperNode die Node enthält tu sie in toDelete
|
|
- for (Iterator<CpsEdge> it = (upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges())
|
|
|
|
- .iterator(); it.hasNext();) {
|
|
|
|
|
|
+ for (Iterator<CpsEdge> it = foundEdges.iterator(); it.hasNext();) {
|
|
|
|
|
|
CpsEdge edge = it.next();
|
|
CpsEdge edge = it.next();
|
|
if (edge.getA().equals(node) || edge.getB().equals(node))
|
|
if (edge.getA().equals(node) || edge.getB().equals(node))
|
|
@@ -226,13 +227,14 @@ public class NodeController {
|
|
}
|
|
}
|
|
// mark all object that arent in the restored oldEdges
|
|
// mark all object that arent in the restored oldEdges
|
|
for (CpsEdge edge : node.getOldEdges()) {
|
|
for (CpsEdge edge : node.getOldEdges()) {
|
|
- if (node.getNodes().contains(edge.getA()) && !found.contains(edge.getB()) && !lostEdges.contains(edge)) {
|
|
|
|
|
|
+ if (node.getNodes().contains(edge.getA()) && !foundChildren.contains(edge.getB())
|
|
|
|
+ && !lostEdges.contains(edge)) {
|
|
lostChildren.add(edge.getA());
|
|
lostChildren.add(edge.getA());
|
|
lostEdges.add(edge);
|
|
lostEdges.add(edge);
|
|
// edge.getB().getConnections().remove(edge);
|
|
// edge.getB().getConnections().remove(edge);
|
|
}
|
|
}
|
|
|
|
|
|
- else if (node.getNodes().contains(edge.getB()) && !found.contains(edge.getA())
|
|
|
|
|
|
+ else if (node.getNodes().contains(edge.getB()) && !foundChildren.contains(edge.getA())
|
|
&& !lostEdges.contains(edge)) {
|
|
&& !lostEdges.contains(edge)) {
|
|
lostChildren.add(edge.getB());
|
|
lostChildren.add(edge.getB());
|
|
lostEdges.add(edge);
|
|
lostEdges.add(edge);
|
|
@@ -261,7 +263,8 @@ public class NodeController {
|
|
// guck einfach in den Connections des Verlorenen nach Edges die
|
|
// guck einfach in den Connections des Verlorenen nach Edges die
|
|
// auf der Canvas sind.
|
|
// auf der Canvas sind.
|
|
for (CpsEdge e : lost.getConnections()) {
|
|
for (CpsEdge e : lost.getConnections()) {
|
|
- if (found.contains(e.getA()) && found.contains(e.getB()) && !node.getOldEdges().contains(e)) {
|
|
|
|
|
|
+ if (foundChildren.contains(e.getA()) && foundChildren.contains(e.getB())
|
|
|
|
+ && !node.getOldEdges().contains(e) && !foundEdges.contains(e)) {
|
|
node.getOldEdges().add(e);
|
|
node.getOldEdges().add(e);
|
|
foundCps = true;
|
|
foundCps = true;
|
|
}
|
|
}
|
|
@@ -272,7 +275,7 @@ public class NodeController {
|
|
// wenn das verlorene Object nicht gefunden
|
|
// wenn das verlorene Object nicht gefunden
|
|
if (!foundCps)
|
|
if (!foundCps)
|
|
// für alle auf der Ebene liegende Objekte
|
|
// für alle auf der Ebene liegende Objekte
|
|
- outerLoop: for (AbstractCpsObject cps : found) {
|
|
|
|
|
|
+ outerLoop: for (AbstractCpsObject cps : foundChildren) {
|
|
if (!cps.equals(node) && !lostChildren.contains(cps))
|
|
if (!cps.equals(node) && !lostChildren.contains(cps))
|
|
// such per Backtracking Algorithmus ob der enthalten ist
|
|
// such per Backtracking Algorithmus ob der enthalten ist
|
|
if (backtrackLostChild(cps, toSearch, lost)) {
|
|
if (backtrackLostChild(cps, toSearch, lost)) {
|