MinimumModel.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package ui.model;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import model.AbstractCanvasObject;
  5. import model.Edge;
  6. import model.GroupNode;
  7. import model.HolonObject;
  8. import model.HolonSwitch;
  9. import model.Node;
  10. import ui.model.DecoratedCable.CableState;
  11. /**
  12. * For DecoratedState And VisualRepresentationalState
  13. * @author Tom
  14. *
  15. */
  16. public class MinimumModel {
  17. private ArrayList<HolonObject> holonObjectList = new ArrayList<HolonObject>();
  18. private ArrayList<IntermediateCableWithState> cableList = new ArrayList<IntermediateCableWithState>();
  19. private ArrayList<Node> nodeList = new ArrayList<Node>();
  20. private ArrayList<HolonSwitch> switchList = new ArrayList<HolonSwitch>();
  21. //-->Only for Visual:
  22. private ArrayList<GroupNode> uppderNodeList = new ArrayList<GroupNode>();
  23. private HashMap<AbstractCanvasObject, GroupNode> inGroupObjects = new HashMap<>();
  24. HashMap<Edge, ArrayList<GroupNode>> inGroupEdges = new HashMap<Edge, ArrayList<GroupNode>>();
  25. //<--
  26. public HashMap<Edge, ArrayList<GroupNode>> getInGroupEdges() {
  27. return inGroupEdges;
  28. }
  29. public MinimumModel(ArrayList<AbstractCanvasObject> abstractObjectList, ArrayList<Edge> edgeList, int timestep) {// Constructor because of old Model
  30. for (AbstractCanvasObject aCps : abstractObjectList) {
  31. if (aCps instanceof HolonObject) {
  32. HolonObject hObject = (HolonObject) aCps;
  33. hObject.calculateState(timestep);
  34. holonObjectList.add(hObject);
  35. }
  36. else if (aCps instanceof Node) nodeList.add((Node) aCps);
  37. else if (aCps instanceof HolonSwitch) switchList.add((HolonSwitch) aCps);
  38. else if(aCps instanceof GroupNode) {
  39. addGroupNodeObjects((GroupNode)aCps, timestep);
  40. uppderNodeList.add((GroupNode)aCps);
  41. }
  42. }
  43. for (Edge edge : edgeList) {
  44. this.cableList.add(new IntermediateCableWithState(edge, CableState.Working));
  45. AbstractCanvasObject objectA = edge.getA();
  46. AbstractCanvasObject objectB = edge.getB();
  47. if(inGroupObjects.containsKey(objectA) || inGroupObjects.containsKey(objectB)){
  48. ArrayList<GroupNode> list = new ArrayList<GroupNode>();
  49. if(inGroupObjects.containsKey(objectA)) {
  50. list.add(inGroupObjects.get(objectA));
  51. }
  52. if(inGroupObjects.containsKey(objectB)) {
  53. list.add(inGroupObjects.get(objectB));
  54. }
  55. inGroupEdges.put(edge, list);
  56. }
  57. }
  58. }
  59. private void addGroupNodeObjects(GroupNode aUpperNode, int timestep) {
  60. for(AbstractCanvasObject aCps : aUpperNode.getNodes()) {
  61. if (aCps instanceof HolonObject) {
  62. HolonObject hObject = (HolonObject) aCps;
  63. hObject.calculateState(timestep);
  64. holonObjectList.add(hObject);
  65. }
  66. else if (aCps instanceof Node) nodeList.add((Node) aCps);
  67. else if (aCps instanceof HolonSwitch) switchList.add((HolonSwitch) aCps);
  68. else if(aCps instanceof GroupNode) {
  69. addGroupNodeObjects((GroupNode)aCps, timestep);
  70. uppderNodeList.add((GroupNode)aCps);
  71. }
  72. inGroupObjects.put(aCps, aUpperNode);
  73. }
  74. }
  75. public ArrayList<HolonObject> getHolonObjectList() {
  76. return holonObjectList;
  77. }
  78. public void setHolonObjectList(ArrayList<HolonObject> holonObjectList) {
  79. this.holonObjectList = holonObjectList;
  80. }
  81. public ArrayList<IntermediateCableWithState> getEdgeList() {
  82. return cableList;
  83. }
  84. public void setEdgeList(ArrayList<IntermediateCableWithState> cableList) {
  85. this.cableList = cableList;
  86. }
  87. public ArrayList<Node> getNodeList() {
  88. return nodeList;
  89. }
  90. public void setNodeList(ArrayList<Node> nodeList) {
  91. this.nodeList = nodeList;
  92. }
  93. public ArrayList<HolonSwitch> getSwitchList() {
  94. return switchList;
  95. }
  96. public void setSwitchList(ArrayList<HolonSwitch> switchList) {
  97. this.switchList = switchList;
  98. }
  99. public ArrayList<GroupNode> getUppderNodeList() {
  100. return uppderNodeList;
  101. }
  102. public HashMap<AbstractCanvasObject, GroupNode> getInGroupObjects() {
  103. return inGroupObjects;
  104. }
  105. }