From 418c564d60d5c18891af8c0cbe51455bb3b3744b Mon Sep 17 00:00:00 2001 From: Nicolas Fley <nicolas.fley@student.ecp.fr> Date: Wed, 5 Apr 2017 00:26:00 +0200 Subject: [PATCH] 05/04/17 work --- src/Cards/BasicFidelityCard.java | 7 +- src/Cards/FidelityCard.java | 2 +- src/Cards/LotteryFidelityCard.java | 8 +- src/Cards/PointFidelityCard.java | 8 +- src/Cards/VisitableCard.java | 7 ++ src/Cards/VisiterCard.java | 7 ++ src/Cli/Confirm.java | 15 ++++ src/Item/Dish.java | 14 ++++ src/Item/Item.java | 33 +++++++++ src/Item/Meal.java | 91 +++++++++++++++++++++++ src/Item/VisitablePrice.java | 5 ++ src/Item/VisitorPrice.java | 5 ++ src/Others/Historique.java | 2 +- src/Others/IDCard.java | 31 ++++---- src/Others/Position.java | 36 +++++++++ src/Trash/UserFactory.java | 48 ------------ src/User/Courrier.java | 59 +++++++++++++++ src/User/Customer.java | 113 +++++++++++++++++++++-------- src/User/HumanUser.java | 8 +- src/User/HumanUserFactory.java | 4 +- src/User/IDUser.java | 24 ++++++ src/User/Manager.java | 7 +- src/User/MoralUser.java | 4 +- src/User/MoralUserFactory.java | 2 +- src/User/Restaurant.java | 4 +- src/User/User.java | 28 +++---- src/User/UserFactory.java | 2 +- 27 files changed, 443 insertions(+), 131 deletions(-) create mode 100644 src/Cards/VisitableCard.java create mode 100644 src/Cards/VisiterCard.java create mode 100644 src/Cli/Confirm.java create mode 100644 src/Item/Dish.java create mode 100644 src/Item/Item.java create mode 100644 src/Item/Meal.java create mode 100644 src/Item/VisitablePrice.java create mode 100644 src/Item/VisitorPrice.java create mode 100644 src/Others/Position.java delete mode 100644 src/Trash/UserFactory.java create mode 100644 src/User/Courrier.java create mode 100644 src/User/IDUser.java diff --git a/src/Cards/BasicFidelityCard.java b/src/Cards/BasicFidelityCard.java index 7ab7bb9..b8661be 100644 --- a/src/Cards/BasicFidelityCard.java +++ b/src/Cards/BasicFidelityCard.java @@ -1,6 +1,6 @@ package Cards; -public class BasicFidelityCard extends FidelityCard { +public class BasicFidelityCard extends FidelityCard implements VisitableCard { public BasicFidelityCard(long id) { super(id); @@ -12,4 +12,9 @@ public class BasicFidelityCard extends FidelityCard { return "Basic"; } + @Override + public long accept() { + return 0; + } + } diff --git a/src/Cards/FidelityCard.java b/src/Cards/FidelityCard.java index 4a8fee5..700adba 100644 --- a/src/Cards/FidelityCard.java +++ b/src/Cards/FidelityCard.java @@ -1,6 +1,6 @@ package Cards; -public abstract class FidelityCard { +public abstract class FidelityCard implements VisitableCard { private long id; diff --git a/src/Cards/LotteryFidelityCard.java b/src/Cards/LotteryFidelityCard.java index dfd1594..97669c2 100644 --- a/src/Cards/LotteryFidelityCard.java +++ b/src/Cards/LotteryFidelityCard.java @@ -1,6 +1,6 @@ package Cards; -public class LotteryFidelityCard extends FidelityCard { +public class LotteryFidelityCard extends FidelityCard implements VisitableCard { private double percentage; @@ -18,4 +18,10 @@ public class LotteryFidelityCard extends FidelityCard { return "Lottery"; } + + @Override + public long accept() { + return 0; + } + } diff --git a/src/Cards/PointFidelityCard.java b/src/Cards/PointFidelityCard.java index d455631..2c8a3ef 100644 --- a/src/Cards/PointFidelityCard.java +++ b/src/Cards/PointFidelityCard.java @@ -1,6 +1,6 @@ package Cards; -public class PointFidelityCard extends FidelityCard { +public class PointFidelityCard extends FidelityCard implements VisitableCard { private long nbOfPoint; @@ -16,4 +16,10 @@ public class PointFidelityCard extends FidelityCard { return "Point"; } + @Override + public long accept() { + return this.nbOfPoint; + + } + } diff --git a/src/Cards/VisitableCard.java b/src/Cards/VisitableCard.java new file mode 100644 index 0000000..61084e7 --- /dev/null +++ b/src/Cards/VisitableCard.java @@ -0,0 +1,7 @@ +package Cards; + +public interface VisitableCard { + + public abstract long accept(); + +} diff --git a/src/Cards/VisiterCard.java b/src/Cards/VisiterCard.java new file mode 100644 index 0000000..3a6ebc9 --- /dev/null +++ b/src/Cards/VisiterCard.java @@ -0,0 +1,7 @@ +package Cards; + +public interface VisiterCard { + + public abstract long visit(VisitableCard card); + +} diff --git a/src/Cli/Confirm.java b/src/Cli/Confirm.java new file mode 100644 index 0000000..3911b1d --- /dev/null +++ b/src/Cli/Confirm.java @@ -0,0 +1,15 @@ +package Cli; + +import java.util.Scanner; + +public class Confirm { + Scanner reader = new Scanner(System.in); + public static boolean text(String str){ + System.out.println(str); + System.out.println("(Y)es/(N)o : "); + String answer = reader.nextLine(); + if(answer=="y" || answer == "Y" || answer == "o" || answer == "O") + return true; + return false; + } +} diff --git a/src/Item/Dish.java b/src/Item/Dish.java new file mode 100644 index 0000000..5df2a48 --- /dev/null +++ b/src/Item/Dish.java @@ -0,0 +1,14 @@ +package Item; + +public class Dish extends Item implements VisitablePrice{ + + public Dish(String name, String type) { + super(name, type); + } + + private double price; + + public double acceptPrice(VisitorPrice v) { + return v.visitPrice(this); + } +} diff --git a/src/Item/Item.java b/src/Item/Item.java new file mode 100644 index 0000000..9c2b111 --- /dev/null +++ b/src/Item/Item.java @@ -0,0 +1,33 @@ +package Item; + +public abstract class Item implements VisitablePrice { + + String type; + String name; + + /** CONSTRUCTOR **/ + + public Item(String name,String type) { + super(); + this.type = type; + this.name = name; + } + + /** METHODS **/ + + + /** GETTER & SETTER **/ + + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } +} diff --git a/src/Item/Meal.java b/src/Item/Meal.java new file mode 100644 index 0000000..eabbafe --- /dev/null +++ b/src/Item/Meal.java @@ -0,0 +1,91 @@ +package Item; + +import java.util.ArrayList; + +public class Meal extends Item implements VisitorPrice{ + + ArrayList<Dish> listDish = new ArrayList<Dish>(); + + private double price=0; + + public Meal(String name,String type) { + super(name,type); + } + + public void addDish(ArrayList<Dish> listDishRestaurant, String name){ + for(Dish dish: listDishRestaurant){ + if(dish.getName()==name) + System.out.println("Adding "+dish.toString()+" to meal : "+this.getName()); + if(!listDish.contains(dish)){ + listDish.add(dish); + System.out.println("Dish added."); + } + else{ + System.out.println("This dish is in this menu."); + if(Cli.Confirm.text("Do you really want to add "+dish.toString()+" ?")){ + listDish.add(dish); + System.out.println("Dish added."); + } + } + } + } + public void addDish(ArrayList<Dish> listDishRestaurant, int num){ + Dish dish = listDishRestaurant.get(num); + System.out.println("Adding "+dish.toString()+" to meal : "+this.getName()); + if(dish.getName()==name) + if(!listDish.contains(dish)){ + listDish.add(dish); + System.out.println("Dish added."); + } + else{ + System.out.println("This dish is in this menu."); + if(Cli.Confirm.text("Do you really want to add "+dish.toString()+" ?")){ + listDish.add(dish); + System.out.println("Dish added."); + } + } + } + + public void removeDish(String name){ + boolean itemRemoved = false; + for(Dish dish: listDish){ + if(dish.getName()==name){ + listDish.remove(dish); + itemRemoved=true; + } + } + if(itemRemoved) + System.out.println("Dish removed !"); + } + public void removeDish(int num){ + Dish dish = listDish.get(num); + if(dish.getName()==name) + if(!listDish.contains(dish)) + listDish.add(dish); + else{ + System.out.println("This dish is in this menu."); + if(Cli.Confirm.text("Do you really want to add it ?")) + listDish.add(dish); + } + } + + public double getPrice(){ + return price; + } + + /** VISIT LOGIC **/ + + @Override + public double acceptPrice(VisitorPrice v){ + price=0; + for(Dish item: listDish){ + item.acceptPrice(this); + } + return this.getPrice(); + } + + @Override + public double visitPrice(VisitablePrice v) { + return v.acceptPrice(this); + } +} diff --git a/src/Item/VisitablePrice.java b/src/Item/VisitablePrice.java new file mode 100644 index 0000000..0628659 --- /dev/null +++ b/src/Item/VisitablePrice.java @@ -0,0 +1,5 @@ +package Item; + +public interface VisitablePrice { + public double acceptPrice(VisitorPrice v); +} diff --git a/src/Item/VisitorPrice.java b/src/Item/VisitorPrice.java new file mode 100644 index 0000000..fd8f4f1 --- /dev/null +++ b/src/Item/VisitorPrice.java @@ -0,0 +1,5 @@ +package Item; + +public interface VisitorPrice { + public double visitPrice(VisitablePrice v); +} diff --git a/src/Others/Historique.java b/src/Others/Historique.java index 3ff35b5..e515b03 100644 --- a/src/Others/Historique.java +++ b/src/Others/Historique.java @@ -6,7 +6,7 @@ import provisoire.Order; public class Historique { - ArrayList<Order> listOfOrder; + private ArrayList<Order> listOfOrder; public Historique(ArrayList<Order> listOfOrder) { super(); diff --git a/src/Others/IDCard.java b/src/Others/IDCard.java index fde40ba..e3cf941 100644 --- a/src/Others/IDCard.java +++ b/src/Others/IDCard.java @@ -2,21 +2,22 @@ package Others; public class IDCard { - - /** Constructeur priv� */ - private IDCard() - {} - - /** Instance unique non pr�initialis�e */ - private static IDCard INSTANCE = null; - - /** Point d'acc�s pour l'instance unique du singleton */ - public static IDCard getInstance() - { - if (INSTANCE == null) - { INSTANCE = new IDCard(); + + private static IDCard instance = null; + + private static long num; + + private IDCard(){} + + public static IDCard getInstance() { + if (instance==null) { + instance = new IDCard(); } - return INSTANCE; - } + return instance; + } + public long getNextSerialNumber(){ + return num++; + } + } diff --git a/src/Others/Position.java b/src/Others/Position.java new file mode 100644 index 0000000..ba80d49 --- /dev/null +++ b/src/Others/Position.java @@ -0,0 +1,36 @@ +package Others; + +public class Position { + + private double x,y; + + public Position(double x, double y) { + super(); + this.x = x; + this.y = y; + } + + @Override + public String toString() { + return "Position [x=" + x + ", y=" + y + "]"; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + }; + + + +} diff --git a/src/Trash/UserFactory.java b/src/Trash/UserFactory.java deleted file mode 100644 index 4d1600a..0000000 --- a/src/Trash/UserFactory.java +++ /dev/null @@ -1,48 +0,0 @@ -package Trash; - - -import java.io.*; -import java.lang.*; -import java.util.*; - -import javax.management.RuntimeErrorException; - -import Others.Adress; - -public class UserFactory { - - private ArrayList<User> listOfUser; - - public UserFactory(ArrayList<User> listOfUser) { - super(); - this.listOfUser = listOfUser; - } - - public ArrayList<User> getListOfUser() { - return listOfUser; - } - - public void setListOfUser(ArrayList<User> listOfUser) { - this.listOfUser = listOfUser; - } - - @Override - public String toString() { - return "UserFactory [listOfUser=" + listOfUser + "]"; - } - - public void createRestaurant(long id, long phoneNumber, String name, String username, String mail, String password, Adress adress, - boolean activated, String typeOfHumanUser){ - if(typeOfUser == "Restaurant"){ - try{ - User newUser = new Restaurant(id,phoneNumber,name,username,mail,password,adress,activated); - listOfUser.add(newUser); - } - catch (Exception e) { - - } // faire le try/catch � l'ajout d'un User pour �viter les doublons. - } - } - } - - diff --git a/src/User/Courrier.java b/src/User/Courrier.java new file mode 100644 index 0000000..068aabe --- /dev/null +++ b/src/User/Courrier.java @@ -0,0 +1,59 @@ +package User; + +import Core.MyFoodora; +import Others.Adress; +import Others.Position; + +public class Courrier extends HumanUser { + + private Position position; + private long nbOfLivraison; + private boolean available; + + + public Courrier(long phoneNumber, String name, String username, String mail, String password, + Adress adress, boolean activated, String birthdayDate, String surname,Position position, boolean available) { + super(phoneNumber, name, username, mail, password, adress, activated, birthdayDate, surname); + this.position = position; + this.nbOfLivraison = 0; + this.available = available; + } + + + public Position getPosition() { + return position; + } + + + public void setPosition(Position position) { + this.position = position; + } + + + public long getNbOfLivraison() { + return nbOfLivraison; + } + + + public void setAvailable(boolean available) { + this.available = available; + } + + public void register(MyFoodora foodora){ + + } + + public void unregister(MyFoodora foodora){ + + } + + public void acceptDelivery(){ + + } + + public void refuseDelivery(){ + + } + + +} diff --git a/src/User/Customer.java b/src/User/Customer.java index ea66fbd..fc5eced 100644 --- a/src/User/Customer.java +++ b/src/User/Customer.java @@ -2,49 +2,36 @@ package User; import Cards.BasicFidelityCard; import Cards.FidelityCard; +import Cards.LotteryFidelityCard; +import Cards.PointFidelityCard; +import Cards.VisitableCard; +import Cards.VisiterCard; import Others.Adress; import Others.Historique; import Others.IDCard; import provisoire.Order; -public class Customer extends HumanUser { +public class Customer extends HumanUser implements VisiterCard { - boolean spamAgree; - Historique historique; - FidelityCard card; + private boolean spamAgree; + private Historique historique; + private FidelityCard card; + private IDCard idCard; - public Customer(long id, long phoneNumber, String name, String username, String mail, String password, + public Customer(long phoneNumber, String name, String username, String mail, String password, Adress adress, boolean activated, String birthdayDate, String surname,boolean spamAgree,Historique historique,FidelityCard card ) { - super(id, phoneNumber, name, username, mail, password, adress, activated, birthdayDate, surname); + super(phoneNumber, name, username, mail, password, adress, activated, birthdayDate, surname); this.spamAgree = spamAgree; this.historique = historique; this.card = card; } - - public boolean isSpamAgree() { - return spamAgree; - } - - public void setSpamAgree(boolean spamAgree) { - this.spamAgree = spamAgree; - } - - public Historique getHistorique() { - return historique; - } - - public void setHistorique(Historique historique) { - this.historique = historique; - } + public FidelityCard getCard() { return card; } - public void setCard(FidelityCard card) { - this.card = card; - } @Override public String toString() { @@ -57,18 +44,82 @@ public class Customer extends HumanUser { public void registerFidelityPlan(String newTypeOfFidelityCard){ if(newTypeOfFidelityCard == this.card.returnType()){ - System.out.println("You have already this card"); - if ((newTypeOfFidelityCard != "Basic") &(newTypeOfFidelityCard != "Lottery")&(newTypeOfFidelityCard != "Point")){ - System.out.println("You have to choose between Point, Lottery or Basic card"); + System.out.println("You already have this card");} + else if ((newTypeOfFidelityCard != "Basic")&(newTypeOfFidelityCard != "Lottery")&(newTypeOfFidelityCard != "Point")){ + System.out.println("You have to choose between Point, Lottery card"); + } + else if (newTypeOfFidelityCard == "Basic"){ + System.out.println("You have to choose between Point, Lottery card"); } else { - if (newTypeOfFidelityCard == "Basic"){ - this.card = new BasicFidelityCard(new IDCard().getId); + if (newTypeOfFidelityCard == "Point"){ + idCard=IDCard.getInstance(); + this.card = new PointFidelityCard(idCard.getNextSerialNumber(),0); + } + + if (newTypeOfFidelityCard == "Lottery"){ + idCard=IDCard.getInstance(); + this.card = new LotteryFidelityCard(idCard.getNextSerialNumber(),10); + } } } + + public void unregisterFidelityPlan(String newTypeOfFidelityCard){ + if(this.card.returnType() == "Basic"){ + System.out.println("You already have this card");} + + else { + idCard=IDCard.getInstance(); + this.card = new BasicFidelityCard(idCard.getNextSerialNumber()); + } } + public Historique getHistorique() { + return historique; + } + public long getPointInTheCard(){ + if((this.card.returnType() == "Basic") || (this.card.returnType() == "Lottery")){ + System.out.println("You don't have the right type of Card"); + return 0; + } + else { + return visit(card); + } + } + + @Override + public long visit(VisitableCard card) { + return card.accept(); + } + + public void acceptSpam (){ + if (spamAgree == true){ + System.out.println("You've already accept to receive notifications"); + } + else { + this.spamAgree = true; + } + } + + public void refuseSpam(){ + if (spamAgree == false){ + System.out.println("You've already refuse to receive notifications"); + } + else { + this.spamAgree = false; + } + } + + + + + + + + } + + + -} diff --git a/src/User/HumanUser.java b/src/User/HumanUser.java index 76182c0..e0a2d09 100644 --- a/src/User/HumanUser.java +++ b/src/User/HumanUser.java @@ -4,11 +4,11 @@ import Others.Adress; public class HumanUser extends User { - String birthdayDate, surname; + private String birthdayDate, surname; - public HumanUser(long id, long phoneNumber, String name, String username, String mail, String password, - Adress adress, boolean activated , String birthdayDate, String surname) { - super(id, phoneNumber, name, username, mail, password, adress, activated); + public HumanUser(long phoneNumber, String name, String username, String mail, String password, Adress adress, + boolean activated , String birthdayDate, String surname) { + super(phoneNumber, name, username, mail, password, adress, activated); this.birthdayDate = birthdayDate; this.surname = surname; } diff --git a/src/User/HumanUserFactory.java b/src/User/HumanUserFactory.java index 348b050..91ed5eb 100644 --- a/src/User/HumanUserFactory.java +++ b/src/User/HumanUserFactory.java @@ -5,10 +5,10 @@ import Others.Adress; public class HumanUserFactory extends UserFactory { @Override - public void createUser(long id, long phoneNumber, String name, String username, String mail, String password, + public void createUser(long phoneNumber, String name, String username, String mail, String password, Adress adress, boolean activated) { try{ - User newUser = new Restaurant(id,phoneNumber,name,username,mail,password,adress,activated); + User newUser = new Restaurant(phoneNumber,name,username,mail,password,adress,activated); } catch (Exception e) {} // faire le try/catch � l'ajout d'un User pour �viter les doublons. diff --git a/src/User/IDUser.java b/src/User/IDUser.java new file mode 100644 index 0000000..45fce25 --- /dev/null +++ b/src/User/IDUser.java @@ -0,0 +1,24 @@ +package User; + + + +public class IDUser { + + + private static IDUser instance = null; + + private static long num; + + private IDUser(){} + + public static IDUser getInstance() { + if (instance==null) { + instance = new IDUser(); + } + return instance; + } + public long getNextSerialNumber(){ + return num++; + } + +} diff --git a/src/User/Manager.java b/src/User/Manager.java index 96ee82a..92f20d3 100644 --- a/src/User/Manager.java +++ b/src/User/Manager.java @@ -1,15 +1,16 @@ package User; +import Core.MyFoodora; import java.util.ArrayList; import Others.Adress; -import provisoire.MyFoodora; + public class Manager extends HumanUser { - public Manager(long id, long phoneNumber, String name, String username, String mail, String password, Adress adress, + public Manager(long phoneNumber, String name, String username, String mail, String password, Adress adress, boolean activated, String birthdayDate, String surname) { - super(id, phoneNumber, name, username, mail, password, adress, activated, birthdayDate, surname); + super(phoneNumber, name, username, mail, password, adress, activated, birthdayDate, surname); } diff --git a/src/User/MoralUser.java b/src/User/MoralUser.java index 7ce03c7..4cade1f 100644 --- a/src/User/MoralUser.java +++ b/src/User/MoralUser.java @@ -4,9 +4,9 @@ import Others.Adress; public class MoralUser extends User { - public MoralUser(long id, long phoneNumber, String name, String username, String mail, String password, + public MoralUser(long phoneNumber, String name, String username, String mail, String password, Adress adress, boolean activated) { - super(id, phoneNumber, name, username, mail, password, adress, activated); + super(phoneNumber, name, username, mail, password, adress, activated); // TODO Auto-generated constructor stub } diff --git a/src/User/MoralUserFactory.java b/src/User/MoralUserFactory.java index f73a8b6..0c4dbb5 100644 --- a/src/User/MoralUserFactory.java +++ b/src/User/MoralUserFactory.java @@ -5,7 +5,7 @@ import Others.Adress; public class MoralUserFactory extends UserFactory { @Override - public void createUser(long id, long phoneNumber, String name, String username, String mail, String password, + public void createUser(long phoneNumber, String name, String username, String mail, String password, Adress adress, boolean activated) { // TODO Auto-generated method stub diff --git a/src/User/Restaurant.java b/src/User/Restaurant.java index fe7cdc5..971ba54 100644 --- a/src/User/Restaurant.java +++ b/src/User/Restaurant.java @@ -6,9 +6,9 @@ public class Restaurant extends MoralUser { //ArrayList<Meal> listOfMeal; - public Restaurant(long id, long phoneNumber, String name, String username, String mail, String password, + public Restaurant(long phoneNumber, String name, String username, String mail, String password, Adress adress, boolean activated) { - super(id, phoneNumber, name, username, mail, password, adress, activated); + super(phoneNumber, name, username, mail, password, adress, activated); //this.listOfMeal = listOfMeal } diff --git a/src/User/User.java b/src/User/User.java index 1fa1fb6..d0f6817 100644 --- a/src/User/User.java +++ b/src/User/User.java @@ -5,18 +5,23 @@ import java.io.*; import java.lang.*; import java.util.*; -public abstract class User { +import Core.MyFoodora; - private long id,phoneNumber; +public abstract class User { + + + protected long id; + private long phoneNumber; private String name,username,mail,password; private Adress adress; private boolean activated; + - - public User(long id, long phoneNumber, String name, String username, String mail, String password, Adress adress, + public User(long phoneNumber, String name, String username, String mail, String password, Adress adress, boolean activated) { super(); - this.id = id; + IDUser idUser = IDUser.getInstance(); + this.id = idUser.getNextSerialNumber(); this.phoneNumber = phoneNumber; this.name = name; this.username = username; @@ -32,10 +37,6 @@ public abstract class User { } - public void setId(long id) { - this.id = id; - } - public long getPhoneNumber() { return phoneNumber; @@ -77,11 +78,6 @@ public abstract class User { } - public String getPassword() { - return password; - } - - public void setpassword(String password) { this.password = password; } @@ -113,14 +109,12 @@ public abstract class User { + ", mail=" + mail + ", password=" + password + ", adress=" + adress + ", activated=" + activated + "]"; } - public void register(){ + public void register(MyFoodora foodora){ System.out.println("Please writte your username"); Scanner sc = new Scanner(System.in); String usernametest = sc.nextLine(); System.out.println("Please enter your password"); String passwordtest = sc.nextLine(); - // faire un if sur la condition d'appartenance � MyFoodora core + try/catch - } diff --git a/src/User/UserFactory.java b/src/User/UserFactory.java index 2e620b3..262ef3b 100644 --- a/src/User/UserFactory.java +++ b/src/User/UserFactory.java @@ -12,7 +12,7 @@ import Others.Adress; public abstract class UserFactory { - public abstract void createUser(long id, long phoneNumber, String name, String username, String mail, String password, + public abstract void createUser(long phoneNumber, String name, String username, String mail, String password, Adress adress, boolean activated); -- GitLab