package com.demo.demo.model.obj.demo;
import com.demo.demo.model.obj.demo.Line;
import com.demo.demo.model.obj.demo.iface.IOrder;
import com.demo.demo.services.data.DataLayerDemoImpl;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
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 org.hibernate.proxy.HibernateProxy;
@Entity
@Table(name = "order", catalog = "demo")
public class Order implements Cloneable, Serializable, IOrder {
private static final long serialVersionUID = -559029078L;
private Customer customer;
private Set<Line> lines = new HashSet<Line>();
private Long id = 0L;
private Date orderDate;
public Order() {
}
public Order(Long id) {
this.id = id;
}
public Order(Customer customer, Long id, Date orderDate) {
this.customer = customer;
this.id = id;
this.orderDate = orderDate;
}
@ManyToOne( cascade = CascadeType.ALL, fetch = FetchType.LAZY )
@JoinColumn(name = "customer_id" )
public Customer getCustomer() {
return this.customer;
}
public void setCustomer(final Customer customer) {
this.customer = customer;
}
@Column( name = "order_id", nullable = false )
@OneToMany( fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "order" )
public Set<Line> getLines() {
return this.lines;
}
public void addLine(Line line) {
this.lines.add(line);
line.setOrder(this);
}
public void setLines(final Set<Line> line) {
this.lines = line;
}
@Id
@Column( name = "order_id", nullable = false )
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return this.id;
}
public void setId(final Long id) {
this.id = id;
}
@Column( name = "order_date", nullable = false )
public Date getOrderDate() {
return this.orderDate;
}
public void setOrderDate(final Date orderDate) {
this.orderDate = orderDate;
}
@Override
public Order clone() throws CloneNotSupportedException {
super.clone(); final Order copy = new Order();
copy.setCustomer(this.getCustomer());
copy.getLines().addAll(this.getLines());
copy.setId(this.getId());
copy.setOrderDate(this.getOrderDate());
return copy;
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("id: " + this.getId() + ", ");
sb.append("orderDate: " + this.getOrderDate());
return sb.toString();
}
@Override
public boolean equals(final Object aThat) {
Object unproxyThat = aThat;
if ( this == aThat ) {
return true;
}
if (aThat instanceof HibernateProxy) {
try {
unproxyThat = DataLayerDemoImpl.getInstance().loadOrder(((Order)aThat).getId());
} catch (ClassCastException e) {
return false;
}
}
if ((aThat == null) || ( !(unproxyThat.getClass().equals(this.getClass())))) {
return false;
}
final Order that = (Order) unproxyThat;
boolean result = true;
result = result & (((this.getOrderDate() == null) && (that.getOrderDate() == null)) || (this.getOrderDate() != null && this.getOrderDate().equals(that.getOrderDate())));
return result;
}
@Override
public int hashCode() {
int result = 0;
result = 26 * result + (this.getCustomer() == null || this.getCustomer().getId() == null ? 0 : this.getCustomer().getId().hashCode());
result = 26 * result + (this.getOrderDate() == null ? 0 : this.getOrderDate().hashCode());
return result;
}
}