package org.jboss.resteasy.test.providers.jaxb.resource;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlTransient;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import static java.util.Calendar.YEAR;
@XmlRootElement
@XmlSeeAlso({
AbstractJaxbClassCompanyCustomer.class,
AbstractJaxbClassPrivatCustomer.class
})
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class AbstractJaxbClassCustomer implements java.io.Serializable {
private static final long serialVersionUID = 8488010636885492122L;
public static final int NACHNAME_LENGTH_MIN = 2;
public static final int NACHNAME_LENGTH_MAX = 32;
public static final int VORNAME_LENGTH_MAX = 32;
public static final int CUSTOMERNNR_LENGTH_MAX = 32;
public static final int DETAILS_LENGTH_MAX = 128 * 1024;
public static final int PASSWORD_LENGTH_MAX = 256;
public static final String PRIVATCUSTOMER = "P";
public static final String COMPANYCUSTOMER = "F";
static final String FIND_CUSTOMERS = "findcustomers";
static final String FIND_CUSTOMERS_BY_NACHNAME = "findCustomersByNachname";
static final String FIND_CUSTOMERS_BY_NACHNAME_FETCH_BESTELLUNGEN = "findCustomersByNachnameFetchBestellungen";
static final String FIND_CUSTOMER_BY_ID_FETCH_BESTELLUNGEN = "findCustomersByIdFetchBestellungen";
static final String FIND_CUSTOMERS_BY_PLZ = "findCustomersByPlz";
static final String PARAM_CUSTOMER_ID = "customerId";
static final String PARAM_CUSTOMER_NACHNAME = "nachname";
static final String PARAM_CUSTOMER_ADRESSE_PLZ = "plz";
// Alternativen: TABLE, SEQUENCE, IDENTITY, AUTO, NONE (=default)
@XmlAttribute(name = "id", required = true)
protected Long id = -1L;
@XmlTransient
protected int version = 0;
@XmlElement(required = true)
protected String nachname = "";
protected String vorname = "";
@XmlAttribute(required = true)
protected String customersnr = "NnVn-001";
protected Date seit = null;
@XmlTransient
protected int anzJahre;
@XmlElement(name = "betreuer")
protected String betreuerKey;
@XmlElementWrapper(name = "bestellungen")
@XmlElement(name = "bestellung")
protected List<String> bestellungenKeys;
protected String details;
@XmlTransient
protected String password = "";
@XmlTransient
protected Date erzeugt = null;
@XmlTransient
protected Date aktualisiert = null;
public AbstractJaxbClassCustomer() {
super();
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public int getVersion() {
return version;
}
public void setVersion(int version) {
this.version = version;
}
public String getNachname() {
return nachname;
}
public void setNachname(String nachname) {
this.nachname = nachname;
}
public String getVorname() {
return vorname;
}
public void setVorname(String vorname) {
this.vorname = vorname;
}
public String getCustomersnr() {
return customersnr;
}
public void setCustomersnr(String customersnr) {
this.customersnr = customersnr;
}
public Date getSeit() {
return seit;
}
public void setSeit(Date seit) {
this.seit = seit;
}
public int getAnzJahre() {
final GregorianCalendar now = new GregorianCalendar();
final GregorianCalendar seitCal = new GregorianCalendar();
Date temp = seit;
if (temp == null) {
temp = new Date();
}
seitCal.setTime(temp);
anzJahre = now.get(YEAR) - seitCal.get(YEAR);
return anzJahre;
}
public String getSeitAsString(int style, Locale locale) {
Date temp = seit;
if (temp == null) {
temp = new Date();
}
final DateFormat f = DateFormat.getDateInstance(style, locale);
return f.format(temp);
}
public void setSeit(String seit, int style, Locale locale) {
final DateFormat f = DateFormat.getDateInstance(style, locale);
try {
this.seit = f.parse(seit);
} catch (ParseException e) {
}
}
public String getBetreuerKey() {
return betreuerKey;
}
public void setBetreuerKey(String betreuerKey) {
this.betreuerKey = betreuerKey;
}
public List<String> getBestellungenKeys() {
return bestellungenKeys;
}
public void setBestellungenKeys(List<String> bestellungenKeys) {
this.bestellungenKeys = bestellungenKeys;
}
public abstract String getArt();
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
public String getPassword() {
return password;
}
public void setPassword(String passwort) {
this.password = passwort;
}
public Date getAktualisiert() {
return aktualisiert;
}
public void setAktualisiert(Date aktualisiert) {
this.aktualisiert = aktualisiert;
}
public Date getErzeugt() {
return erzeugt;
}
public void setErzeugt(Date erzeugt) {
this.erzeugt = erzeugt;
}
@Override
public String toString() {
return "id=" + id + ", version=" + version +
", nachname=" + nachname + ", vorname=" + vorname +
", nr=" + customersnr +
", seit=" + getSeitAsString(DateFormat.MEDIUM, Locale.GERMANY) +
", anzJahre=" + getAnzJahre() +
", password=" + password +
", erzeugt=" + erzeugt +
", aktualisiert=" + aktualisiert;
}
@Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = PRIME * result + ((nachname == null) ? 0 : nachname.hashCode());
result = PRIME * result + ((seit == null) ? 0 : seit.hashCode());
result = PRIME * result + ((vorname == null) ? 0 : vorname.hashCode());
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 AbstractJaxbClassCustomer other = (AbstractJaxbClassCustomer) obj;
if (nachname == null) {
if (other.nachname != null) {
return false;
}
} else if (!nachname.equals(other.nachname)) {
return false;
}
if (seit == null) {
if (other.seit != null) {
return false;
}
} else if (!seit.equals(other.seit)) {
return false;
}
if (vorname == null) {
if (other.vorname != null) {
return false;
}
} else if (!vorname.equals(other.vorname)) {
return false;
}
return true;
}
}