package org.jboss.resteasy.test.providers.jettison.resource;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import java.io.Serializable;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class JettisonCustomer implements Serializable {
private static final long serialVersionUID = -6949084426046457758L;
@XmlAttribute(name = "id", required = true)
protected Long id = null;
@XmlAttribute(required = true)
protected String surname = "";
protected String firstName = "";
@XmlAttribute(required = true)
protected String customerNumber = "NnVn-001";
protected Date since = null;
@XmlTransient
protected int activeYears;
protected String details;
@XmlTransient
protected Date generated = null;
@XmlAttribute
protected Date updated = null;
public JettisonCustomer() {
super();
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getCustomerNumber() {
return customerNumber;
}
public void setCustomerNumber(String customerNumber) {
this.customerNumber = customerNumber;
}
public Date getSince() {
return since;
}
public void setSince(Date since) {
this.since = since;
}
public int getActiveYears() {
final GregorianCalendar now = new GregorianCalendar();
final GregorianCalendar sinceCal = new GregorianCalendar();
Date temp = since;
if (temp == null) {
temp = new Date();
}
sinceCal.setTime(temp);
activeYears = now.get(Calendar.YEAR) - sinceCal.get(Calendar.YEAR);
return activeYears;
}
public String getSinceAsString(int style, Locale locale) {
Date temp = since;
if (temp == null) {
temp = new Date();
}
final DateFormat df = DateFormat.getDateInstance(style, locale);
return df.format(temp);
}
public void setSince(String since, int style, Locale locale) {
final DateFormat df = DateFormat.getDateInstance(style, locale);
try {
this.since = df.parse(since);
} catch (ParseException pe) {
throw new RuntimeException(pe);
}
}
public void setActiveYears(int activeYears) {
this.activeYears = activeYears;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
public Date getGenerated() {
return generated;
}
public void setGenerated(Date generated) {
this.generated = generated;
}
public Date getUpdated() {
return updated;
}
public void setUpdated(Date updated) {
this.updated = updated;
}
@Override
public String toString() {
return "JettisonCustomer{" +
"id=" + id +
", surname='" + surname + '\'' +
", firstName='" + firstName + '\'' +
", customerNumber='" + customerNumber + '\'' +
", since=" + getSinceAsString(DateFormat.MEDIUM, Locale.ENGLISH) +
", activeYears=" + getActiveYears() +
", details='" + details + '\'' +
", generated=" + generated +
", updated=" + updated +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
JettisonCustomer that = (JettisonCustomer) o;
if (surname != null ? !surname.equals(that.surname) : that.surname != null) return false;
if (firstName != null ? !firstName.equals(that.firstName) : that.firstName != null) return false;
return since != null ? since.equals(that.since) : that.since == null;
}
@Override
public int hashCode() {
int result = surname != null ? surname.hashCode() : 0;
result = 31 * result + (firstName != null ? firstName.hashCode() : 0);
result = 31 * result + (since != null ? since.hashCode() : 0);
return result;
}
}