package com.sukamo.membership.persistence.entity;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;
import javax.persistence.ManyToOne;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlElement;
import java.util.logging.Logger;
/**
* JPA Bean for Member record
*/
@Entity
@Table(name = "member")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Member.findAll", query = "SELECT t FROM Member t"),
@NamedQuery(name = "Member.findByEmailId", query = "SELECT t FROM Member t where t.emailId = :emailId")
})
public class Member implements Serializable {
private final static Logger log = Logger.getLogger(Member.class.getName());
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Basic(optional = false)
@Column(name = "member_id")
private Long memberId;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "date_of_birth")
@Temporal(TemporalType.DATE)
private Date dateOfBirth;
@Column(name = "gender")
private String gender;
@Column(name = "phone_number")
private String phoneNumber;
@Column(name = "email_id")
private String emailId;
@Column(name = "address_line1")
private String addressLine1;
@Column(name = "address_line2")
private String addressLine2;
@Column(name = "city")
private String city;
@Column(name = "zip")
private String zip;
@Column(name = "email_communication_preference")
private String emailCommunicationPreference;
@Column(name = "version")
@Version
private Long version;
public Long getMemberId() {
return memberId;
}
public void setMemberId(Long memberId) {
this.memberId = memberId;
}
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 Date getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getPhoneNum ber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getEmailId() {
return emailId;
}
public void setEmailId(String emailId) {
this.emailId = emailId;
}
public String getAddressLine1() {
return addressLine1;
}
public void setAddressLine1(String addressLine1) {
this.addressLine1 = addressLine1;
}
public String getAddressLine2() {
return addressLine2;
}
public void setAddressLine2(String addressLine2) {
this.addressLine2 = addressLine2;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
public String getEmailCommunicationPreference() {
return emailCommunicationPreference;
}
public void setEmailCommunicationPreference(String emailCommunicationPreference) {
this.emailCommunicationPreference = emailCommunicationPreference;
}
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
public Member() {
}
public List<String> getValidationErrors() {
List<String> errors = new ArrayList<>();
if (firstName == null) {
errors.add("First Name is required. ");
}
if (firstName != null && firstName.length() > 50) {
errors.add("First Name is more than 50 characters. ");
}
if (lastName == null) {
errors.add("Last Name is required. ");
}
if (lastName != null && lastName.length() > 50) {
errors.add("Last Name is more than 50 characters. ");
}
if (gender != null && gender.length() > 10) {
errors.add("Gender is more than 10 characters. ");
}
if (phoneNumber != null && phoneNumber.length() > 15) {
errors.add("Phone Number is more than 15 characters. ");
}
if (emailId != null && emailId.length() > 50) {
errors.add("Email Id is more than 50 characters. ");
}
if (addressLine1 != null && addressLine1.length() > 100) {
errors.add("Address Line1 is more than 100 characters. ");
}
if (addressLine2 != null && addressLine2.length() > 50) {
errors.add("Address Line2 is more than 50 characters. ");
}
if (city != null && city.length() > 50) {
errors.add("City is more than 50 characters. ");
}
if (zip != null && zip.length() > 5) {
errors.add("Zip is more than 5 characters. ");
}
if (emailCommunicationPreference != null && emailCommunicationPreference.length() > 10) {
errors.add("Email Communication Preference is more than 10 characters. ");
}
return errors;
}
@Override
public int hashCode() {
int hash = 0;
hash += (memberId != null ? memberId.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
if (!(object instanceof Member)) {
return false;
}
Member other = (Member) object;
if ((this.memberId == null && other.memberId != null) || (this.memberId != null && !this.memberId.equals(other.memberId))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.sukamo.membership.persistence.entity.Member[ memberId=" + memberId + " ]";
}
}