|
@@ -261,32 +261,38 @@ 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.equals(lost)) || (found.contains(e.getB()) && !found.equals(lost)) ) && !node.getOldEdges().contains(e)) {
|
|
|
|
|
|
+ if (found.contains(e.getA()) && found.contains(e.getB()) && !node.getOldEdges().contains(e)) {
|
|
node.getOldEdges().add(e);
|
|
node.getOldEdges().add(e);
|
|
- foundCps = true;
|
|
|
|
|
|
+ foundCps = true;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
- } if (!foundCps)
|
|
|
|
|
|
+ }
|
|
|
|
+ // wenn das verlorene Object nicht gefunden
|
|
|
|
+ if (!foundCps)
|
|
|
|
+ // für alle auf der Ebene liegende Objekte
|
|
outerLoop: for (AbstractCpsObject cps : found) {
|
|
outerLoop: for (AbstractCpsObject cps : found) {
|
|
- if (!cps.equals(node) && !lostChildren.contains(cps))
|
|
|
|
- if (backtrackLostChild(cps, toSearch, lost)) {
|
|
|
|
-
|
|
|
|
- for (CpsEdge f : node.getOldEdges())
|
|
|
|
- if ((f.getA().equals(cps) && f.getB().equals(toSearch))
|
|
|
|
- || (f.getB().equals(cps) && f.getA().equals(toSearch)))
|
|
|
|
- continue outerLoop;
|
|
|
|
-
|
|
|
|
- if (!lookforDuplicates(cps, lost, node.getOldEdges())) {
|
|
|
|
-
|
|
|
|
- CpsEdge temp = new CpsEdge(cps, lost, edge.getCapacity());
|
|
|
|
- node.getOldEdges().add(temp);
|
|
|
|
-// if(cps instanceof CpsUpperNode)
|
|
|
|
-// ((CpsUpperNode)cps).getOldEdges().add(edge);
|
|
|
|
- }
|
|
|
|
|
|
+ if (!cps.equals(node) && !lostChildren.contains(cps))
|
|
|
|
+ // such per Backtracking Algorithmus ob der enthalten ist
|
|
|
|
+ if (backtrackLostChild(cps, toSearch, lost)) {
|
|
|
|
+ // wenns stimmt dann überspringe den aktuellen Loop
|
|
|
|
+ for (CpsEdge f : node.getOldEdges())
|
|
|
|
+ if ((f.getA().equals(cps) && f.getB().equals(toSearch)) || (f.getB().equals(cps) && f.getA().equals(toSearch)))
|
|
|
|
+ continue outerLoop;
|
|
|
|
+ // guck nach duplikaten in den Old Edges
|
|
|
|
+ if (!lookforDuplicates(cps, lost, node.getOldEdges())) {
|
|
|
|
+ // wenn es keine gibt erzeuge eine neue Oldedge
|
|
|
|
+ CpsEdge temp = new CpsEdge(cps, lost, edge.getCapacity());
|
|
|
|
+ node.getOldEdges().add(temp);
|
|
|
|
+ }
|
|
|
|
+ // falls das Objekt ein CpsUpperNode gewesen ist verschiebe
|
|
|
|
+ // bitte die OldEdge dahin
|
|
|
|
+ if (cps instanceof CpsUpperNode) {
|
|
|
|
+ ((CpsUpperNode) cps).getOldEdges().add(edge);
|
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|