diff --git a/src/Item/Dish.java b/src/Item/Dish.java index b6669d4103ea8a94a454eaa029dba3c6066e6821..ac68bfef911fd19356ba822c9553ad15edc054dd 100644 --- a/src/Item/Dish.java +++ b/src/Item/Dish.java @@ -29,7 +29,14 @@ public class Dish extends Item implements VisitablePrice{ /** VISIT LOGIC **/ - public double acceptPrice(VisitorPrice v) { - return v.visitPrice(this); + public void acceptPrice(VisitorPrice v) { + if(v instanceof Meal){ + Meal vMeal = (Meal) v; + vMeal.setPrice(vMeal.getPrice()+price); + } + if(v instanceof Dish){ + Dish vDish = (Dish) v; + vDish.setPrice(vDish.getPrice()+price); + } } } diff --git a/src/Item/Meal.java b/src/Item/Meal.java index e1ae4ef66193177bdbd518e8f7fd122121cea541..c6741ad86ef6a35251de06cb04f1b86c413c5570 100644 --- a/src/Item/Meal.java +++ b/src/Item/Meal.java @@ -2,6 +2,8 @@ package Item; import java.util.ArrayList; +import Order.Order; + /** * @@ -88,6 +90,9 @@ public abstract class Meal extends Item implements VisitorPrice{ public double getPrice(){ return price; } + public void setPrice(double _price){ + price = _price; + } public ArrayList<Dish> getListDish() { return listDish; } @@ -102,16 +107,19 @@ public abstract class Meal extends Item implements VisitorPrice{ /** VISIT LOGIC **/ @Override - public double acceptPrice(VisitorPrice v){ - price=0; - for(Dish item: listDish){ - item.acceptPrice(this); + public void acceptPrice(VisitorPrice v){ + price=0; // reseting price + if(v instanceof Order){ + Order vOrder = (Order) v; + for(Dish item: listDish){ + item.acceptPrice(this); + } + vOrder.setPrice(vOrder.getPrice()+this.getPrice()*0.95); } - return this.getPrice(); } @Override - public double visitPrice(VisitablePrice v) { - return v.acceptPrice(this); + public void visitPrice(VisitablePrice v) { + v.acceptPrice(this); } } diff --git a/src/Item/VisitablePrice.java b/src/Item/VisitablePrice.java index 06286592c14a7aba0e95b3328c683585b05dba2c..9c219926303a35396b672eb5c43246d3fafa84b7 100644 --- a/src/Item/VisitablePrice.java +++ b/src/Item/VisitablePrice.java @@ -1,5 +1,5 @@ package Item; public interface VisitablePrice { - public double acceptPrice(VisitorPrice v); + public void acceptPrice(VisitorPrice v); } diff --git a/src/Item/VisitorPrice.java b/src/Item/VisitorPrice.java index fd8f4f1b78cd7cc1fdbfda236591488ee9f692ff..f60047f12359d0625ba4a36aea81434d6e17a764 100644 --- a/src/Item/VisitorPrice.java +++ b/src/Item/VisitorPrice.java @@ -1,5 +1,5 @@ package Item; public interface VisitorPrice { - public double visitPrice(VisitablePrice v); + public void visitPrice(VisitablePrice v); } diff --git a/src/Order/Order.java b/src/Order/Order.java new file mode 100644 index 0000000000000000000000000000000000000000..f35b236ed9b925abbb4187929bf4b7615f45ec97 --- /dev/null +++ b/src/Order/Order.java @@ -0,0 +1,41 @@ +package Order; + +import java.util.ArrayList; + +import Item.Dish; +import Item.Meal; +import Item.VisitablePrice; +import Item.VisitorPrice; + +public class Order implements VisitorPrice{ + + private double price; + + ArrayList<Dish> listDish; + ArrayList<Meal> listMeal; + + public Order() { + // TODO Auto-generated constructor stub + } + + /** GETTER AND SETTER **/ + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + @Override + public void visitPrice(VisitablePrice v) { + for(Dish dish:listDish){ + dish.acceptPrice(this); + } + for(Meal meal:listMeal){ + meal.acceptPrice(this); + } + } + +}