123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- 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<HolonObject> holonObjectList = new ArrayList<>();
- private ArrayList<Edge> edgeList = new ArrayList<>();
- private ArrayList<Node> nodeList = new ArrayList<>();
- private ArrayList<HolonSwitch> switchList = new ArrayList<>();
- //-->Only for Visual:
- private ArrayList<GroupNode> groupNodeList = new ArrayList<>();
- HashMap<Edge, ArrayList<GroupNode>> inGroupEdges = new HashMap<>();
- //<--
-
-
-
-
-
- public HashMap<Edge, ArrayList<GroupNode>> getInGroupEdges() {
- return inGroupEdges;
- }
- public MinimumModel(GroupNode canvas, List<Edge> 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<GroupNode> list = new ArrayList<GroupNode>();
- 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<HolonObject> getHolonObjectList() {
- return holonObjectList;
- }
- public void setHolonObjectList(ArrayList<HolonObject> holonObjectList) {
- this.holonObjectList = holonObjectList;
- }
- public ArrayList<Edge> getEdgeList() {
- return edgeList;
- }
- public void setEdgeList(ArrayList<Edge> cableList) {
- this.edgeList = cableList;
- }
- public ArrayList<Node> getNodeList() {
- return nodeList;
- }
- public void setNodeList(ArrayList<Node> nodeList) {
- this.nodeList = nodeList;
- }
- public ArrayList<HolonSwitch> getSwitchList() {
- return switchList;
- }
- public void setSwitchList(ArrayList<HolonSwitch> switchList) {
- this.switchList = switchList;
- }
- public ArrayList<GroupNode> getUppderNodeList() {
- return groupNodeList;
- }
-
- }
|