MultiPurposeController.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package ui.controller;
  2. import java.util.HashMap;
  3. import java.util.Map.Entry;
  4. import classes.Category;
  5. import classes.CpsEdge;
  6. import classes.AbstractCpsObject;
  7. import classes.HolonElement;
  8. import classes.HolonObject;
  9. import ui.model.Model;
  10. public class MultiPurposeController {
  11. private Model MODEL;
  12. public MultiPurposeController(Model model) {
  13. this.MODEL = model;
  14. }
  15. /**
  16. * search for category
  17. *
  18. * @param name
  19. * @return
  20. */
  21. public Category searchCat(String category) {
  22. Integer idx;
  23. if ((idx = MODEL.getCgIdx().get(category)) == null || MODEL.getCgIdx().size() < 1)
  24. return null;
  25. else
  26. return MODEL.getCategories().get(idx);
  27. }
  28. /**
  29. * Search for Object
  30. *
  31. * @param object
  32. * @param list
  33. * @return
  34. */
  35. public AbstractCpsObject searchCatObj(Category category, String object) {
  36. Integer idx;
  37. if ((idx = category.getObjIdx().get(object)) == null || category.getObjIdx().size() < 1)
  38. return null;
  39. else
  40. return category.getObjects().get(idx);
  41. }
  42. /**
  43. * Search for Object by ID
  44. *
  45. * @param ID
  46. * @param list
  47. * @return
  48. */
  49. public AbstractCpsObject searchByID(int ID) {
  50. Integer idx;
  51. if ((idx = MODEL.getCvsObjIdx().get(ID)) == null || MODEL.getCvsObjIdx().size() < 1)
  52. return null;
  53. else
  54. return MODEL.getObjectsOnCanvas().get(idx);
  55. }
  56. /**
  57. * Search for Element
  58. *
  59. * @param object
  60. * @param element
  61. * @return
  62. */
  63. public HolonElement searchEle(HolonObject object, String element) {
  64. Integer idx;
  65. if ((idx = object.getEleIdx().get(element)) == null || object.getEleIdx().size() < 1)
  66. return null;
  67. else
  68. return object.getElements().get(idx);
  69. }
  70. public HolonElement searchEleById(HolonObject object, int idEle) {
  71. return object.searchElementById(idEle);
  72. }
  73. public CpsEdge searchEdge(int a, int b) {
  74. AbstractCpsObject A = searchByID(a);
  75. AbstractCpsObject B = searchByID(b);
  76. for (CpsEdge edge : MODEL.getEdgesOnCanvas()) {
  77. // if (edge.getA().getObjName().equals(A.getObjName()) &&
  78. // (edge.getB().getObjName().equals(B.getObjName()))
  79. // || edge.getB().getObjName().equals(A.getObjName())
  80. // && (edge.getA().getObjName().equals(B.getObjName())))
  81. if ((edge.getA().equals(A) && edge.getB().equals(B)) || (edge.getB().equals(A)) && edge.getA().equals(B))
  82. return edge;
  83. }
  84. return null;
  85. }
  86. /**
  87. * Decrement the Indices if a Key as been removed
  88. *
  89. * @param key
  90. * @param map
  91. */
  92. public <T> void decIdx(T key, HashMap<T, Integer> map) {
  93. for (Entry<T, Integer> i : map.entrySet()) {
  94. if (i.getValue() > map.get(key))
  95. i.setValue(i.getValue() - 1);
  96. }
  97. }
  98. /**
  99. * Copies a HashMap into a new One
  100. *
  101. * @param map
  102. * @return
  103. */
  104. public static <T, Integer> HashMap<T, Integer> copyHashMap(HashMap<T, Integer> map) {
  105. HashMap<T, Integer> newMap = new HashMap<>();
  106. for (Entry<T, Integer> i : map.entrySet()) {
  107. newMap.put(i.getKey(), i.getValue());
  108. }
  109. return newMap;
  110. }
  111. }