Model.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package holeg.model;
  2. import java.util.HashSet;
  3. import java.util.List;
  4. import java.util.Set;
  5. import java.util.logging.Logger;
  6. import java.util.stream.Collectors;
  7. /**
  8. * The Class Model is the class where everything is saved. All changes made to
  9. * the Data is managed via a controller.
  10. *
  11. * @author Gruppe14
  12. */
  13. public class Model {
  14. private static final Logger log = Logger.getLogger(Model.class.getName());
  15. private GroupNode canvas = new GroupNode("Canvas");
  16. public transient Set<Holon> holons = new HashSet<>();
  17. /** the amount of iterations */
  18. private int currentIteration = 0;
  19. private int maxIterations = 100;
  20. private Set<Edge> edgesOnCanvas = new HashSet<>();
  21. public Model() {
  22. log.fine("Init Model");
  23. }
  24. public GroupNode getCanvas() {
  25. return canvas;
  26. }
  27. public Set<Edge> getEdgesOnCanvas() {
  28. return edgesOnCanvas;
  29. }
  30. public void addEdgeOnCanvas(Edge edge) {
  31. this.edgesOnCanvas.add(edge);
  32. }
  33. public void removeEdgesOnCanvas(Edge edge) {
  34. this.edgesOnCanvas.remove(edge);
  35. }
  36. public int getMaxIterations() {
  37. return maxIterations;
  38. }
  39. public int getCurrentIteration() {
  40. return currentIteration;
  41. }
  42. public void setCurrentIteration(int value) {
  43. this.currentIteration = value;
  44. }
  45. public List<HolonElement> getAllHolonElements() {
  46. return canvas.getAllHolonObjectsRecursive().flatMap(HolonObject::elementsStream).collect(Collectors.toList());
  47. }
  48. public List<Flexibility> getAllFlexibilities() {
  49. return canvas.getAllHolonObjectsRecursive().flatMap(hO -> hO.elementsStream().flatMap(ele -> ele.flexList.stream())).collect(Collectors.toList());
  50. }
  51. public void reset() {
  52. resetFlexibilities();
  53. resetEdges();
  54. }
  55. private void resetFlexibilities() {
  56. getAllFlexibilities().forEach(Flexibility::reset);
  57. }
  58. private void resetEdges() {
  59. this.getEdgesOnCanvas().forEach(Edge::reset);
  60. }
  61. public void setIterations(int iterations) {
  62. this.maxIterations = iterations;
  63. }
  64. public void clear() {
  65. this.edgesOnCanvas.clear();
  66. canvas.clear();
  67. }
  68. public void setCanvas(GroupNode canvas) {
  69. this.canvas = canvas;
  70. }
  71. public void setEdgesOnCanvas(Set<Edge> edgesOnCanvas) {
  72. this.edgesOnCanvas = edgesOnCanvas;
  73. }
  74. }