/* ================================================================== * Created [2009-4-27 下午11:32:55] by Jon.King * ================================================================== * TSS * ================================================================== * mailTo:jinpujun@hotmail.com * Copyright (c) Jon.King, 2009-2012 * ================================================================== */ package com.jinhe.tss.um.entity; import java.util.LinkedHashMap; import java.util.Map; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.UniqueConstraint; import com.jinhe.tss.component.dynproperty.support.AbstractDynEntity; import com.jinhe.tss.component.support.persistence.entityaop.IDecodable; import com.jinhe.tss.core.exception.BusinessException; import com.jinhe.tss.core.util.BeanUtil; import com.jinhe.tss.core.web.dispaly.tree.ILevelTreeNode; import com.jinhe.tss.core.web.dispaly.tree.TreeAttributesMap; import com.jinhe.tss.core.web.dispaly.xform.IXForm; import com.jinhe.tss.um.UMConstants; import com.jinhe.tss.um.permission.IResource; /** * 用户组域对象 */ @Entity @Table(name = "um_group", uniqueConstraints = { @UniqueConstraint(name = "MULTI_NAME_GROUP", columnNames = { "parentId", "name" }) }) @SequenceGenerator(name = "group_sequence", sequenceName = "group_sequence", initialValue = 1000, allocationSize = 10) public class Group extends AbstractDynEntity implements ILevelTreeNode, IDecodable, IXForm, IResource { public static final Integer MAIN_GROUP_TYPE = new Integer(1); // 主组类型 public static final Integer ASSISTANT_GROUP_TYPE = new Integer(2); // 辅助组类型 public static final Integer OTHER_GROUP_TYPE = new Integer(3); // 其他应用组类型 public static final Integer SELF_REGISTER_GROUP_TYPE = new Integer(4); // 自注册用户组类型 public static final Integer SELF_REGISTER_GROUP_AUTHEN_TYPE = new Integer(5); // 自注册用户组已认证类型 public static final Integer SELF_REGISTER_GROUP_NOT_AUTHEN_TYPE = new Integer(6); // 自注册用户组未认证类型 public static final String MAIN_GROUP_ENTITY_CODE = "maingroup"; // 主组类型 public static final String ASSISTANT_GROUP_ENTITY_CODE = "assistantgroup"; // 辅助组类型 public static final String OTHER_GROUP_ENTITY_CODE = "othergroup"; // 其他应用组类型 @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "group_sequence") private Long id; // 用户组ID , 用户组主键 private Long parentId; // 父节点ID @Column(nullable = false) private String name; // 组名:用户组名称 private String description; // 描述:用户组信息描述 @Column(nullable = false) private String applicationId; // 应用系统Code private Integer groupType; // 用户组类型(1-主用户组类型,2-辅助组类型,3-其他应用组类型) private Long passwordRuleId;//密码规则Id // 树信息begin private String decode; // 层码 private Integer levelNo; // 层次值 private Integer seqNo; // 序号,用户组编号 private Integer disabled = UMConstants.FALSE; // 停用/启用标记 // 和其他用户管理系统的同步时的对应信息 private String dbGroupId; // 外部应用用户组id:要同步的系统中对应的节点的编号,针对db数据源、ldap数据源的同步中使用 public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getApplicationId() { return applicationId; } public void setApplicationId(String applicationId) { this.applicationId = applicationId; } public String getDbGroupId() { return dbGroupId; } public Long getPasswordRuleId() { return passwordRuleId; } public void setDbGroupId(String dbGroupId) { this.dbGroupId = dbGroupId; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getName() { return name; } public void setName(String groupName) { this.name = groupName; } public Integer getSeqNo() { return seqNo; } public void setSeqNo(Integer seqNo) { this.seqNo = seqNo; } public Integer getDisabled() { return disabled; } public void setDisabled(Integer disabled) { this.disabled = disabled; } public Integer getGroupType() { return groupType; } public void setGroupType(Integer groupType) { this.groupType = groupType; } public Long getParentId() { return parentId; } public void setParentId(Long parentId) { this.parentId = parentId; } public String getDecode() { return decode; } public void setDecode(String decode) { this.decode = decode; } public Integer getLevelNo() { return levelNo; } public void setLevelNo(Integer levelNo) { this.levelNo = levelNo; } public Class<?> getParentClass() { return getClass(); } public String getResourceType() { return Group.getResourceType(this.groupType); } public void setPasswordRuleId(Long passwordRuleId) { this.passwordRuleId = passwordRuleId; } /** * 用户组资源类型进一步可细分为:主组类型资源、辅助组类型资源、其他应用组类型(不补全)资源、自注册用户组类型资源 */ public static String getResourceType(Integer groupType) { String resourceTypeId; if ( Group.MAIN_GROUP_TYPE.equals(groupType) ) { // 主组类型 resourceTypeId = UMConstants.MAINGROUP_RESOURCE_TYPE_ID; } else if ( Group.ASSISTANT_GROUP_TYPE.equals(groupType) ) { // 辅助组类型 resourceTypeId = UMConstants.ASSISTANTGROUP_RESOURCE_TYPE_ID; } else if ( Group.OTHER_GROUP_TYPE.equals(groupType) ) { // 其他应用组类型(不补全) resourceTypeId = UMConstants.OTHERAPPGROUP_RESOURCE_TYPE_ID; } else if ( Group.SELF_REGISTER_GROUP_TYPE.equals(groupType) ) { // 自注册用户组类型 resourceTypeId = UMConstants.MAINGROUP_RESOURCE_TYPE_ID; } else { throw new BusinessException("参数groupType值有误!groupType=" + groupType); } return resourceTypeId; } public String getEntityCode() { if ( Group.MAIN_GROUP_TYPE.equals(groupType)) { // 主组类型 return MAIN_GROUP_ENTITY_CODE; } if ( Group.ASSISTANT_GROUP_TYPE.equals(groupType) ) { // 辅助组类型 return ASSISTANT_GROUP_ENTITY_CODE; } if ( Group.OTHER_GROUP_TYPE.equals(groupType) ) { // 其他应用组类型 return OTHER_GROUP_ENTITY_CODE; } throw new BusinessException("用户组对象的groupType值有误!groupType=" + groupType); } public TreeAttributesMap getAttributes() { TreeAttributesMap map = new TreeAttributesMap(id, name); map.put("parentId", parentId); map.put("disabled", disabled); map.put("dbGroupId", dbGroupId); map.put("groupType", groupType); map.put("applicationId", applicationId); map.put("resourceTypeId", getResourceType()); // 特殊组不显示图标 (特殊组指系统初始化的主用户、辅助用户组、其他用户组等根节点,它们的ID为负值) if (id.longValue() > 0) { if (UMConstants.FALSE.equals(disabled)) { map.put("icon", UMConstants.START_GROUP_TREENODE_ICON); } else { map.put("icon", UMConstants.STOP_GROUP_TREENODE_ICON); } } super.putOperateInfo2Map(map); return map; } public Map<String, Object> getAttributesForXForm() { Map<String, Object> map = new LinkedHashMap<String, Object>(); BeanUtil.addBeanProperties2Map(this, map); map.putAll(super.getDynpropertiesMap()); return map; } public String toString(){ return "(ID:" + this.id + ", Name:" + this.name + ", Decode:" + this.decode + ")"; } }