package com.avaje.tests.model.basic;
import java.io.Serializable;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.persistence.Version;
import com.avaje.ebean.annotation.CreatedTimestamp;
import com.avaje.ebean.annotation.Formula;
import com.avaje.ebean.annotation.Sql;
import com.avaje.ebean.annotation.SqlSelect;
import com.avaje.ebean.validation.NotNull;
/**
* Order entity bean.
*/
@Entity
@Table(name="o_order")
@Sql(select={
@SqlSelect(name="test",query="select id, status from o_customer u", tableAlias="u"),
@SqlSelect(name="test2",extend="test",where="u.status = :status")
})
public class Order implements Serializable {
private static final long serialVersionUID = 1L;
//@EnumMapping(nameValuePairs="APPROVED=A, COMPLETE=C, NEW=N, SHIPPED=S")
public enum Status {
NEW,
APPROVED,
SHIPPED,
COMPLETE
}
public Order(){
}
@Id
Integer id;
@Transient
@Formula(
select="_b${ta}.total_amount",
join="join (select order_id, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) as _b${ta} on _b${ta}.order_id = ${ta}.id")
String totalAmount;
@Enumerated(value=EnumType.ORDINAL)
Status status = Status.NEW;
Date orderDate = new Date(System.currentTimeMillis());
Date shipDate;
@NotNull
@ManyToOne
@JoinColumn(name="kcustomer_id")
Customer customer;
@CreatedTimestamp
Timestamp cretime;
@Version
Timestamp updtime;
@OneToMany(cascade=CascadeType.ALL, mappedBy="order")
List<OrderDetail> details = new ArrayList<OrderDetail>();
@OneToMany(cascade=CascadeType.ALL, mappedBy="order")
List<OrderShipment> shipments;
/**
* Return id.
*/
public Integer getId() {
return id;
}
/**
* Set id.
*/
public void setId(Integer id) {
this.id = id;
}
public String getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(String totalAmount) {
this.totalAmount = totalAmount;
}
/**
* Return order date.
*/
public Date getOrderDate() {
return orderDate;
}
/**
* Set order date.
*/
public void setOrderDate(Date orderDate) {
this.orderDate = orderDate;
}
/**
* Return ship date.
*/
public Date getShipDate() {
return shipDate;
}
/**
* Set ship date.
*/
public void setShipDate(Date shipDate) {
this.shipDate = shipDate;
}
/**
* Return cretime.
*/
public Timestamp getCretime() {
return cretime;
}
/**
* Set cretime.
*/
public void setCretime(Timestamp cretime) {
this.cretime = cretime;
}
/**
* Return updtime.
*/
public Timestamp getUpdtime() {
return updtime;
}
/**
* Set updtime.
*/
public void setUpdtime(Timestamp updtime) {
this.updtime = updtime;
}
/**
* Return status.
*/
public Status getStatus() {
return status;
}
/**
* Set status.
*/
public void setStatus(Status status) {
this.status = status;
}
/**
* Return customer.
*/
public Customer getCustomer() {
return customer;
}
/**
* Set customer.
*/
public void setCustomer(Customer customer) {
this.customer = customer;
}
/**
* Return details.
*/
public List<OrderDetail> getDetails() {
return details;
}
/**
* Set details.
*/
public void setDetails(List<OrderDetail> details) {
this.details = details;
}
public List<OrderShipment> getShipments() {
return shipments;
}
public void setShipments(List<OrderShipment> shipments) {
this.shipments = shipments;
}
public void add(OrderShipment shipment){
if (shipments == null){
shipments = new ArrayList<OrderShipment>();
}
shipments.add(shipment);
}
}