package net.techreadiness.persistence.domain;
import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
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.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import net.techreadiness.persistence.AuditedBaseEntityWithExt;
import net.techreadiness.persistence.BaseEntity;
import net.techreadiness.persistence.ServiceObjectMapped;
import net.techreadiness.service.object.BaseObject;
import net.techreadiness.service.object.User;
import org.apache.commons.lang3.StringUtils;
import com.google.common.base.Objects;
/**
* The persistent class for the user database table.
*
*/
@Entity
@Table(name = "user")
public class UserDO extends AuditedBaseEntityWithExt implements Serializable, ServiceObjectMapped {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id", unique = true, nullable = false)
private Long userId;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "active_begin_date")
private Date activeBeginDate;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "active_end_date")
private Date activeEndDate;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "delete_date")
private Date deleteDate;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "disable_date")
private Date disableDate;
@Column(name = "disable_reason", length = 1000)
private String disableReason;
@Column(length = 100)
private String email;
@Column(name = "first_name", length = 50)
private String firstName;
@Column(name = "last_name", length = 50)
private String lastName;
@Column(nullable = false, length = 100)
private String username;
@Column(name = "reset_token_1", length = 100)
private String resetToken1;
@Column(name = "reset_token_2", length = 100)
private String resetToken2;
@Column(name = "reset_token_3", length = 100)
private String resetToken3;
@Column(name = "reset_token_4", length = 100)
private String resetToken4;
@Column(name = "reset_token_5", length = 100)
private String resetToken5;
// bi-directional many-to-one association to ScopeDO
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "scope_id", nullable = false)
private ScopeDO scope;
// bi-directional many-to-one association to ScopeDO
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "selected_scope_id")
private ScopeDO selectedScope;
// bi-directional many-to-one association to UserExtDO
@OneToMany(mappedBy = "user")
private Set<UserExtDO> userExts;
// bi-directional many-to-one association to UserOrgDO
@OneToMany(mappedBy = "user")
private Set<UserOrgDO> userOrgs;
// bi-directional many-to-one association to UserRoleDO
@OneToMany(mappedBy = "user")
private Set<UserRoleDO> userRoles;
public UserDO() {
}
@Override
protected void populateExtAttributes() {
Map<String, String> map = new HashMap<>();
if (userExts != null && userExts.size() > 0) {
for (UserExtDO userExtDO : userExts) {
map.put(userExtDO.getEntityField().getCode(), userExtDO.getValue());
}
}
this.setExtAttributes(map);
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getActiveBeginDateString() {
return userDateFormatter(activeBeginDate);
}
public void setActiveBeginDateString(String date) {
activeBeginDate = userDateParser(date);
}
public Date getActiveBeginDate() {
return activeBeginDate;
}
public void setActiveBeginDate(Date activeBeginDate) {
this.activeBeginDate = activeBeginDate;
}
public String getActiveEndDateString() {
return userDateFormatter(activeEndDate);
}
public void setActiveEndDateString(String date) {
activeEndDate = userDateParser(date);
}
public Date getActiveEndDate() {
return activeEndDate;
}
public void setActiveEndDate(Date activeEndDate) {
this.activeEndDate = activeEndDate;
}
public String getDeleteDateString() {
return userDateFormatter(deleteDate);
}
public void setDeleteDateString(String date) {
deleteDate = userDateParser(date);
}
public Date getDeleteDate() {
return deleteDate;
}
public void setDeleteDate(Date deleteDate) {
this.deleteDate = deleteDate;
}
public String getDisableDateString() {
return userDateFormatter(disableDate);
}
public void setDisableDateString(String date) {
disableDate = userDateParser(date);
}
public Date getDisableDate() {
return disableDate;
}
public void setDisableDate(Date disableDate) {
this.disableDate = disableDate;
}
public String getDisableReason() {
return disableReason;
}
public void setDisableReason(String disableReason) {
this.disableReason = disableReason;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public ScopeDO getScope() {
return scope;
}
public void setScope(ScopeDO scope) {
this.scope = scope;
}
public Set<UserExtDO> getUserExts() {
return userExts;
}
public void setUserExts(Set<UserExtDO> userExts) {
this.userExts = userExts;
}
public Set<UserOrgDO> getUserOrgs() {
return userOrgs;
}
public void setUserOrgs(Set<UserOrgDO> userOrgs) {
this.userOrgs = userOrgs;
}
public Set<UserRoleDO> getUserRoles() {
return userRoles;
}
public void setUserRoles(Set<UserRoleDO> userRoles) {
this.userRoles = userRoles;
}
public void setResetToken5(String resetToken5) {
this.resetToken5 = resetToken5;
}
public String getResetToken5() {
return resetToken5;
}
public void setResetToken4(String resetToken4) {
this.resetToken4 = resetToken4;
}
public String getResetToken4() {
return resetToken4;
}
public void setResetToken3(String resetToken3) {
this.resetToken3 = resetToken3;
}
public String getResetToken3() {
return resetToken3;
}
public void setResetToken2(String resetToken2) {
this.resetToken2 = resetToken2;
}
public String getResetToken2() {
return resetToken2;
}
public void setResetToken1(String resetToken1) {
this.resetToken1 = resetToken1;
}
public String getResetToken1() {
return resetToken1;
}
private static String userDateFormatter(Date field) {
if (field != null) {
try {
return new SimpleDateFormat("MM/dd/yyyy").format(field);
} catch (IllegalArgumentException iae) {
return "";
}
}
return "";
}
private static Date userDateParser(String field) {
if (StringUtils.isNotEmpty(field)) {
try {
return new SimpleDateFormat("MM/dd/yyyy").parse(field);
} catch (ParseException pe) {
return null;
}
}
return null;
}
@Override
public String toString() {
return Objects.toStringHelper(this).add("userId", userId).add("username", username).toString();
}
@Override
public Class<? extends BaseObject<? extends BaseEntity>> getServiceObjectType() {
return User.class;
}
public ScopeDO getSelectedScope() {
return selectedScope;
}
public void setSelectedScope(ScopeDO selectedScope) {
this.selectedScope = selectedScope;
}
}