MinimumModel.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package holeg.ui.model;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import holeg.model.AbstractCanvasObject;
  6. import holeg.model.Edge;
  7. import holeg.model.GroupNode;
  8. import holeg.model.HolonObject;
  9. import holeg.model.HolonSwitch;
  10. import holeg.model.Node;
  11. /**
  12. * For DecoratedState And VisualRepresentationalState
  13. * @author Tom
  14. *
  15. */
  16. public class MinimumModel {
  17. private ArrayList<HolonObject> holonObjectList = new ArrayList<>();
  18. private ArrayList<Edge> edgeList = new ArrayList<>();
  19. private ArrayList<Node> nodeList = new ArrayList<>();
  20. private ArrayList<HolonSwitch> switchList = new ArrayList<>();
  21. //-->Only for Visual:
  22. private ArrayList<GroupNode> groupNodeList = new ArrayList<>();
  23. HashMap<Edge, ArrayList<GroupNode>> inGroupEdges = new HashMap<>();
  24. //<--
  25. public HashMap<Edge, ArrayList<GroupNode>> getInGroupEdges() {
  26. return inGroupEdges;
  27. }
  28. public MinimumModel(GroupNode canvas, List<Edge> edgeList, int timestep) {// Constructor because of old Model
  29. canvas.getObjectsInThisLayer().forEach(aCps -> {
  30. if (aCps instanceof HolonObject hObject) {
  31. holonObjectList.add(hObject);
  32. }
  33. else if (aCps instanceof Node node) nodeList.add(node);
  34. else if (aCps instanceof HolonSwitch sw) switchList.add(sw);
  35. else if(aCps instanceof GroupNode groupnode) {
  36. addGroupNodeObjects(groupnode, timestep);
  37. groupNodeList.add(groupnode);
  38. }
  39. });
  40. for (Edge edge : edgeList) {
  41. this.edgeList.add(edge);
  42. AbstractCanvasObject objectA = edge.getA();
  43. AbstractCanvasObject objectB = edge.getB();
  44. ArrayList<GroupNode> list = new ArrayList<GroupNode>();
  45. objectA.getGroupNode().ifPresent(groupNode -> {
  46. list.add(groupNode);
  47. });
  48. objectB.getGroupNode().ifPresent(groupNode -> {
  49. list.add(groupNode);
  50. });
  51. inGroupEdges.put(edge, list);
  52. }
  53. //Calculate Energy of HolonObjects
  54. holonObjectList.forEach(obj -> obj.calculateEnergy(timestep));
  55. }
  56. private void addGroupNodeObjects(GroupNode groupNode, int timestep) {
  57. holonObjectList.addAll(groupNode.getAllHolonObjectsRecursive().toList());
  58. nodeList.addAll(groupNode.getAllNodeObjectsRecursive().toList());
  59. switchList.addAll(groupNode.getAllSwitchObjectsRecursive().toList());
  60. groupNodeList.addAll(groupNode.getAllGroupNodeObjectsRecursive().toList());
  61. }
  62. public ArrayList<HolonObject> getHolonObjectList() {
  63. return holonObjectList;
  64. }
  65. public void setHolonObjectList(ArrayList<HolonObject> holonObjectList) {
  66. this.holonObjectList = holonObjectList;
  67. }
  68. public ArrayList<Edge> getEdgeList() {
  69. return edgeList;
  70. }
  71. public void setEdgeList(ArrayList<Edge> cableList) {
  72. this.edgeList = cableList;
  73. }
  74. public ArrayList<Node> getNodeList() {
  75. return nodeList;
  76. }
  77. public void setNodeList(ArrayList<Node> nodeList) {
  78. this.nodeList = nodeList;
  79. }
  80. public ArrayList<HolonSwitch> getSwitchList() {
  81. return switchList;
  82. }
  83. public void setSwitchList(ArrayList<HolonSwitch> switchList) {
  84. this.switchList = switchList;
  85. }
  86. public ArrayList<GroupNode> getUppderNodeList() {
  87. return groupNodeList;
  88. }
  89. }