Skip to content

Instantly share code, notes, and snippets.

@michail-nikolaev
Created October 5, 2012 16:55
Show Gist options
  • Select an option

  • Save michail-nikolaev/3840973 to your computer and use it in GitHub Desktop.

Select an option

Save michail-nikolaev/3840973 to your computer and use it in GitHub Desktop.

Revisions

  1. Michail NIkolaev revised this gist Oct 5, 2012. 1 changed file with 12 additions and 0 deletions.
    12 changes: 12 additions & 0 deletions gistfile1.java
    Original file line number Diff line number Diff line change
    @@ -59,4 +59,16 @@ public TreeCategory addChild(TreeCategory TreeCategory, String name, TreeCategor
    return TreeCategory.getChildren().get(TreeCategory.getChildren().size() - 1);
    }

    public void toIndex(String id, Long index) {
    TreeCategory treeCategory = dao.getById(Long.parseLong(id));
    TreeCategory parent = treeCategory.getParent();
    if (parent != null) {
    if (parent.getChildren().indexOf(treeCategory ) != index) {
    parent.getChildren().remove(treeCategory );
    parent.getChildren().add(index.intValue(), treeCategory );
    dao.update(parent);
    }
    }
    }

    // tested on Hibernate 4.1.4.Final
  2. Michail NIkolaev created this gist Oct 5, 2012.
    62 changes: 62 additions & 0 deletions gistfile1.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,62 @@
    @Entity
    public class TreeCategory extends IdentifiableEntity {
    ....

    @ManyToOne(optional = true)
    @JoinColumn(name = "parent_id", referencedColumnName = "id")
    public TreeCategory getParent() {
    return parent;
    }

    public void setParent(TreeCategory parent) {
    this.parent = parent;
    }
    ...

    @OrderColumn(name = "position")
    @OneToMany(
    cascade = {CascadeType.ALL},
    orphanRemoval = true
    )
    @JoinColumn(name = "parent_id")
    public List<TreeCategory> getChildren() {
    return children;
    }

    public void setChildren(List<TreeCategory> children) {
    this.children = children;
    }

    ...

    // Operations:
    public void move(TreeNode node, TreeNode newParent, TreeNode oldParent) {
    TreeCategory TreeCategory = dao.getById(Long.parseLong(node.getId()));
    TreeCategory newParentCategory = dao.getById(Long.parseLong(newParent.getId()));
    TreeCategory oldParentCategory = dao.getById(Long.parseLong(oldParent.getId()));

    TreeCategory.setParent(newParentCategory);
    newParentCategory.getChildren().add(TreeCategory);
    oldParentCategory.getChildren().remove(TreeCategory);

    dao.update(oldParentCategory);
    dao.update(newParentCategory);
    dao.update(TreeCategory);
    }

    public void delete(TreeCategory entity) {
    entity.getParent().getChildren().remove(entity);
    update(entity.getParent());
    }

    public TreeCategory addChild(TreeCategory TreeCategory, String name, TreeCategory.Type type) {
    TreeCategory child = new TreeCategory();
    child.setName(name);
    child.setType(type);
    child.setParent(TreeCategory);
    TreeCategory.getChildren().add(child);
    TreeCategory = update(TreeCategory);
    return TreeCategory.getChildren().get(TreeCategory.getChildren().size() - 1);
    }

    // tested on Hibernate 4.1.4.Final