ObjectController.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. package ui.controller;
  2. import java.util.ArrayList;
  3. import classes.Category;
  4. import classes.CpsUpperNode;
  5. import classes.AbstractCpsObject;
  6. import classes.HolonElement;
  7. import classes.HolonObject;
  8. import javafx.util.Pair;
  9. import ui.model.Model;
  10. /**
  11. * Controller for Objects.
  12. *
  13. * @author Gruppe14
  14. */
  15. public class ObjectController {
  16. private Model model;
  17. private MultiPurposeController mpC;
  18. /**
  19. * Constructor.
  20. *
  21. * @param model
  22. * Model
  23. * @param mp
  24. * MultiPurposeController
  25. */
  26. public ObjectController(Model model, MultiPurposeController mp) {
  27. this.model = model;
  28. this.mpC = mp;
  29. initHolonElements();
  30. }
  31. /**
  32. * init default Power supply of the Power Plant.
  33. */
  34. public void initHolonElements() {
  35. addNewElementIntoCategoryObject("Energy", "Power Plant", "Power", 1, 10000);
  36. addNewElementIntoCategoryObject("Building", "House", "TV", 2, -250);
  37. addNewElementIntoCategoryObject("Building", "House", "Fridge", 1, -500);
  38. addNewElementIntoCategoryObject("Building", "House", "Radio", 1, -100);
  39. addNewElementIntoCategoryObject("Building", "House", "PC", 3, -250);
  40. addNewElementIntoCategoryObject("Building", "House", "Light", 5, -50);
  41. addNewElementIntoCategoryObject("Building", "House", "Solar Panels", 1, 300);
  42. }
  43. /**
  44. * Adds Element into a Object.
  45. *
  46. * @param object
  47. * the Object
  48. * @param element
  49. * the Element
  50. */
  51. public void addElement(HolonObject object, HolonElement element) {
  52. object.getElements().add(element);
  53. }
  54. /**
  55. * Adds Element into a Object on the Canvas.
  56. *
  57. * @param object
  58. * the Object
  59. * @param element
  60. * the Element
  61. */
  62. public void addElementIntoCanvasObject(HolonObject object, HolonElement element) {
  63. element.setSaving(null);
  64. addElement(object, element);
  65. }
  66. /**
  67. * Add a new Element into a Object on the Canvas.
  68. *
  69. * @param id
  70. * the Object ID
  71. * @param element
  72. * the Name of the Element
  73. * @param amount
  74. * the Amount
  75. * @param energy
  76. * the Energy
  77. */
  78. public void addNewElementIntoCanvasObject(int id, String element, int amount, float energy) {
  79. HolonElement ele = new HolonElement(element, amount, energy);
  80. if ((HolonObject) mpC.searchByID(id) == null) {
  81. addElementIntoCanvasObject((HolonObject) model.getSelectedCpsObjects().get(0), ele);
  82. } else {
  83. addElementIntoCanvasObject((HolonObject) mpC.searchByID(id), ele);
  84. }
  85. }
  86. /**
  87. * Add Element into a Object in Category.
  88. *
  89. * @param category
  90. * the Category
  91. *
  92. * @param object
  93. * the Object
  94. * @param element
  95. * the Element
  96. */
  97. public void addElementIntoCategoryObject(String category, String object, HolonElement element) {
  98. element.setSaving(new Pair<String, String>(category, object));
  99. addElement((HolonObject) mpC.searchCatObj(mpC.searchCat(category), object), element);
  100. }
  101. /**
  102. * Add a new Element into a Object in Category.
  103. *
  104. * @param category
  105. * the Category
  106. * @param object
  107. * the Object
  108. * @param element
  109. * the Element Name
  110. * @param energy
  111. * the Energy
  112. * @param amount
  113. * the amount
  114. */
  115. public void addNewElementIntoCategoryObject(String category, String object, String element, int amount,
  116. float energy) {
  117. HolonElement ele = new HolonElement(element, amount, energy);
  118. addElementIntoCategoryObject(category, object, ele);
  119. }
  120. /**
  121. * deletes a Element from a given Object.
  122. *
  123. * @param obj
  124. * the Oject
  125. * @param ele
  126. * the Element
  127. */
  128. public void deleteElement(HolonObject obj, HolonElement ele) {
  129. obj.getElements().remove(ele);
  130. }
  131. /**
  132. * deletes a selectedObject.
  133. *
  134. * @param obj
  135. * Cpsobject
  136. */
  137. public void deleteSelectedObject(AbstractCpsObject obj) {
  138. model.getSelectedCpsObjects().remove(obj);
  139. }
  140. /**
  141. * add an Object to selectedObject.
  142. *
  143. * @param obj
  144. * AbstractCpsobject
  145. */
  146. public void addSelectedObject(AbstractCpsObject obj) {
  147. model.getSelectedCpsObjects().add(obj);
  148. }
  149. /**
  150. * deletes a Element from a given Canvas Object.
  151. *
  152. * @param id
  153. * the ID
  154. * @param eleid
  155. * the Element ID
  156. */
  157. public void deleteElementInCanvas(int id, int eleid) {
  158. HolonObject object = (HolonObject) mpC.searchByID(id);
  159. if (object == null) {
  160. object = (HolonObject) model.getSelectedCpsObjects().get(0);
  161. }
  162. HolonElement element = mpC.searchEleById(object, eleid);
  163. deleteElement(object, element);
  164. }
  165. /**
  166. * Returns the ID of the selected Object 0 = no Object is selected.
  167. *
  168. * @param id
  169. * the ID of the selected Object
  170. */
  171. public void setSelectedObjectID(int id) {
  172. model.setSelectedObjectID(id);
  173. }
  174. /**
  175. * Get the number of HolonObjects in the given List
  176. *
  177. * @param list
  178. */
  179. public int getNumberHolonObjects(ArrayList<AbstractCpsObject> list) {
  180. int val = 0;
  181. for (AbstractCpsObject obj : list) {
  182. if (obj instanceof HolonObject) {
  183. val++;
  184. } else if (obj instanceof CpsUpperNode) {
  185. val += getNumberHolonObjects(((CpsUpperNode) obj).getNodes());
  186. }
  187. }
  188. return val;
  189. }
  190. /**
  191. * Get the number of HolonObjects with the given state in the given List
  192. *
  193. * @param list
  194. * @param state
  195. */
  196. public int getNumberStateObjects(ArrayList<AbstractCpsObject> list, int state) {
  197. int val = 0;
  198. for (AbstractCpsObject obj : list) {
  199. if (obj instanceof HolonObject) {
  200. if (((HolonObject) obj).getState() == state || (state == 2 && ((HolonObject) obj).getState() == 3)) {
  201. val++;
  202. }
  203. } else if (obj instanceof CpsUpperNode) {
  204. val += getNumberStateObjects(((CpsUpperNode) obj).getNodes(), state);
  205. }
  206. }
  207. return val;
  208. }
  209. /**
  210. * add the ID of a HolonBody.
  211. *
  212. * @param i
  213. * int
  214. */
  215. public void addSelectedHolonBody(int i) {
  216. model.setSelectedHolonBody(i);
  217. }
  218. }