Advertisement
EldiraSesto

rbvs.product ExtendedProduct

Apr 24th, 2019
351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.87 KB | None | 0 0
  1. package rbvs.product;
  2.  
  3. public class ExtendedProduct extends SimpleProduct {
  4.     //Eldira Sesto, 11815163
  5.     private ExtendedProduct savedState;
  6.  
  7.     public ExtendedProduct(ExtendedProduct product) {
  8.         super(product.getname(), product.getPrice());
  9.         savedState = product.savedState;//.deepCopy();
  10.         //sta sa saved state
  11.     }
  12.  
  13.     public ExtendedProduct(String name, float price) {
  14.         super(name, price);
  15.         //sta sa saved state
  16.     }
  17.  
  18.     public void setName(String name){
  19.         if(savedState == null){
  20.             savedState = new ExtendedProduct(super.getname(), super.getPrice());
  21.         }else {
  22.             savedState.setName(super.getname());
  23.         }
  24.         super.setName(name);
  25.     }
  26.  
  27.     public void setPrice(float price) throws IllegalArgumentException {
  28.         if(price < 0) throw new IllegalArgumentException("Price cant be negative");
  29.  
  30.         if(savedState == null){
  31.             savedState = new ExtendedProduct(super.getname(), super.getPrice());
  32.         }
  33.         else {
  34.             savedState.setPrice(super.getPrice());
  35.         }
  36.         super.setPrice(price);
  37.     }
  38.  
  39.     @Override
  40.     public String toString() {
  41.         String s = hasEffect() ? " Undo will have effect" : " Undo wont have effect";
  42.         return super.toString() + s;
  43.     }
  44.  
  45.     private boolean hasEffect(){
  46.         boolean hasEffect = true;
  47.         if(savedState == null) return false; //hmmm
  48.         if(savedState.getname().equals(super.getname()) && savedState.getPrice() == super.getPrice()) hasEffect = false;
  49.         return hasEffect;
  50.     }
  51.  
  52.     public boolean undo(){
  53.         if(!hasEffect()) return false;
  54.  
  55.         super.setName(savedState.getname());
  56.         super.setPrice(savedState.getPrice());
  57.         return true;
  58.     }
  59.  
  60.     public ExtendedProduct deepCopy(){
  61.         return new ExtendedProduct(getname(), getPrice());
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement