package open.dolphin.infomodel;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.*;
/**
* UserModel
*
* @author Minagawa,Kazushi
*
*/
@Entity
@Table(name="d_users")
public class UserModel extends InfoModel implements java.io.Serializable {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private long id;
/** composite businnes key */
@Column(nullable=false, unique=true)
private String userId;
@Column(nullable=false)
private String password;
private String sirName;
private String givenName;
@Column(nullable=false)
private String commonName;
@Embedded
private LicenseModel licenseModel;
@Embedded
private DepartmentModel departmentValue;
@Column(nullable=false)
private String memberType;
private String memo;
@Column(nullable=false)
@Temporal(value = TemporalType.DATE)
private Date registeredDate;
@Column(nullable=false)
private String email;
@ManyToOne
@JoinColumn(name="facility_id", nullable=false)
private FacilityModel facility;
@OneToMany(mappedBy="user", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
private List<RoleModel> roles;
private String orcaId;
// ヒロクリニック^
/** 麻薬施用者免許証番号 */
// @001 2009/09/10 仕様追加:処方せん備考欄に麻薬施用者を表記する必要があるため、ユーザ登録の項目として麻薬施用者免許証番号を追加
private String useDrugId;
// ヒロクリニック$
//minagawa^ 2段階認証
private String factor2Auth;
private String mainMobile;
private String subMobile;
//minagawa$
/**
* UserModelオブジェクトを生成する。
*/
public UserModel(){
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
/**
* 施設IDを除いたIDを返す。
* @return 施設IDを除いたID
*/
public String idAsLocal() {
int index = userId.indexOf(COMPOSITE_KEY_MAKER);
return userId.substring(index+1);
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSirName() {
return sirName;
}
public void setSirName(String sirName) {
this.sirName = sirName;
}
public String getGivenName() {
return givenName;
}
public void setGivenName(String givenName) {
this.givenName = givenName;
}
public String getCommonName() {
return commonName;
}
public void setCommonName(String commonName) {
this.commonName = commonName;
}
public LicenseModel getLicenseModel() {
return licenseModel;
}
public void setLicenseModel(LicenseModel licenseValue) {
this.licenseModel = licenseValue;
}
public FacilityModel getFacilityModel() {
return facility;
}
public void setFacilityModel(FacilityModel facility) {
this.facility = facility;
}
public DepartmentModel getDepartmentModel() {
return departmentValue;
}
public void setDepartmentModel(DepartmentModel departmentValue) {
this.departmentValue = departmentValue;
}
public List<RoleModel> getRoles() {
return roles;
}
public void setRoles(List<RoleModel> roles) {
this.roles = roles;
}
/**
* ユーザロールを追加する。
* @param value ユーザロール
*/
public void addRole(RoleModel value) {
if (roles == null) {
roles = new ArrayList<>(1);
}
roles.add(value);
}
/**
* 簡易ユーザ情報を返す。
* @return 簡易ユーザ情報
*/
public UserLiteModel getLiteModel() {
UserLiteModel model = new UserLiteModel();
model.setUserId(getUserId());
model.setCommonName(getCommonName());
LicenseModel lm = new LicenseModel();
lm.setLicense(getLicenseModel().getLicense());
lm.setLicenseDesc(getLicenseModel().getLicenseDesc());
lm.setLicenseCodeSys(getLicenseModel().getLicenseCodeSys());
model.setLicenseModel(lm);
return model;
}
public String getMemberType() {
return memberType;
}
public void setMemberType(String memberType) {
this.memberType = memberType;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
public Date getRegisteredDate() {
return registeredDate;
}
public void setRegisteredDate(Date registeredDate) {
this.registeredDate = registeredDate;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getOrcaId() {
return orcaId;
}
public void setOrcaId(String orcaId) {
this.orcaId = orcaId;
}
@Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = PRIME * result + (int) (id ^ (id >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final UserModel other = (UserModel) obj;
if (id != other.id) {
return false;
}
return true;
}
// ヒロクリニック^
/**
* 麻薬施用者免許証番号を返す。 @001 2009/09/10
* @return 麻薬施用者免許証番号
*/
public String getUseDrugId() {
return useDrugId;
}
/**
* 麻薬施用者免許証番号を設定する。 @001 2009/09/10
* @param useDrugId 麻薬施用者免許証番号
*/
public void setUseDrugId(String useDrugId) {
this.useDrugId = useDrugId;
}
// ヒロクリニック$
/**
* @return the factor2Auth
*/
public String getFactor2Auth() {
return factor2Auth;
}
/**
* @param factor2Auth the factor2Auth to set
*/
public void setFactor2Auth(String factor2Auth) {
this.factor2Auth = factor2Auth;
}
/**
* @return the mainMobile
*/
public String getMainMobile() {
return mainMobile;
}
/**
* @param mainMobile the mainMobile to set
*/
public void setMainMobile(String mainMobile) {
this.mainMobile = mainMobile;
}
/**
* @return the subMobile
*/
public String getSubMobile() {
return subMobile;
}
/**
* @param subMobile the subMobile to set
*/
public void setSubMobile(String subMobile) {
this.subMobile = subMobile;
}
}