| /******************************************************************************* |
| * Copyright (c) 2011, 2012 Oracle and/or its affiliates. All rights reserved. |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 |
| * which accompanies this distribution. |
| * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html |
| * and the Eclipse Distribution License is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * Contributors: |
| * Oracle - initial impl |
| ******************************************************************************/ |
| package model; |
| |
| import java.io.Serializable; |
| import java.math.BigDecimal; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import javax.persistence.*; |
| |
| /** |
| * Order |
| * @author James Sutherland |
| */ |
| @Entity(name="Order") |
| @Table(name="PERF_ORDER") |
| @NamedQueries({ |
| @NamedQuery(name="findOrdersByCustomer", |
| query="Select o from Order o where o.customer.id = :customerId", |
| hints=@QueryHint(name="eclipselink.read-only", value="true")) |
| }) |
| public class Order implements Serializable { |
| @Id |
| @GeneratedValue(generator="ORDER_SEQ", strategy=GenerationType.TABLE) |
| @Column(name="ORDER_ID") |
| private long id; |
| |
| @Basic |
| private String description; |
| |
| @Basic |
| private BigDecimal totalCost = BigDecimal.valueOf(0); |
| |
| @OneToMany(mappedBy="order", cascade=CascadeType.ALL, orphanRemoval=true) |
| @OrderBy("lineNumber") |
| private List<OrderLine> orderLines = new ArrayList<OrderLine>(); |
| |
| @ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.PERSIST) |
| private Customer customer; |
| |
| public Order() { |
| } |
| |
| public long getId() { |
| return id; |
| } |
| |
| public void setId(long id) { |
| this.id = id; |
| } |
| |
| public String getDescription() { |
| return description; |
| } |
| |
| public void setDescription(String description) { |
| this.description = description; |
| } |
| |
| public BigDecimal getTotalCost() { |
| return totalCost; |
| } |
| |
| public void setTotalCost(BigDecimal totalCost) { |
| this.totalCost = totalCost; |
| } |
| |
| public List<OrderLine> getOrderLines() { |
| return orderLines; |
| } |
| |
| public void setOrderLines(List<OrderLine> orderLines) { |
| this.orderLines = orderLines; |
| } |
| |
| public Customer getCustomer() { |
| return customer; |
| } |
| |
| public void setCustomer(Customer customer) { |
| this.customer = customer; |
| } |
| |
| /** |
| * Add the order line to the order, and set the back reference and update the order cost. |
| */ |
| public void addOrderLine(OrderLine orderLine) { |
| orderLine.setOrder(this); |
| getOrderLines().add(orderLine); |
| orderLine.setLineNumber(getOrderLines().size()); |
| setTotalCost(getTotalCost().add(orderLine.getCost())); |
| } |
| |
| /** |
| * Add the order line to the order, and set the back reference and update the order cost. |
| */ |
| public void removeOrderLine(OrderLine orderLine) { |
| getOrderLines().remove(orderLine); |
| setTotalCost(getTotalCost().subtract(orderLine.getCost())); |
| } |
| } |