package org.exitsoft.showcase.vcsadmin.entity.account;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.exitsoft.common.utils.CollectionUtils;
import org.exitsoft.showcase.vcsadmin.common.SystemVariableUtils;
import org.exitsoft.showcase.vcsadmin.common.enumeration.SystemDictionaryCode;
import org.exitsoft.showcase.vcsadmin.common.enumeration.entity.State;
import org.exitsoft.showcase.vcsadmin.entity.UniversallyUniqueIdentifier;
import org.hibernate.annotations.NamedQuery;
/**
* 用户类
* @author vincent
*
*/
@Entity
@Table(name="TB_USER")
@SuppressWarnings("serial")
@NamedQuery(name=User.UpdatePassword,query="update User u set u.password = ?1 where u.id = ?2")
public class User extends UniversallyUniqueIdentifier{
/**
* 更新用户密码NamedQuery
*/
public static final String UpdatePassword = "updatePassword";
//登录名称
private String username;
//登录密码
private String password;
//真实名称
private String realname;
//状态
private Integer state;
//邮件
private String email;
//用户所在的组
private List<Group> groupsList = new ArrayList<Group>();
/**
* 构造方法
*/
public User() {
}
/**
* 获取登录名称
*
* @return String
*/
@Column(length=64,unique=true,nullable=false,updatable=false)
public String getUsername() {
return username;
}
/**
* 设置登录名称
*
* @param username 登录名称
*/
public void setUsername(String username) {
this.username = username;
}
/**
* 获取登录密码
*
* @return String
*/
@Column(nullable=false,length=32,updatable=false)
public String getPassword() {
return password;
}
/**
* 设置登录密码
*
* @param password 登录密码
*/
public void setPassword(String password) {
this.password = password;
}
/**
* 获取真实姓名
*
* @return String
*/
@Column(length=128,nullable=false)
public String getRealname() {
return realname;
}
/**
* 设置真实名称
*
* @param realName 真实姓名
*/
public void setRealname(String realname) {
this.realname = realname;
}
/**
* 获取用户状态
*
* @return {@link State}
*/
@Column(nullable=false)
public Integer getState() {
return state;
}
/**
* 设置用户状态
*
* @param state 用户状态
*/
public void setState(Integer state) {
this.state = state;
}
/**
* 获取邮件
* @return String
*/
@Column(length=256)
public String getEmail() {
return email;
}
/**
* 设置邮件
* @param email 邮件地址
*/
public void setEmail(String email) {
this.email = email;
}
/**
* 获取该用户所在的组
*
* @return List
*/
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name = "TB_GROUP_USER", joinColumns = { @JoinColumn(name = "FK_USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "FK_GROUP_ID") })
public List<Group> getGroupsList() {
return groupsList;
}
/**
* 设置用户所在的组
*
* @param groupsList 组集合
*/
public void setGroupsList(List<Group> groupsList) {
this.groupsList = groupsList;
}
/**
* 获取状态名称
*
* @return String
*/
@Transient
public String getStateName() {
return SystemVariableUtils.getDictionaryNameByValue(SystemDictionaryCode.State, this.state);
}
/**
* 获取所在组所用名称
*
* @return String
*/
@Transient
public String getGroupNames() {
return CollectionUtils.extractToString(this.groupsList, "name", ",");
}
public String toString() {
return username;
}
}