|
@@ -87,7 +87,7 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
|
|
|
private HashMap<Integer, AbstractCanvasObject> accessIntToObject = new HashMap<Integer, AbstractCanvasObject>();
|
|
|
private HashMap<AbstractCanvasObject, Integer> accessObjectToInt = new HashMap<AbstractCanvasObject, Integer>();
|
|
|
private HashMap<Integer, AbstractCanvasObject> accessIntegerToWildcard = new HashMap<Integer, AbstractCanvasObject>();
|
|
|
-
|
|
|
+ private HashMap<AbstractCanvasObject, GroupNode> accessGroupNode = new HashMap<AbstractCanvasObject, GroupNode>();
|
|
|
|
|
|
private HashSet<IndexCable> cableSet = new HashSet<IndexCable>();
|
|
|
private ArrayList<IndexCable> cableList = new ArrayList<IndexCable>();
|
|
@@ -95,6 +95,7 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
|
|
|
private int countForAccessMap = 0;
|
|
|
private int amountOfExistingCables = 0;
|
|
|
private ArrayList<HolonSwitch> switchList = new ArrayList<HolonSwitch>();
|
|
|
+ private HashMap<HolonSwitch, GroupNode> accessSwitchGroupNode = new HashMap<HolonSwitch, GroupNode>();
|
|
|
private ArrayList<Edge> edgeList = new ArrayList<Edge>();
|
|
|
|
|
|
|
|
@@ -665,6 +666,7 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
|
|
|
accessObjectToInt.clear();
|
|
|
cableSet.clear();
|
|
|
cableList.clear();
|
|
|
+ accessGroupNode.clear();
|
|
|
|
|
|
Category category = control.searchCategory("Wildcards");
|
|
|
if(category != null) {
|
|
@@ -678,7 +680,7 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
|
|
|
|
|
|
|
|
|
List<Integer> initialState = new ArrayList<Integer>();
|
|
|
- generateAccess(model.getObjectsOnCanvas());
|
|
|
+ generateAccess(model.getObjectsOnCanvas(), null);
|
|
|
addCables(model.getEdgesOnCanvas());
|
|
|
model.getEdgesOnCanvas().clear();
|
|
|
|
|
@@ -712,7 +714,7 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
|
|
|
* @param positionToInit
|
|
|
* @param timeStep
|
|
|
*/
|
|
|
- private void generateAccess(List<AbstractCanvasObject> nodes) {
|
|
|
+ private void generateAccess(List<AbstractCanvasObject> nodes, GroupNode groupnode) {
|
|
|
for(AbstractCanvasObject aCps : nodes) {
|
|
|
if(aCps instanceof HolonObject) {
|
|
|
HolonObject hO = (HolonObject) aCps;
|
|
@@ -721,9 +723,12 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
|
|
|
if(hO.getName().equals("Wildcard")) {
|
|
|
accessWildcards.add(new AccessWrapper(hO));
|
|
|
}
|
|
|
+ if(groupnode != null) {
|
|
|
+ accessGroupNode.put(hO, groupnode);
|
|
|
+ }
|
|
|
}
|
|
|
else if(aCps instanceof GroupNode) {
|
|
|
- generateAccess(((GroupNode)aCps).getNodes());
|
|
|
+ generateAccess(((GroupNode)aCps).getNodes(), (GroupNode) aCps);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -782,9 +787,21 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
|
|
|
AbstractCanvasObject toObject = accessIntToObject.get(cable.second);
|
|
|
int middleX = (fromObject.getPosition().x + toObject.getPosition().x)/2;
|
|
|
int middleY = (fromObject.getPosition().y + toObject.getPosition().y)/2;
|
|
|
- HolonSwitch newSwitch = new HolonSwitch("Switch12368");
|
|
|
+ HolonSwitch newSwitch = new HolonSwitch("Switch");
|
|
|
newSwitch.setPosition(middleX, middleY);
|
|
|
- control.getModel().getObjectsOnCanvas().add(newSwitch);
|
|
|
+
|
|
|
+ if(accessGroupNode.containsKey(fromObject)) {
|
|
|
+ GroupNode groupnode = accessGroupNode.get(fromObject);
|
|
|
+ groupnode.getNodes().add(newSwitch);
|
|
|
+ accessSwitchGroupNode.put(newSwitch, groupnode);
|
|
|
+ } else if(accessGroupNode.containsKey(toObject)) {
|
|
|
+ GroupNode groupnode = accessGroupNode.get(toObject);
|
|
|
+ groupnode.getNodes().add(newSwitch);
|
|
|
+ accessSwitchGroupNode.put(newSwitch, groupnode);
|
|
|
+ }else {
|
|
|
+ control.getModel().getObjectsOnCanvas().add(newSwitch);
|
|
|
+ }
|
|
|
+
|
|
|
this.switchList.add(newSwitch);
|
|
|
|
|
|
|
|
@@ -808,7 +825,16 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
|
|
|
private void removeAllAddedObjects() {
|
|
|
control.getModel().getEdgesOnCanvas().removeAll(edgeList);
|
|
|
addedIndexCable.clear();
|
|
|
- control.getModel().getObjectsOnCanvas().removeAll(switchList);
|
|
|
+
|
|
|
+ for(HolonSwitch hSwitch: switchList) {
|
|
|
+ if(this.accessSwitchGroupNode.containsKey(hSwitch)) {
|
|
|
+ accessSwitchGroupNode.get(hSwitch).getNodes().remove(hSwitch);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ control.getModel().getObjectsOnCanvas().remove(hSwitch);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ accessSwitchGroupNode.clear();
|
|
|
switchList.clear();
|
|
|
edgeList.clear();
|
|
|
}
|