package holeg.ui.model; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import holeg.model.AbstractCanvasObject; import holeg.model.Edge; import holeg.model.GroupNode; import holeg.model.HolonObject; import holeg.model.HolonSwitch; import holeg.model.Node; /** * For DecoratedState And VisualRepresentationalState * @author Tom * */ public class MinimumModel { private ArrayList holonObjectList = new ArrayList<>(); private ArrayList edgeList = new ArrayList<>(); private ArrayList nodeList = new ArrayList<>(); private ArrayList switchList = new ArrayList<>(); //-->Only for Visual: private ArrayList groupNodeList = new ArrayList<>(); HashMap> inGroupEdges = new HashMap<>(); //<-- public HashMap> getInGroupEdges() { return inGroupEdges; } public MinimumModel(GroupNode canvas, List edgeList, int timestep) {// Constructor because of old Model canvas.getObjectsInThisLayer().forEach(aCps -> { if (aCps instanceof HolonObject hObject) { holonObjectList.add(hObject); } else if (aCps instanceof Node node) nodeList.add(node); else if (aCps instanceof HolonSwitch sw) switchList.add(sw); else if(aCps instanceof GroupNode groupnode) { addGroupNodeObjects(groupnode, timestep); groupNodeList.add(groupnode); } }); for (Edge edge : edgeList) { this.edgeList.add(edge); AbstractCanvasObject objectA = edge.getA(); AbstractCanvasObject objectB = edge.getB(); ArrayList list = new ArrayList(); objectA.getGroupNode().ifPresent(groupNode -> { list.add(groupNode); }); objectB.getGroupNode().ifPresent(groupNode -> { list.add(groupNode); }); inGroupEdges.put(edge, list); } //Calculate Energy of HolonObjects holonObjectList.forEach(obj -> obj.calculateEnergy(timestep)); } private void addGroupNodeObjects(GroupNode groupNode, int timestep) { holonObjectList.addAll(groupNode.getAllHolonObjectsRecursive().toList()); nodeList.addAll(groupNode.getAllNodeObjectsRecursive().toList()); switchList.addAll(groupNode.getAllSwitchObjectsRecursive().toList()); groupNodeList.addAll(groupNode.getAllGroupNodeObjectsRecursive().toList()); } public ArrayList getHolonObjectList() { return holonObjectList; } public void setHolonObjectList(ArrayList holonObjectList) { this.holonObjectList = holonObjectList; } public ArrayList getEdgeList() { return edgeList; } public void setEdgeList(ArrayList cableList) { this.edgeList = 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 groupNodeList; } }