Advertisement
EldiraSesto

rbvs Order

Apr 24th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.90 KB | None | 0 0
  1. package rbvs;
  2.  
  3. import ict.basic.IDeepCopy;
  4. import rbvs.product.IProduct;
  5. import rbvs.record.Record;
  6.  
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. import java.util.Objects;
  10. //Eldira Sesto, 11815163
  11. public class Order extends Record implements IDeepCopy {
  12.     private OrderState currentState;
  13.     private List<IProduct> products;
  14.     private Table table;
  15.  
  16.  
  17.     Order(long identifier, Table table, List<IProduct> products) {
  18.         super(identifier);
  19.         currentState = OrderState.OPEN;
  20.         this.products = products;
  21.         this.table = table;
  22.  
  23.     }
  24.  
  25.     @Override
  26.     public Order deepCopy() {
  27.         Table newTable = new Table(table.getTableIdentifier(), table.getSeatCount());
  28.         List<IProduct> newProducts = new ArrayList<>();
  29.         for(IProduct p : products){
  30.             newProducts.add((IProduct) p.deepCopy());
  31.         }
  32.         return new Order(super.getIdentifier(), newTable, newProducts);
  33.     }
  34.  
  35.     @Override
  36.     public boolean equals(Object o) {
  37.         if (this == o) return true;
  38.         if (o == null || getClass() != o.getClass()) return false;
  39.         Order order = (Order) o;
  40.         return currentState == order.currentState &&
  41.                 Objects.equals(products, order.products) &&
  42.                 Objects.equals(table, order.table);
  43.     }
  44.  
  45.     public OrderState getState() {
  46.         return currentState;
  47.     }
  48.  
  49.     public List<IProduct> getProducts() {
  50.         return products;
  51.     }
  52.  
  53.     public Table getTable() {
  54.         return table;
  55.     }
  56.  
  57.     public boolean isCanceled(){
  58.         return currentState.equals(OrderState.CANCELLED);
  59.     }
  60.  
  61.     public boolean isPaid(){
  62.         return currentState.equals(OrderState.PAID);
  63.     }
  64.  
  65.     public boolean setState(OrderState newState){
  66.         if(!isCanceled() && !isPaid()) {
  67.             currentState = newState;
  68.             return true;
  69.         }
  70.  
  71.         return false;
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement