Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package rbvs.product;
- public class ExtendedProduct extends SimpleProduct {
- //Eldira Sesto, 11815163
- private ExtendedProduct savedState;
- public ExtendedProduct(ExtendedProduct product) {
- super(product.getname(), product.getPrice());
- savedState = product.savedState;//.deepCopy();
- //sta sa saved state
- }
- public ExtendedProduct(String name, float price) {
- super(name, price);
- //sta sa saved state
- }
- public void setName(String name){
- if(savedState == null){
- savedState = new ExtendedProduct(super.getname(), super.getPrice());
- }else {
- savedState.setName(super.getname());
- }
- super.setName(name);
- }
- public void setPrice(float price) throws IllegalArgumentException {
- if(price < 0) throw new IllegalArgumentException("Price cant be negative");
- if(savedState == null){
- savedState = new ExtendedProduct(super.getname(), super.getPrice());
- }
- else {
- savedState.setPrice(super.getPrice());
- }
- super.setPrice(price);
- }
- @Override
- public String toString() {
- String s = hasEffect() ? " Undo will have effect" : " Undo wont have effect";
- return super.toString() + s;
- }
- private boolean hasEffect(){
- boolean hasEffect = true;
- if(savedState == null) return false; //hmmm
- if(savedState.getname().equals(super.getname()) && savedState.getPrice() == super.getPrice()) hasEffect = false;
- return hasEffect;
- }
- public boolean undo(){
- if(!hasEffect()) return false;
- super.setName(savedState.getname());
- super.setPrice(savedState.getPrice());
- return true;
- }
- public ExtendedProduct deepCopy(){
- return new ExtendedProduct(getname(), getPrice());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement