package com.jspxcms.core.domain; import java.math.BigInteger; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OrderBy; import javax.persistence.Table; import javax.persistence.TableGenerator; import javax.persistence.Transient; import org.apache.commons.lang3.StringUtils; /** * Org * * @author liufang * */ @Entity @Table(name = "cms_org") public class Org implements java.io.Serializable { private static final long serialVersionUID = 1L; /** * 树编码长度 */ public static int TREE_NUMBER_LENGTH = 4; @Transient public static String long2hex(long num) { BigInteger big = BigInteger.valueOf(num); String hex = big.toString(Character.MAX_RADIX); return StringUtils.leftPad(hex, TREE_NUMBER_LENGTH, '0'); } @Transient public static long hex2long(String hex) { BigInteger big = new BigInteger(hex, Character.MAX_RADIX); return big.longValue(); } @Transient public String getDisplayName() { StringBuilder sb = new StringBuilder(); Org org = this; sb.append(org.getName()); org = org.getParent(); while (org != null) { sb.insert(0, " - "); sb.insert(0, org.getName()); org = org.getParent(); } return sb.toString(); } @Transient public long getTreeMaxLong() { BigInteger big = new BigInteger(getTreeMax(), Character.MAX_RADIX); return big.longValue(); } @Transient public void addChild(Org bean) { Set<Org> set = getChildren(); if (set == null) { set = new HashSet<Org>(); setChildren(set); } set.add(bean); } @Transient public void applyDefaultValue() { } private Integer id; private Set<Org> children = new HashSet<Org>(); private Org parent; private String name; private String fullName; private String description; private String phone; private String fax; private String address; private String number; private String treeNumber; private Integer treeLevel; private String treeMax; @Id @Column(name = "f_org_id", unique = true, nullable = false) @TableGenerator(name = "tg_cms_org", pkColumnValue = "cms_org", table = "t_id_table", pkColumnName = "f_table", valueColumnName = "f_id_value", initialValue = 1, allocationSize = 1) @GeneratedValue(strategy = GenerationType.TABLE, generator = "tg_cms_org") public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @OneToMany(fetch = FetchType.LAZY, mappedBy = "parent") @OrderBy(value = "treeNumber asc, id asc") public Set<Org> getChildren() { return this.children; } public void setChildren(Set<Org> children) { this.children = children; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "f_parent_id") public Org getParent() { return this.parent; } public void setParent(Org parent) { this.parent = parent; } @Column(name = "f_name", nullable = false, length = 150) public String getName() { return this.name; } public void setName(String name) { this.name = name; } @Column(name = "f_full_name", length = 150) public String getFullName() { return this.fullName; } public void setFullName(String fullName) { this.fullName = fullName; } @Column(name = "f_description") public String getDescription() { return this.description; } public void setDescription(String description) { this.description = description; } @Column(name = "f_phone", length = 100) public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } @Column(name = "f_fax", length = 100) public String getFax() { return fax; } public void setFax(String fax) { this.fax = fax; } @Column(name = "f_address") public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Column(name = "f_number", length = 100) public String getNumber() { return this.number; } public void setNumber(String number) { this.number = number; } @Column(name = "f_tree_number", nullable = false, length = 100) public String getTreeNumber() { return this.treeNumber; } public void setTreeNumber(String treeNumber) { this.treeNumber = treeNumber; } @Column(name = "f_tree_level", nullable = false) public Integer getTreeLevel() { return this.treeLevel; } public void setTreeLevel(Integer treeLevel) { this.treeLevel = treeLevel; } @Column(name = "f_tree_max", nullable = false, length = 10) public String getTreeMax() { return this.treeMax; } public void setTreeMax(String treeMax) { this.treeMax = treeMax; } }