package org.lightadmin.test.model;
import org.lightadmin.demo.model.AbstractEntity;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Set;
import static com.google.common.collect.Lists.newArrayList;
@Entity
@Table(name = "TestOrders")
public class TestOrder extends AbstractEntity {
private String name;
@ManyToOne(cascade = CascadeType.ALL)
private TestCustomer customer;
@ManyToMany
@JoinTable(name = "testorders_addresses",
joinColumns = @JoinColumn(name = "order_id", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "address_id", referencedColumnName = "ID")
)
private Set<TestAddress> shippingAddresses;
@Temporal(TemporalType.DATE)
private Date dueDate;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "order_id")
private List<TestLineItem> lineItems = newArrayList();
@Transient
private BigDecimal orderTotal;
public String getName() {
return name;
}
public void setName( final String name ) {
this.name = name;
}
public void setLineItems(List<TestLineItem> lineItems) {
this.lineItems.clear();
this.lineItems.addAll(lineItems);
}
public List<TestLineItem> getLineItems() {
return lineItems;
}
public BigDecimal getOrderTotal() {
BigDecimal orderTotal = new BigDecimal( 0 );
for ( TestLineItem lineItem : lineItems ) {
orderTotal = orderTotal.add( lineItem.getTotal() );
}
return orderTotal;
}
public TestCustomer getCustomer() {
return customer;
}
public void setCustomer( TestCustomer customer ) {
this.customer = customer;
}
public Set<TestAddress> getShippingAddresses() {
return shippingAddresses;
}
public void setShippingAddresses( final Set<TestAddress> shippingAddresses ) {
this.shippingAddresses = shippingAddresses;
}
public Date getDueDate() {
return dueDate;
}
public void setDueDate( Date dueDate ) {
this.dueDate = dueDate;
}
}