package net.techreadiness.service.object; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Set; import net.techreadiness.annotation.CoreField; import net.techreadiness.persistence.domain.UserDO; import org.apache.commons.lang3.StringUtils; import com.google.common.base.Objects; import com.google.common.collect.Sets; public class User extends BaseObjectWithExts<UserDO> { private static final long serialVersionUID = 1L; @CoreField private Long userId; @CoreField private Date activeBeginDate; @CoreField private Date activeEndDate; @CoreField private Date deleteDate; @CoreField private Date disableDate; @CoreField private String disableReason; @CoreField private String email; @CoreField private String firstName; @CoreField private String lastName; @CoreField private String username; @CoreField private String resetToken1; @CoreField private String resetToken2; @CoreField private String resetToken3; @CoreField private String resetToken4; @CoreField private String resetToken5; private Scope scope; // Okira maps this automatically ... private Set<UserOrg> userOrgs = Sets.newHashSet(); private Set<UserRole> userRoles = Sets.newHashSet(); public User() { // required by JAXB } @Override public String toString() { return Objects.toStringHelper(this).add("userId", userId).add("username", username).toString(); } @Override public Class<UserDO> getBaseEntityType() { return UserDO.class; } public Long getUserId() { return userId; } public void setUserId(Long userId) { this.userId = userId; } public Date getActiveBeginDate() { return activeBeginDate; } public void setActiveBeginDate(Date activeBeginDate) { this.activeBeginDate = activeBeginDate; } public String getActiveBeginDateString() { return userDateFormatter(activeBeginDate); } public void setActiveBeginDateString(String date) { activeBeginDate = userDateParser(date); } public Date getActiveEndDate() { return activeEndDate; } public void setActiveEndDate(Date activeEndDate) { this.activeEndDate = activeEndDate; } public String getActiveEndDateString() { return userDateFormatter(activeEndDate); } public void setActiveEndDateString(String date) { activeEndDate = userDateParser(date); } public Date getDeleteDate() { return deleteDate; } public void setDeleteDate(Date deleteDate) { this.deleteDate = deleteDate; } public String getDeleteDateString() { return userDateFormatter(deleteDate); } public void setDeleteDateString(String date) { deleteDate = userDateParser(date); } public Date getDisableDate() { return disableDate; } public void setDisableDate(Date disableDate) { this.disableDate = disableDate; } public String getDisableDateString() { return userDateFormatter(disableDate); } public void setDisableDateString(String date) { disableDate = userDateParser(date); } 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 String getResetToken1() { return resetToken1; } public void setResetToken1(String resetToken1) { this.resetToken1 = resetToken1; } public String getResetToken2() { return resetToken2; } public void setResetToken2(String resetToken2) { this.resetToken2 = resetToken2; } public String getResetToken3() { return resetToken3; } public void setResetToken3(String resetToken3) { this.resetToken3 = resetToken3; } public String getResetToken4() { return resetToken4; } public void setResetToken4(String resetToken4) { this.resetToken4 = resetToken4; } public String getResetToken5() { return resetToken5; } public void setResetToken5(String resetToken5) { this.resetToken5 = resetToken5; } public Scope getScope() { return scope; } public void setScope(Scope scope) { this.scope = scope; } @Override public Long getId() { return userId; } 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; } public Set<UserOrg> getUserOrgs() { return userOrgs; } public void setUserOrgs(Set<UserOrg> userOrgs) { this.userOrgs = userOrgs; } public Set<UserRole> getUserRoles() { return userRoles; } public void setUserRoles(Set<UserRole> userRoles) { this.userRoles = userRoles; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (email == null ? 0 : email.hashCode()); result = prime * result + (firstName == null ? 0 : firstName.hashCode()); result = prime * result + (lastName == null ? 0 : lastName.hashCode()); result = prime * result + (scope == null ? 0 : scope.hashCode()); result = prime * result + (username == null ? 0 : username.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof User)) { return false; } User other = (User) obj; if (email == null) { if (other.email != null) { return false; } } else if (!email.equals(other.email)) { return false; } if (firstName == null) { if (other.firstName != null) { return false; } } else if (!firstName.equals(other.firstName)) { return false; } if (lastName == null) { if (other.lastName != null) { return false; } } else if (!lastName.equals(other.lastName)) { return false; } if (scope == null) { if (other.scope != null) { return false; } } else if (!scope.equals(other.scope)) { return false; } if (username == null) { if (other.username != null) { return false; } } else if (!username.equals(other.username)) { return false; } return true; } }