package ui.model; import java.util.ArrayList; import java.util.HashMap; import classes.AbstractCpsObject; import classes.CpsEdge; import classes.CpsNode; import classes.CpsUpperNode; import classes.HolonObject; import classes.HolonSwitch; import ui.model.DecoratedCable.CableState; /** * For DecoratedState And VisualRepresentationalState * @author Tom * */ public class MinimumModel { private ArrayList holonObjectList = new ArrayList(); private ArrayList cableList = new ArrayList(); private ArrayList nodeList = new ArrayList(); private ArrayList switchList = new ArrayList(); //-->Only for Visual: private ArrayList uppderNodeList = new ArrayList(); private HashMap inGroupObjects = new HashMap<>(); private HashMap inGroupEdges = new HashMap<>(); //<-- public MinimumModel(ArrayList abstractObjectList, ArrayList edgeList) {// Constructor because of old Model for (AbstractCpsObject aCps : abstractObjectList) { if (aCps instanceof HolonObject) holonObjectList.add((HolonObject) aCps); else if (aCps instanceof CpsNode) nodeList.add((CpsNode) aCps); else if (aCps instanceof HolonSwitch) switchList.add((HolonSwitch) aCps); else if(aCps instanceof CpsUpperNode) { addUpperObjects((CpsUpperNode)aCps); uppderNodeList.add((CpsUpperNode)aCps); } } for (CpsEdge edge : edgeList) { this.cableList.add(new IntermediateCableWithState(edge, CableState.Working)); } } private void addUpperObjects(CpsUpperNode aUpperNode) { for(AbstractCpsObject aCps : aUpperNode.getNodes()) { if (aCps instanceof HolonObject) holonObjectList.add((HolonObject) aCps); else if (aCps instanceof CpsNode) nodeList.add((CpsNode) aCps); else if (aCps instanceof HolonSwitch) switchList.add((HolonSwitch) aCps); else if(aCps instanceof CpsUpperNode) { addUpperObjects((CpsUpperNode)aCps); uppderNodeList.add((CpsUpperNode)aCps); } inGroupObjects.put(aCps, aUpperNode); } for (CpsEdge edge : aUpperNode.getNodeEdges()) { this.cableList.add(new IntermediateCableWithState(edge, CableState.Working)); inGroupEdges.put(edge, aUpperNode); } for (CpsEdge edge : aUpperNode.getOldEdges()) { this.cableList.add(new IntermediateCableWithState(edge, CableState.Working)); inGroupEdges.put(edge, aUpperNode); } } public ArrayList getHolonObjectList() { return holonObjectList; } public void setHolonObjectList(ArrayList holonObjectList) { this.holonObjectList = holonObjectList; } public ArrayList getEdgeList() { return cableList; } public void setEdgeList(ArrayList cableList) { this.cableList = cableList; } public ArrayList getNodeList() { return nodeList; } public void setNodeList(ArrayList nodeList) { this.nodeList = nodeList; } public ArrayList getSwitchList() { return switchList; } public void setSwitchList(ArrayList switchList) { this.switchList = switchList; } public ArrayList getUppderNodeList() { return uppderNodeList; } public HashMap getInGroupObjects() { return inGroupObjects; } public HashMap getInGroupEdges() { return inGroupEdges; } }