ObjectController.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  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 ui.model.Model;
  9. /**
  10. * Controller for Objects.
  11. *
  12. * @author Gruppe14
  13. */
  14. public class ObjectController {
  15. private Model model;
  16. private MultiPurposeController mpC;
  17. /**
  18. * Constructor.
  19. *
  20. * @param model
  21. * Model
  22. * @param mp
  23. * 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", 1, 10000);
  35. addNewElementIntoCategoryObject("Building", "House", "TV", 2, -250);
  36. addNewElementIntoCategoryObject("Building", "House", "Fridge", 1, -500);
  37. addNewElementIntoCategoryObject("Building", "House", "Radio", 1, -100);
  38. addNewElementIntoCategoryObject("Building", "House", "PC", 3, -250);
  39. addNewElementIntoCategoryObject("Building", "House", "Light", 5, -50);
  40. addNewElementIntoCategoryObject("Building", "House", "Solar Panels", 1, 300);
  41. }
  42. /**
  43. * Adds Element into a Object.
  44. *
  45. * @param object
  46. * the Object
  47. * @param element
  48. * the Element
  49. */
  50. public void addElement(HolonObject object, HolonElement element) {
  51. object.getEleIdx().put(element.getEleName(), object.getElements().size());
  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.setSav("CVS");
  64. element.setObj(Integer.toString(object.getId()));
  65. addElement(object, element);
  66. }
  67. /**
  68. * Add a new Element into a Object on the Canvas.
  69. *
  70. * @param id
  71. * the Object ID
  72. * @param element
  73. * the Name of the Element
  74. * @param amount
  75. * the Amount
  76. * @param energy
  77. * the Energy
  78. */
  79. public void addNewElementIntoCanvasObject(int id, String element, int amount, float energy) {
  80. HolonElement ele = new HolonElement(element, amount, energy);
  81. if ((HolonObject) mpC.searchByID(id) == null) {
  82. addElementIntoCanvasObject((HolonObject) model.getSelectedCpsObjects().get(0), ele);
  83. } else {
  84. addElementIntoCanvasObject((HolonObject) mpC.searchByID(id), ele);
  85. }
  86. }
  87. /**
  88. * Add Element into a Object in Category.
  89. *
  90. * @param category
  91. * the Category
  92. *
  93. * @param object
  94. * the Object
  95. * @param element
  96. * the Element
  97. */
  98. public void addElementIntoCategoryObject(String category, String object, HolonElement element) {
  99. element.setSav(category);
  100. element.setObj(object);
  101. addElement((HolonObject) mpC.searchCatObj(mpC.searchCat(category), object), element);
  102. }
  103. /**
  104. * Add a new Element into a Object in Category.
  105. *
  106. * @param category
  107. * the Category
  108. * @param object
  109. * the Object
  110. * @param element
  111. * the Element Name
  112. * @param energy
  113. * the Energy
  114. * @param amount
  115. * the amount
  116. */
  117. public void addNewElementIntoCategoryObject(String category, String object, String element, int amount,
  118. float energy) {
  119. HolonElement ele = new HolonElement(element, amount, energy);
  120. addElementIntoCategoryObject(category, object, ele);
  121. }
  122. /**
  123. * deletes a Element from a given Object.
  124. *
  125. * @param obj
  126. * the Oject
  127. * @param ele
  128. * the Element
  129. */
  130. public void deleteElement(HolonObject obj, HolonElement ele) {
  131. System.out.println(ele.getEleName() + " and " + obj.getEleIdx());
  132. mpC.decIdx(ele.getEleName(), obj.getEleIdx());
  133. obj.getEleIdx().remove(ele.getEleName());
  134. obj.getElements().remove(ele);
  135. }
  136. /**
  137. * deletes a selectedObject.
  138. *
  139. * @param obj
  140. * Cpsobject
  141. */
  142. public void deleteSelectedObject(AbstractCpsObject obj) {
  143. model.getSelectedCpsObjects().remove(obj);
  144. }
  145. /**
  146. * add an Object to selectedObject.
  147. *
  148. * @param obj
  149. * AbstractCpsobject
  150. */
  151. public void addSelectedObject(AbstractCpsObject obj) {
  152. model.getSelectedCpsObjects().add(obj);
  153. }
  154. /**
  155. * deletes a Element from a given Canvas Object.
  156. *
  157. * @param id
  158. * the ID
  159. * @param eleid
  160. * the Element ID
  161. */
  162. public void deleteElementInCanvas(int id, int eleid) {
  163. HolonObject object = (HolonObject) mpC.searchByID(id);
  164. if (object == null) {
  165. object = (HolonObject) model.getSelectedCpsObjects().get(0);
  166. }
  167. HolonElement element = mpC.searchEleById(object, eleid);
  168. // mpC.searchEle(object, ele);
  169. deleteElement(object, element);
  170. }
  171. /**
  172. * deletes a Element from a given Category Object.
  173. *
  174. * @param cat
  175. * the Category
  176. * @param obj
  177. * the Object
  178. * @param ele
  179. * the Element
  180. */
  181. public void deleteElementInCategory(String cat, String obj, String ele) {
  182. Category category = mpC.searchCat(cat);
  183. HolonObject object = (HolonObject) mpC.searchCatObj(category, obj);
  184. HolonElement element = mpC.searchEle(object, ele);
  185. deleteElement(object, element);
  186. }
  187. /**
  188. * Returns the ID of the selected Object 0 = no Object is selected.
  189. *
  190. * @param id
  191. * the ID of the selected Object
  192. */
  193. public void setSelectedObjectID(int id) {
  194. model.setSelectedObjectID(id);
  195. }
  196. /**
  197. * Get the number of HolonObjects in the given List
  198. *
  199. * @param list
  200. */
  201. public int getNumberHolonObjects(ArrayList<AbstractCpsObject> list) {
  202. int val = 0;
  203. for (AbstractCpsObject obj : list) {
  204. if (obj instanceof HolonObject) {
  205. val++;
  206. } else if (obj instanceof CpsUpperNode) {
  207. val += getNumberHolonObjects(((CpsUpperNode) obj).getNodes());
  208. }
  209. }
  210. return val;
  211. }
  212. /**
  213. * Get the number of HolonObjects with the given state in the given List
  214. *
  215. * @param list
  216. * @param state
  217. */
  218. public int getNumberStateObjects(ArrayList<AbstractCpsObject> list, int state) {
  219. int val = 0;
  220. for (AbstractCpsObject obj : list) {
  221. if (obj instanceof HolonObject) {
  222. if (((HolonObject) obj).getState() == state || (state == 2 && ((HolonObject) obj).getState() == 3)) {
  223. val++;
  224. }
  225. } else if (obj instanceof CpsUpperNode) {
  226. val += getNumberStateObjects(((CpsUpperNode) obj).getNodes(), state);
  227. }
  228. }
  229. return val;
  230. }
  231. /**
  232. * add the ID of a HolonBody.
  233. *
  234. * @param i
  235. * int
  236. */
  237. public void addSelectedHolonBody(int i) {
  238. model.setSelectedHolonBody(i);
  239. }
  240. }