Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. public class Category extends AbstractEntity<Integer> {
  2.  
  3. @ManyToOne(cascade = { CascadeType.ALL, CascadeType.REMOVE })
  4. @JoinColumn(name = "parentCategory_id")
  5. private Category parentCategory;
  6.  
  7. @OneToMany(mappedBy = "parentCategory", fetch = FetchType.EAGER)
  8. private Set<Category> subcategories;
  9. private String name;
  10.  
  11. @OneToMany(cascade = { CascadeType.ALL, CascadeType.REMOVE }, fetch = FetchType.EAGER)
  12. private List<Item> items;
  13.  
  14. public Category(String name) {
  15. this.subcategories = new HashSet<>();
  16. this.name = name;
  17. this.items = new ArrayList<>();
  18. }
  19. ...
  20. }
  21.  
  22. public void initialize(URL paramURL, ResourceBundle paramResourceBundle) {
  23.  
  24. List<Category> categoriesAll = categoryDao.findAll();
  25.  
  26. categories.getSelectionModel().selectedItemProperty()
  27. .addListener((ObservableValue<? extends Category> observable, Category oldValue, Category newValue) -> {
  28.  
  29. });
  30.  
  31. categories.getItems().addAll(FXCollections.observableArrayList(categoriesAll));
  32.  
  33. TreeItem<String> rootNode = new TreeItem<>("Categories");
  34. rootNode.setExpanded(true);
  35.  
  36. List<Category> superCategories = categoriesAll.stream().filter(category -> !category.hasParentCategory())
  37. .collect(Collectors.toList());
  38.  
  39. Map<Category, TreeItem<String>> nodesMap = new HashMap<>();
  40. for (Category cat : superCategories) {
  41. TreeItem<String> leaf = new TreeItem<String>(cat.getName());
  42. addTreeItems(0, cat, nodesMap);
  43. rootNode.getChildren().add(leaf);
  44. }
  45.  
  46. rootNode.getChildren().get(0).getChildren().add(nodesMap.entrySet().stream()
  47. .filter(entry -> entry.getKey().getName().equals("automotive")).findFirst().get().getValue());
  48.  
  49. categoriesTree.setRoot(rootNode);
  50.  
  51. }
  52.  
  53. public void addTreeItems(int index, Category category, Map<Category, TreeItem<String>> nodesMap) {
  54. // System.out.println(index + " " + category.getName());
  55. nodesMap.put(category, new TreeItem<String>(category.getName()));
  56. List<TreeItem<String>> childrenCategories = category.getSubcategories().stream()
  57. .map(c -> new TreeItem<String>(c.getName())).collect(Collectors.toList());
  58. nodesMap.get(category).getChildren().addAll(childrenCategories);
  59. category.getSubcategories().forEach(cat -> addTreeItems(index + 1, cat, nodesMap));
  60. }
  61.  
  62. automotive
  63. |_tires and rims
  64. |_auto parts
  65. |_cars
  66. |_car workshop equipment
  67.  
  68. automotive
  69. |_tires and rims
  70. | |_winter tires
  71. | |_summer tires
  72. |_auto parts
  73. |_cars
  74. | |_audi
  75. | | |_a4
  76. | |_nissan
  77. | |_gtr
  78. |_car workshop equipment
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement