Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Category extends AbstractEntity<Integer> {
- @ManyToOne(cascade = { CascadeType.ALL, CascadeType.REMOVE })
- @JoinColumn(name = "parentCategory_id")
- private Category parentCategory;
- @OneToMany(mappedBy = "parentCategory", fetch = FetchType.EAGER)
- private Set<Category> subcategories;
- private String name;
- @OneToMany(cascade = { CascadeType.ALL, CascadeType.REMOVE }, fetch = FetchType.EAGER)
- private List<Item> items;
- public Category(String name) {
- this.subcategories = new HashSet<>();
- this.name = name;
- this.items = new ArrayList<>();
- }
- ...
- }
- public void initialize(URL paramURL, ResourceBundle paramResourceBundle) {
- List<Category> categoriesAll = categoryDao.findAll();
- categories.getSelectionModel().selectedItemProperty()
- .addListener((ObservableValue<? extends Category> observable, Category oldValue, Category newValue) -> {
- });
- categories.getItems().addAll(FXCollections.observableArrayList(categoriesAll));
- TreeItem<String> rootNode = new TreeItem<>("Categories");
- rootNode.setExpanded(true);
- List<Category> superCategories = categoriesAll.stream().filter(category -> !category.hasParentCategory())
- .collect(Collectors.toList());
- Map<Category, TreeItem<String>> nodesMap = new HashMap<>();
- for (Category cat : superCategories) {
- TreeItem<String> leaf = new TreeItem<String>(cat.getName());
- addTreeItems(0, cat, nodesMap);
- rootNode.getChildren().add(leaf);
- }
- rootNode.getChildren().get(0).getChildren().add(nodesMap.entrySet().stream()
- .filter(entry -> entry.getKey().getName().equals("automotive")).findFirst().get().getValue());
- categoriesTree.setRoot(rootNode);
- }
- public void addTreeItems(int index, Category category, Map<Category, TreeItem<String>> nodesMap) {
- // System.out.println(index + " " + category.getName());
- nodesMap.put(category, new TreeItem<String>(category.getName()));
- List<TreeItem<String>> childrenCategories = category.getSubcategories().stream()
- .map(c -> new TreeItem<String>(c.getName())).collect(Collectors.toList());
- nodesMap.get(category).getChildren().addAll(childrenCategories);
- category.getSubcategories().forEach(cat -> addTreeItems(index + 1, cat, nodesMap));
- }
- automotive
- |_tires and rims
- |_auto parts
- |_cars
- |_car workshop equipment
- automotive
- |_tires and rims
- | |_winter tires
- | |_summer tires
- |_auto parts
- |_cars
- | |_audi
- | | |_a4
- | |_nissan
- | |_gtr
- |_car workshop equipment
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement