|
@@ -69,7 +69,7 @@ public class NodeController {
|
|
private void makeNodeOfNodes(CpsUpperNode node, CpsUpperNode upperNode) {
|
|
private void makeNodeOfNodes(CpsUpperNode node, CpsUpperNode upperNode) {
|
|
|
|
|
|
ArrayList<AbstractCpsObject> nodes = node.getNodes();
|
|
ArrayList<AbstractCpsObject> nodes = node.getNodes();
|
|
- // ArrayList<CpsEdge> nodeEdges = node.getNodeEdges();
|
|
|
|
|
|
+ ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
|
|
|
|
// Put all selected Nodes into the Upper Node
|
|
// Put all selected Nodes into the Upper Node
|
|
for (Iterator<AbstractCpsObject> it = model.getSelectedCpsObjects().iterator(); it.hasNext();) {
|
|
for (Iterator<AbstractCpsObject> it = model.getSelectedCpsObjects().iterator(); it.hasNext();) {
|
|
@@ -90,10 +90,13 @@ public class NodeController {
|
|
|
|
|
|
// kopiere edge in UpperNode
|
|
// kopiere edge in UpperNode
|
|
if (nodes.contains(edge.getA()) && nodes.contains(edge.getB())) {
|
|
if (nodes.contains(edge.getA()) && nodes.contains(edge.getB())) {
|
|
|
|
+ toDelete.add(edge);
|
|
addEdge(edge, node);
|
|
addEdge(edge, node);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ (upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).removeAll(toDelete);
|
|
// Lösche dann die Edges aus der nächst höheren schicht
|
|
// Lösche dann die Edges aus der nächst höheren schicht
|
|
for (AbstractCpsObject abs : model.getSelectedCpsObjects()) {
|
|
for (AbstractCpsObject abs : model.getSelectedCpsObjects()) {
|
|
if (upperNode == null)
|
|
if (upperNode == null)
|
|
@@ -122,7 +125,8 @@ public class NodeController {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * Look for adjacent Nodes connected with the new CpsUpperNode and make Connections
|
|
|
|
|
|
+ * Look for adjacent Nodes connected with the new CpsUpperNode and make
|
|
|
|
+ * Connections
|
|
*
|
|
*
|
|
* @param node
|
|
* @param node
|
|
* @param upperNode
|
|
* @param upperNode
|
|
@@ -131,7 +135,7 @@ public class NodeController {
|
|
|
|
|
|
ArrayList<AbstractCpsObject> adj = new ArrayList<>();
|
|
ArrayList<AbstractCpsObject> adj = new ArrayList<>();
|
|
ArrayList<Float> maxCapacity = new ArrayList<>();
|
|
ArrayList<Float> maxCapacity = new ArrayList<>();
|
|
-
|
|
|
|
|
|
+
|
|
ArrayList<CpsEdge> oldEdges = node.getOldEdges();
|
|
ArrayList<CpsEdge> oldEdges = node.getOldEdges();
|
|
ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
|
|
|
|
@@ -179,7 +183,7 @@ public class NodeController {
|
|
// für alle objekte in adjazenzliste mach
|
|
// für alle objekte in adjazenzliste mach
|
|
for (AbstractCpsObject cps : adj) {
|
|
for (AbstractCpsObject cps : adj) {
|
|
CpsEdge newEdge = new CpsEdge(cps, node, maxCapacity.get(adj.indexOf(cps)));
|
|
CpsEdge newEdge = new CpsEdge(cps, node, maxCapacity.get(adj.indexOf(cps)));
|
|
- removeEdges(cps, node, newEdge);
|
|
|
|
|
|
+ disconnectNodes(newEdge, upperNode);
|
|
// !! Eventuell noch bei getConnections() hinzufügem
|
|
// !! Eventuell noch bei getConnections() hinzufügem
|
|
// node.getConnections().add(newEdge);
|
|
// node.getConnections().add(newEdge);
|
|
if (upperNode == null)
|
|
if (upperNode == null)
|
|
@@ -200,7 +204,7 @@ public class NodeController {
|
|
// TODO Auto-generated method stub
|
|
// TODO Auto-generated method stub
|
|
ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
|
|
|
|
- //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())
|
|
for (Iterator<CpsEdge> it = (upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges())
|
|
.iterator(); it.hasNext();) {
|
|
.iterator(); it.hasNext();) {
|
|
|
|
|
|
@@ -209,7 +213,7 @@ public class NodeController {
|
|
toDelete.add(edge);
|
|
toDelete.add(edge);
|
|
|
|
|
|
}
|
|
}
|
|
- //lösch alle Edges die in toDelete sind und wiederherstell alte Edges
|
|
|
|
|
|
+ // lösch alle Edges die in toDelete sind und wiederherstell alte Edges
|
|
(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).removeAll(toDelete);
|
|
(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).removeAll(toDelete);
|
|
(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).addAll(node.getOldEdges());
|
|
(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).addAll(node.getOldEdges());
|
|
}
|
|
}
|
|
@@ -319,12 +323,12 @@ public class NodeController {
|
|
|
|
|
|
return pos;
|
|
return pos;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
private void removeForNodeOfNode(AbstractCpsObject obj, CpsUpperNode upperNode) {
|
|
private void removeForNodeOfNode(AbstractCpsObject obj, CpsUpperNode upperNode) {
|
|
-
|
|
|
|
- mpC.decIdx(obj.getID(), (upperNode == null? model.getCvsObjIdx() : upperNode.getNodesIdx()));
|
|
|
|
- (upperNode == null? model.getCvsObjIdx() : upperNode.getNodesIdx()).remove(obj.getID());
|
|
|
|
- (upperNode == null? model.getObjectsOnCanvas() : upperNode.getNodes()).remove(obj);
|
|
|
|
|
|
+
|
|
|
|
+ mpC.decIdx(obj.getID(), (upperNode == null ? model.getCvsObjIdx() : upperNode.getNodesIdx()));
|
|
|
|
+ (upperNode == null ? model.getCvsObjIdx() : upperNode.getNodesIdx()).remove(obj.getID());
|
|
|
|
+ (upperNode == null ? model.getObjectsOnCanvas() : upperNode.getNodes()).remove(obj);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -393,16 +397,17 @@ public class NodeController {
|
|
* @param a
|
|
* @param a
|
|
* @param b
|
|
* @param b
|
|
*/
|
|
*/
|
|
- public void connectNodes(AbstractCpsObject a, AbstractCpsObject b, CpsUpperNode node) {
|
|
|
|
|
|
+ public void connectNodes(CpsEdge edge, CpsUpperNode upperNode) {
|
|
// mache hier Connections in A und B rein
|
|
// mache hier Connections in A und B rein
|
|
// mache diese Edge auch in OldEdges rein des aktuellen CpsUpperNodes
|
|
// mache diese Edge auch in OldEdges rein des aktuellen CpsUpperNodes
|
|
- CpsEdge edge = new CpsEdge(a, b, model.getMaxCapacity());
|
|
|
|
- node.getOldEdges().add(edge);
|
|
|
|
|
|
+ upperNode.getOldEdges().add(edge);
|
|
}
|
|
}
|
|
-
|
|
|
|
- private void removeEdges(AbstractCpsObject a, AbstractCpsObject b, CpsEdge edge) {
|
|
|
|
- a.getConnections().remove(edge);
|
|
|
|
- b.getConnections().remove(edge);
|
|
|
|
|
|
+
|
|
|
|
+ public void disconnectNodes(CpsEdge edge, CpsUpperNode upperNode) {
|
|
|
|
+ edge.getA().getConnections().remove(edge);
|
|
|
|
+ edge.getB().getConnections().remove(edge);
|
|
|
|
+ if (upperNode != null)
|
|
|
|
+ upperNode.getOldEdges().remove(edge);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|