FilterableGroupNode.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package holeg.ui.view.information;
  2. import holeg.model.*;
  3. public class FilterableGroupNode extends GroupNode {
  4. public FilterableGroupNode() {
  5. super("temp");
  6. }
  7. public void add(AbstractCanvasObject object) {
  8. if (object instanceof HolonObject hObject) {
  9. objectList.add(hObject);
  10. }else if(object instanceof HolonSwitch hSwitch) {
  11. switchList.add(hSwitch);
  12. }else if(object instanceof Node node) {
  13. nodeList.add(node);
  14. }else if(object instanceof GroupNode groupNode) {
  15. groupNodeList.add(groupNode);
  16. }
  17. }
  18. public void remove(AbstractCanvasObject object) {
  19. if (object instanceof HolonObject hObject) {
  20. objectList.remove(hObject);
  21. }else if(object instanceof HolonSwitch hSwitch) {
  22. switchList.remove(hSwitch);
  23. }else if(object instanceof Node node) {
  24. nodeList.remove(node);
  25. }else if(object instanceof GroupNode groupNode) {
  26. groupNodeList.remove(groupNode);
  27. }
  28. }
  29. //
  30. // // Returns the amount of holons and count himself
  31. // public int getAmountOfGroupNodes() {
  32. // return groupNodeList.stream().map(groupNode -> groupNode.getAmountOfGroupNodes()).reduce(1, Integer::sum);
  33. // }
  34. //
  35. // public Stream<Flexibility> getFlexibilitiesStream(Predicate<DecoratedHolonObject> stateFilter,
  36. // Predicate<HolonElement> priorityFilter) {
  37. //
  38. // Stream<Flexibility> flexInChildGorupNode = this.groupNodeList.stream()
  39. // .flatMap(groupNode -> groupNode.getFlexibilitiesStream(stateFilter, priorityFilter));
  40. //
  41. // Stream<Flexibility> flexInThisGorupNode = objectStream().filter(stateFilter).flatMap(object -> object.getModel()
  42. // .getElements().filter(priorityFilter).flatMap(ele -> ele.flexList.stream()));
  43. //
  44. // return Stream.concat(flexInChildGorupNode, flexInThisGorupNode);
  45. // }
  46. //
  47. // public Stream<DecoratedHolonObject> objectStream() {
  48. // return Stream.concat(Stream.concat(this.consumerList.stream(), this.supplierList.stream()),
  49. // this.passivList.stream());
  50. // }
  51. //
  52. // // Gather Informations:
  53. // public int getAmountOfSupplier(Predicate<DecoratedHolonObject> stateFilter) {
  54. // return (int) supplierList.stream().filter(stateFilter).count() + groupNodeList.stream()
  55. // .map(groupNode -> groupNode.getAmountOfSupplier(stateFilter)).reduce(0, Integer::sum);
  56. // }
  57. //
  58. // public int getAmountOfConsumer(Predicate<DecoratedHolonObject> stateFilter) {
  59. // return (int) consumerList.stream().filter(stateFilter).count() + groupNodeList.stream()
  60. // .map(groupNode -> groupNode.getAmountOfConsumer(stateFilter)).reduce(0, Integer::sum);
  61. // }
  62. //
  63. // public int getAmountOfPassiv(Predicate<DecoratedHolonObject> stateFilter) {
  64. // return (int) passivList.stream().filter(stateFilter).count() + groupNodeList.stream()
  65. // .map(groupNode -> groupNode.getAmountOfPassiv(stateFilter)).reduce(0, Integer::sum);
  66. // }
  67. //
  68. // public int getAmountOfConsumerWithState(Predicate<DecoratedHolonObject> stateFilter, HolonObjectState state) {
  69. // return ((int) consumerList.stream().filter(stateFilter).map(con -> con.getState())
  70. // .filter(rightState -> (rightState == state)).count())
  71. // + groupNodeList.stream().map(groupNode -> groupNode.getAmountOfConsumerWithState(stateFilter, state))
  72. // .reduce(0, Integer::sum);
  73. // }
  74. //
  75. // public PriorityCounts getPriorityCounts(Predicate<DecoratedHolonObject> stateFilter) {
  76. // PriorityCounts priority = new PriorityCounts();
  77. // objectStream().filter(stateFilter)
  78. // .forEach(object -> object.getModel().getElements().forEach(ele -> priority.count(ele)));
  79. // groupNodeList.stream().forEach(groupNode -> priority.add(groupNode.getPriorityCounts(stateFilter)));
  80. // return priority;
  81. // }
  82. //
  83. // public int getAmountOfElementsFromHolonObjects(Predicate<DecoratedHolonObject> stateFilter,
  84. // Predicate<HolonElement> priorityFilter) {
  85. // return objectStream().filter(stateFilter)
  86. // .map(object -> (int) object.getModel().getElements().filter(priorityFilter).count())
  87. // .reduce(0, Integer::sum)
  88. // + groupNodeList.stream()
  89. // .map(groupNode -> groupNode.getAmountOfElementsFromHolonObjects(stateFilter, priorityFilter))
  90. // .reduce(0, Integer::sum);
  91. // }
  92. //
  93. // public int getAmountOfAktiveElementsFromHolonObjects(Predicate<DecoratedHolonObject> stateFilter,
  94. // Predicate<HolonElement> priorityFilter) {
  95. // return objectStream().filter(stateFilter)
  96. // .map(object -> (int) object.getModel().getElements().filter(priorityFilter).count())
  97. // .reduce(0, Integer::sum)
  98. // + groupNodeList.stream().map(
  99. // groupNode -> groupNode.getAmountOfAktiveElementsFromHolonObjects(stateFilter, priorityFilter))
  100. // .reduce(0, Integer::sum);
  101. // }
  102. //
  103. // public float getConsumption(Predicate<DecoratedHolonObject> stateFilter, Predicate<HolonElement> priorityFilter) {
  104. // return ((Stream<DecoratedHolonObject>) Stream.concat(this.consumerList.stream(), supplierList.stream()))
  105. // .filter(stateFilter)
  106. // .map(con -> con.getModel().getElements()
  107. // .filter(priorityFilter.and(ele -> ele.getActualEnergy() < 0))
  108. // .map(ele -> -ele.getActualEnergy()).reduce(0.0f, Float::sum))
  109. // .reduce(0.f, Float::sum)
  110. // + groupNodeList.stream().map(groupNode -> groupNode.getConsumption(stateFilter, priorityFilter))
  111. // .reduce(0.f, Float::sum);
  112. // }
  113. //
  114. // public float getProduction(Predicate<DecoratedHolonObject> stateFilter, Predicate<HolonElement> priorityFilter) {
  115. // return ((Stream<DecoratedHolonObject>) Stream.concat(this.consumerList.stream(), supplierList.stream()))
  116. // .filter(stateFilter)
  117. // .map(con -> con.getModel().getElements()
  118. // .filter(priorityFilter.and(ele -> ele.getActualEnergy() > 0))
  119. // .map(ele -> ele.getActualEnergy()).reduce(0.0f, Float::sum))
  120. // .reduce(0.f, Float::sum)
  121. // + groupNodeList.stream().map(groupNode -> groupNode.getProduction(stateFilter, priorityFilter))
  122. // .reduce(0.f, Float::sum);
  123. // }
  124. }