ObjectController.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package ui.controller;
  2. import java.util.AbstractMap.SimpleEntry;
  3. import model.AbstractCanvasObject;
  4. import model.GroupNode;
  5. import model.HolonElement;
  6. import model.HolonObject;
  7. import java.util.ArrayList;
  8. import java.util.Collection;
  9. import java.util.Optional;
  10. import ui.model.Model;
  11. /**
  12. * Controller for Objects.
  13. *
  14. * @author Gruppe14
  15. */
  16. public class ObjectController {
  17. private Model model;
  18. private MultiPurposeController mpC;
  19. /**
  20. * Constructor.
  21. *
  22. * @param model Model
  23. * @param mp MultiPurposeController
  24. */
  25. public ObjectController(Model model, MultiPurposeController mp) {
  26. this.model = model;
  27. this.mpC = mp;
  28. initHolonElements();
  29. }
  30. /**
  31. * init default Power supply of the Power Plant.
  32. */
  33. public void initHolonElements() {
  34. addNewElementIntoCategoryObject("Energy", "Power Plant", "Power", 10000);
  35. addNewElementIntoCategoryObject("Building", "House", "TV", -250);
  36. addNewElementIntoCategoryObject("Building", "House", "TV", -250);
  37. addNewElementIntoCategoryObject("Building", "House", "Fridge", -500);
  38. addNewElementIntoCategoryObject("Building", "House", "Radio", -100);
  39. addNewElementIntoCategoryObject("Building", "House", "PC", -250);
  40. addNewElementIntoCategoryObject("Building", "House", "PC", -250);
  41. addNewElementIntoCategoryObject("Building", "House", "PC", -250);
  42. addNewElementIntoCategoryObject("Building", "House", "Light", -50);
  43. addNewElementIntoCategoryObject("Building", "House", "Light", -50);
  44. addNewElementIntoCategoryObject("Building", "House", "Light", -50);
  45. addNewElementIntoCategoryObject("Building", "House", "Light", -50);
  46. addNewElementIntoCategoryObject("Building", "House", "Light", -50);
  47. addNewElementIntoCategoryObject("Building", "House", "Solar Panels", 300);
  48. }
  49. /**
  50. * Adds Element into a Object on the Canvas.
  51. *
  52. * @param object the Object
  53. * @param element the Element
  54. */
  55. public void addElementIntoCanvasObject(HolonObject object, HolonElement element) {
  56. element.setSaving(null);
  57. object.addElement(element);
  58. }
  59. /**
  60. * Add a new Element into a Object on the Canvas.
  61. *
  62. * @param objectId the Object ID
  63. * @param element the Name of the Element
  64. * @param amount the Amount
  65. * @param energy the Energy
  66. * @param elementId the Element ID
  67. */
  68. public void addNewElementIntoCanvasObject(int objectId, String element, float energy, int elementId) {
  69. HolonObject hObject = (HolonObject) mpC.searchByID(objectId);
  70. if (hObject == null) {
  71. hObject = (HolonObject) model.getSelectedObjects().stream().findFirst().get();
  72. }
  73. HolonElement ele = new HolonElement(hObject, element, energy, elementId);
  74. addElementIntoCanvasObject(hObject, ele);
  75. }
  76. /**
  77. * Add Element into a Object in Category.
  78. *
  79. * @param category the Category
  80. * @param object the Object
  81. * @param element the Element
  82. */
  83. public void addElementIntoCategoryObject(String category, String objectName, HolonElement element) {
  84. element.setSaving(new SimpleEntry<>(category, objectName));
  85. Optional<AbstractCanvasObject> object = mpC.searchCatObj(mpC.searchCat(category), objectName);
  86. object.ifPresent(obj -> ((HolonObject) obj).addElement(element));
  87. if(object.isEmpty()) {
  88. System.out.println(String.format("Category %s ObjectName %s element %s", category, objectName, element.getName()));
  89. //throw new UnsupportedOperationException();
  90. }
  91. }
  92. /**
  93. * Add a new Element into a Object in Category.
  94. *
  95. * @param category the Category
  96. * @param objectName the Object
  97. * @param element the Element Name
  98. * @param energy the Energy
  99. */
  100. public void addNewElementIntoCategoryObject(String category, String objectName, String element, float energy) {
  101. HolonElement ele = new HolonElement(null, element, energy);
  102. addElementIntoCategoryObject(category, objectName, ele);
  103. }
  104. /**
  105. * deletes a Element from a given Object.
  106. *
  107. * @param obj the Oject
  108. * @param ele the Element
  109. */
  110. public void deleteElement(HolonObject obj, HolonElement ele) {
  111. obj.getElements().remove(ele);
  112. }
  113. /**
  114. * deletes a selectedObject.
  115. *
  116. * @param obj Cpsobject
  117. */
  118. public void removeObjectFromSelection(AbstractCanvasObject obj) {
  119. model.getSelectedObjects().remove(obj);
  120. }
  121. /**
  122. * add an Object to selectedObject.
  123. *
  124. * @param obj AbstractCpsobject
  125. */
  126. public void addSelectedObject(AbstractCanvasObject obj) {
  127. model.getSelectedObjects().add(obj);
  128. }
  129. /**
  130. * add an Object to selectedObject.
  131. *
  132. * @param obj AbstractCpsobject
  133. */
  134. public void addSelectedObjects(Collection<AbstractCanvasObject> objects) {
  135. model.getSelectedObjects().addAll(objects);
  136. }
  137. /**
  138. * Get the number of HolonObjects in the given List
  139. *
  140. * @param list
  141. */
  142. public int getNumberHolonObjects(ArrayList<AbstractCanvasObject> list) {
  143. int val = 0;
  144. for (AbstractCanvasObject obj : list) {
  145. if (obj instanceof HolonObject) {
  146. val++;
  147. } else if (obj instanceof GroupNode) {
  148. val += getNumberHolonObjects(((GroupNode) obj).getNodes());
  149. }
  150. }
  151. return val;
  152. }
  153. }