diff --git a/production/ProjectClothingStore/META-INF/META-INF/ProjectClothingStore.kotlin_module b/production/ProjectClothingStore/META-INF/META-INF/ProjectClothingStore.kotlin_module new file mode 100644 index 0000000..a49347a Binary files /dev/null and b/production/ProjectClothingStore/META-INF/META-INF/ProjectClothingStore.kotlin_module differ diff --git a/production/test/ProjectClothingStore/META-INF/ProjectClothingStore.kotlin_module b/production/test/ProjectClothingStore/META-INF/ProjectClothingStore.kotlin_module new file mode 100644 index 0000000..a49347a Binary files /dev/null and b/production/test/ProjectClothingStore/META-INF/ProjectClothingStore.kotlin_module differ diff --git a/src/Controller/AutoFuncController.java b/src/Controller/AutoFuncController.java deleted file mode 100644 index 98cca1c..0000000 --- a/src/Controller/AutoFuncController.java +++ /dev/null @@ -1,25 +0,0 @@ -package controller; -import View.*; -import model.*; - - -public class AutoFuncController { - ViewInterface viewInterface; - AutoFuncModel model; - - public AutoFuncController(ViewInterface viewInterface, AutoFuncModel model) { - this.viewInterface = viewInterface; - this.model = model; - } - - public AutoFuncController() { - - } - - - public void checkCurrentStockThread() - { - model.checkCurrentStockThread(); - } - -} diff --git a/src/Controller/ItemController.java b/src/Controller/ItemController.java deleted file mode 100644 index 1edd450..0000000 --- a/src/Controller/ItemController.java +++ /dev/null @@ -1,48 +0,0 @@ -package controller; -import View.*; -import model.*; -import model.entities.*; - - -public class ItemController { - ViewInterface viewInterface; - model.ItemModel model; - - public ItemController(ViewInterface viewInterface, ItemModel model) { - this.viewInterface = viewInterface; - this.model = model; - } - - public ItemController() { - - } - - public Item searchItem(int id, int size) - { - return model.searchItem(id, size); - } - public Item bestSellingProduct() { - return model.bestSellingProduct(); - } - public boolean isItemsInStock(Purchase pur) - { - return model.isItemsInStock(pur); - } - - public void addPants(Pants pants) - { - model.addPants(pants); - } - - public void addShoe(Shoe shoe) - { - model.addShoe(shoe); - } - - - public void addShirt(Shirt shirt) - { - model.addShirt(shirt); - } - -} diff --git a/src/Controller/ManagerController.java b/src/Controller/ManagerController.java deleted file mode 100644 index 8428892..0000000 --- a/src/Controller/ManagerController.java +++ /dev/null @@ -1,40 +0,0 @@ -package controller; -import View.*; -import model.*; -import model.entities.Worker; - - -public class ManagerController { - ViewInterface viewInterface; - model.ManagerModel model; - - public ManagerController(ViewInterface viewInterface, ManagerModel model) { - this.viewInterface = viewInterface; - this.model = model; - } - - public ManagerController() { - - } - - public String ChangeHourlySalary(int workerId, double newSalary) { - return model.ChangeHourlySalary(workerId, newSalary); - } - - public void addWorker(Worker w) { - model.addWorker(w); - } - - public String watchMonthlySalary(int workerId) - { - return model.watchMonthlySalary(workerId); - } - - public boolean isExistsWorker(int workerId) - { - return model.isExistsWorker(workerId); - } - - - -} diff --git a/src/Controller/MemberController.java b/src/Controller/MemberController.java deleted file mode 100644 index 536f7f5..0000000 --- a/src/Controller/MemberController.java +++ /dev/null @@ -1,45 +0,0 @@ -package controller; -import View.*; -import model.*; -import model.entities.Member; - - -public class MemberController { - ViewInterface viewInterface; - model.MemberModel model; - - public MemberController(ViewInterface viewInterface, MemberModel model) { - this.viewInterface = viewInterface; - this.model = model; - } - - public MemberController() { - - } - - public void addClubMember(Member m) - { - model.addClubMember(m); - } - - public void deleteClubMember(int id) - { - model.deleteClubMember(id); - } - - public boolean isExistsClubMember(int id) - { - return model.isExistsClubMember(id); - } - - public void birthdayPointAuto() - { - model.birthdayPointAuto(); - } - - public void updateMembersPoints(int price, Member m) - { - model.updateMembersPoints(price, m); - } - -} diff --git a/src/Controller/StoreController.java b/src/Controller/StoreController.java deleted file mode 100644 index ae6affd..0000000 --- a/src/Controller/StoreController.java +++ /dev/null @@ -1,91 +0,0 @@ -package controller; -import View.*; -import model.*; -import model.entities.*; - -import java.util.ArrayList; - - -public class StoreController { - ViewInterface viewInterface; - model.StoreModel model; - - public StoreController(ViewInterface viewInterface, StoreModel model) { - this.viewInterface = viewInterface; - this.model = model; - } - - public StoreController() { - - } - - - public static StoreModel getInstance() - { - return StoreModel.getInstance(); - } - public static ArrayList getAllPurchase() - { - return StoreModel.getAllPurchase(); - } - - public static ArrayList getClubMembers() - { - return StoreModel.getClubMembers(); - } - - public static ArrayList getItems() - { - return StoreModel.getItems(); - } - - public static ArrayList getWorkers() - { - return StoreModel.getWorkers(); - } - - public int averageSellingRate() - { - return model.averageSellingRate(); - } - - public int Login(int id, String password) - { - return model.Login(id, password); - } - - - public boolean isManager(int id, String password) - { - String idString =String.valueOf(id); - if (idString == null || idString.trim().equals("") || password == null || password.trim().equals("")) { - throw new IllegalArgumentException("Username or password must not be null"); - } - String session = model.isManager(id, password); - if (session != null) { - System.out.println("Session token: " + session); - return true; - } - - return false; - } - - public boolean isWorker(int id, String password) - { - String idString =String.valueOf(id); - if (idString == null || idString.trim().equals("") || password == null || password.trim().equals("")) { - throw new IllegalArgumentException("Username or password must not be null"); - } - String session = model.isWorker(id, password); - if (session != null) { - System.out.println("Session token: " + session); - return true; - } - - return false; - } - - - - -} diff --git a/src/Controller/WorkerController.java b/src/Controller/WorkerController.java deleted file mode 100644 index 2e58fb1..0000000 --- a/src/Controller/WorkerController.java +++ /dev/null @@ -1,33 +0,0 @@ -package controller; -import View.*; -import model.*; -import model.entities.Worker; - -public class WorkerController { - ViewInterface viewInterface; - model.WorkerModel model; - - public WorkerController(ViewInterface viewInterface, WorkerModel model) { - this.viewInterface = viewInterface; - this.model = model; - } - - public WorkerController() { - - } - - public void addWorker(Worker w) { - model.addWorker(w); - } - - public String watchMonthlySalary(int workerId) - { - return model.watchMonthlySalary(workerId); - } - - public boolean isExistsWorker(int workerId) - { - return model.isExistsWorker(workerId); - } - -} diff --git a/src/Model/AutoFuncModel.java b/src/Model/AutoFuncModel.java deleted file mode 100644 index 1f72c4e..0000000 --- a/src/Model/AutoFuncModel.java +++ /dev/null @@ -1,48 +0,0 @@ -package model; - -import model.entities.Item; - -import java.util.ArrayList; - -public class AutoFuncModel implements Runnable { - public void checkCurrentStock() { - int i; - - double presentOfCurrentStock = 0.2; - ArrayList items = new ArrayList(); - try { - items = StoreModel.getInstance().getItems(); - for (i = 0; i < items.size(); i++) { - if (((double) items.get(i).getCurrentStock() / items.get(i).getBaseStock()) < presentOfCurrentStock) { - System.out.println("System Message: stock is low. " + "item id:" + items.get(i).getItemId()); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override - public void run() { - checkCurrentStock(); - } - - - public void checkCurrentStockThread() { - int i; - try { - Runnable runnable = new AutoFuncModel(); - Thread t1 = new Thread(runnable); - for (i = 144; i > 0; i--) { // 10 minutes loop, All day long - t1.run(); - Thread.sleep(6000000); // 10 Minutes - } - - } catch (InterruptedException e) { - System.out.println("Thread interrupted."); - } - - } - - -} diff --git a/src/View/UserInterface.java b/src/View/UserInterface.java deleted file mode 100644 index aee1810..0000000 --- a/src/View/UserInterface.java +++ /dev/null @@ -1,54 +0,0 @@ -package View; - -import controller.*; -import model.MemberModel; - -import java.util.Scanner; - -public class UserInterface implements ViewInterface, Runnable { - private AutoFuncController autoFuncController; - private ItemController itemController; - private ManagerController managerController; - private MemberController memberController; - private OpenController openController; - private PurchaseController purchaseController; - private StoreController storeController; - private WorkerController workerController; - - - - public UserInterface() { - - autoFuncController = new AutoFuncController(); - itemController = new ItemController(); - managerController = new ManagerController(); - memberController = new MemberController(); - openController = new OpenController(); - purchaseController = new PurchaseController(); - storeController = new StoreController(); - workerController = new WorkerController(); - - - - } - - - - @Override - public void start() { - new Thread(this).run(); - } - - - - public void run() { - - System.out.println("Welcome to the clothing store management system"); - memberController.birthdayPointAuto(); - - - - - - } -} \ No newline at end of file diff --git a/src/View/ViewInterface.java b/src/View/ViewInterface.java deleted file mode 100644 index cd1033a..0000000 --- a/src/View/ViewInterface.java +++ /dev/null @@ -1,6 +0,0 @@ -package View; -import controller.*; -public interface ViewInterface { - void start(); - -} diff --git a/src/controller/AutoFuncController.java b/src/controller/AutoFuncController.java new file mode 100644 index 0000000..f17897e --- /dev/null +++ b/src/controller/AutoFuncController.java @@ -0,0 +1,22 @@ +package controller; +import model.entities.Item; +import view.*; +import model.*; + +import java.util.ArrayList; + + +public class AutoFuncController { + + protected AutoFuncModel model; + + public AutoFuncController() { + this.model = new AutoFuncModel(); + } + + public ArrayList checkCurrentStock() + { + return model.checkCurrentStock(); + } + +} diff --git a/src/controller/GeneralOpController.java b/src/controller/GeneralOpController.java new file mode 100644 index 0000000..a508157 --- /dev/null +++ b/src/controller/GeneralOpController.java @@ -0,0 +1,39 @@ +package controller; +import view.*; +import model.*; +import model.entities.*; + +public class GeneralOpController { + protected GeneralOpModel model; + + public GeneralOpController() { + this.model = new model.GeneralOpModel(); + } + + public double averageSellingRate() + { + return model.averageSellingRate(); + } + + public String Login(int id, String password) + { + return model.Login(id, password); + } + + public boolean isManager(int id, String password) { + + String session = model.isManager(id, password); + if (session != null) { + return true; + } + return false; + } + + public boolean isWorker(int id, String password){ + String session = model.isWorker(id, password); + if (session != null) { + return true; + } + return false; + } +} diff --git a/src/controller/ItemController.java b/src/controller/ItemController.java new file mode 100644 index 0000000..62863d2 --- /dev/null +++ b/src/controller/ItemController.java @@ -0,0 +1,42 @@ +package controller; +import view.*; +import model.*; +import model.entities.*; + + +public class ItemController { + + protected ItemModel model; + + public ItemController() { + this.model = new ItemModel(); + } + + public Item searchItem(int id, int size) + { + return model.searchItem(id,size); + } + + public Item bestSellingProduct() { return model.bestSellingProduct(); } + + + public boolean isItemExists(int id, int size){return model.isItemExists(id,size);} + + public boolean addPants(Pants pants) { + return model.addPants(pants); + } + + public boolean addShoe(Shoe shoe) { + return model.addShoe(shoe); + } + + public boolean addShirt(Shirt shirt) { + return model.addShirt(shirt); + } + + public boolean deleteItem(int id, int size) + { + return model.deleteItem(id,size); + } + +} diff --git a/src/controller/ManagerController.java b/src/controller/ManagerController.java new file mode 100644 index 0000000..20aca37 --- /dev/null +++ b/src/controller/ManagerController.java @@ -0,0 +1,19 @@ +package controller; +import view.*; +import model.*; +import model.entities.Worker; + + +public class ManagerController extends WorkerController{ + + protected ManagerModel model; + + + public ManagerController() { + this.model = new ManagerModel(); + } + + public boolean changeHourlySalary(int workerId, int newSalary) { + return model.changeHourlySalary(workerId, newSalary); + } +} diff --git a/src/controller/MemberController.java b/src/controller/MemberController.java new file mode 100644 index 0000000..7ef2dea --- /dev/null +++ b/src/controller/MemberController.java @@ -0,0 +1,45 @@ +package controller; +import view.*; +import model.*; +import model.entities.Member; + +import java.util.ArrayList; + + +public class MemberController { + + protected MemberModel model; + + + public MemberController() { + this.model = new MemberModel(); + } + + public boolean addClubMember(Member m) + { + return model.addClubMember(m); + } + + public boolean deleteClubMember(int id) + { + return model.deleteClubMember(id); + } + + public boolean isExistsClubMember(int id) + { + return model.isExistsClubMember(id); + } + + public Member searchMember(int id){return model.searchMember(id);} + + public ArrayList birthdayPointAuto() + { + return model.birthdayPointAuto(); + } + + public void updateMembersPoints(int price, Member m) + { + model.updateMembersPoints(price, m); + } + +} diff --git a/src/Controller/PurchaseController.java b/src/controller/PurchaseController.java similarity index 65% rename from src/Controller/PurchaseController.java rename to src/controller/PurchaseController.java index a24332d..0c35764 100644 --- a/src/Controller/PurchaseController.java +++ b/src/controller/PurchaseController.java @@ -1,29 +1,23 @@ package controller; -import View.*; +import view.*; import model.*; import model.entities.Member; import model.entities.Purchase; public class PurchaseController { - ViewInterface viewInterface; - model.PurchaseModel model; - public PurchaseController(ViewInterface viewInterface, PurchaseModel model) { - this.viewInterface = viewInterface; - this.model = model; - } + protected PurchaseModel model; public PurchaseController() { - + this.model = new PurchaseModel(); } - public Purchase lastPurchase(int memId) { return model.lastPurchase(memId); } - public String selling(Purchase pur) + public int selling(Purchase pur) { return model.selling(pur); } diff --git a/src/controller/StoreController.java b/src/controller/StoreController.java new file mode 100644 index 0000000..9509a35 --- /dev/null +++ b/src/controller/StoreController.java @@ -0,0 +1,36 @@ +package controller; +import view.*; +import model.*; +import model.entities.*; + +import java.util.ArrayList; + + +public class StoreController { + + protected StoreModel model; + + public StoreController() { + } + + public static ArrayList getAllPurchase() + { + return StoreModel.getAllPurchase(); + } + + public static ArrayList getClubMembers() + { + return StoreModel.getClubMembers(); + } + + public static ArrayList getItems() + { + return StoreModel.getItems(); + } + + public static ArrayList getWorkers() + { + return StoreModel.getWorkers(); + } + +} diff --git a/src/controller/WorkerController.java b/src/controller/WorkerController.java new file mode 100644 index 0000000..12a2803 --- /dev/null +++ b/src/controller/WorkerController.java @@ -0,0 +1,28 @@ +package controller; +import view.*; +import model.*; +import model.entities.Worker; + +public class WorkerController { + + WorkerModel model; + + public WorkerController() { + this.model = new WorkerModel(); + } + + public boolean addWorker(Worker w) { + return model.addWorker(w); + } + + public int watchMonthlySalary(int workerId) + { + return model.watchMonthlySalary(workerId); + } + + public boolean isExistsWorker(int workerId) + { + return model.isExistsWorker(workerId); + } + +} diff --git a/src/driver/MVCDriver.java b/src/driver/MVCDriver.java index 25f216d..b95f8ca 100644 --- a/src/driver/MVCDriver.java +++ b/src/driver/MVCDriver.java @@ -1,18 +1,11 @@ package driver; -import View.UserInterface; -import View.ViewInterface; -import controller.OpenController; -import model.OpenModel; +import view.UserInterface; public class MVCDriver { public static void main(String[] args) { - ViewInterface view = new UserInterface(); + UserInterface view = new UserInterface(); view.start(); - - - } - } diff --git a/src/model/AutoFuncModel.java b/src/model/AutoFuncModel.java new file mode 100644 index 0000000..ab987e7 --- /dev/null +++ b/src/model/AutoFuncModel.java @@ -0,0 +1,34 @@ +package model; + +import model.entities.Item; + +import java.util.ArrayList; +import java.util.Date; +import java.util.Timer; +import java.util.TimerTask; + +import static java.lang.Thread.sleep; + +public class AutoFuncModel { + + + public ArrayList checkCurrentStock() { + int i; + double presentOfCurrentStock = 0.2; + ArrayList itemsLow = new ArrayList(); + ArrayList items = new ArrayList(); + try { + items = StoreModel.getInstance().getItems(); + for (i = 0; i < items.size(); i++) { + if (((double) items.get(i).getCurrentStock() / items.get(i).getBaseStock()) < presentOfCurrentStock) { + String s=String.valueOf(items.get(i).getItemId()); + itemsLow.add("System Message: stock is low. " + "item id:" + s); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return itemsLow; + } + +} diff --git a/src/model/GeneralOpModel.java b/src/model/GeneralOpModel.java new file mode 100644 index 0000000..59d0a4f --- /dev/null +++ b/src/model/GeneralOpModel.java @@ -0,0 +1,85 @@ +package model; + +import model.entities.Purchase; +import model.entities.Worker; + +import java.util.ArrayList; +import java.util.UUID; + +public class GeneralOpModel { + public double averageSellingRate() { + int i=1; + double sum=0; + ArrayList pur = new ArrayList<>(); + try { + pur = StoreModel.getInstance().getAllPurchase(); + for (i = 0; i < pur.size(); i++) { + sum += pur.get(i).getShoppingRating(); + } + sum/=i; + } catch (Exception e) { + e.printStackTrace(); + } + return sum; + } + + public String Login(int id, String password) { + int i; + ArrayList Workers = null; + try { + Workers = new ArrayList<>(); + Workers = StoreModel.getInstance().getWorkers(); + for (i = 0; i < Workers.size(); i++) { + if((Integer.valueOf(id) == Workers.get(i).getId() && Workers.get(i).getPassword().equals(password))) + { + return Workers.get(i).getJobType(); + } + } + } catch (Exception e) { + e.printStackTrace(); + + } + return "null"; + } + + public String isManager(int id, String password) { + String i; + + if(id <= 0 || password == null || password.trim().equals("")) + { + throw new IllegalArgumentException("id or password must not be null or wrong"); + } + + try { + i = Login(id, password); + if(i.equals("manager")) + { + return UUID.randomUUID().toString(); + } + + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public String isWorker(int id, String password) { + + if( id <= 0 || password == null || password.trim().equals("")) + { + throw new IllegalArgumentException("id or password must not be null or wrong"); + } + + try { + String i = Login(id, password); + if(i.equals("worker")) + { + return UUID.randomUUID().toString(); + } + + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/src/Model/ItemModel.java b/src/model/ItemModel.java similarity index 51% rename from src/Model/ItemModel.java rename to src/model/ItemModel.java index 0ca699d..5166373 100644 --- a/src/Model/ItemModel.java +++ b/src/model/ItemModel.java @@ -2,122 +2,134 @@ import model.entities.*; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.SQLException; +import java.sql.*; import java.util.ArrayList; public class ItemModel { public Item searchItem(int id, int size) { + if (id < 0 || size < 0) + { + throw new IllegalArgumentException("id or size must not be negative"); + } + int i; ArrayList items = new ArrayList<>(); try { items = StoreModel.getInstance().getItems(); for (i = 0; i < items.size(); i++) { - if ((Integer.valueOf(id) == (items.get(i).getItemId()) && items.get(i).getSize() == size && items.get(i).getBaseStock() - items.get(i).getCurrentStock() > 0)) { + if (id == items.get(i).getItemId() && items.get(i).getSize() == size && (items.get(i).getBaseStock() - items.get(i).getCurrentStock()) > 0) { return items.get(i); } } } catch (Exception e) { e.printStackTrace(); } - Item NONE = new Shirt(); - return NONE; - + return null; } - public Item bestSellingProduct() { - int i, max = 0; - Item temp = new Shirt(); + public boolean isItemExists(int id, int size) { + int i; ArrayList items = new ArrayList<>(); try { items = StoreModel.getInstance().getItems(); for (i = 0; i < items.size(); i++) { - if (items.get(i).getBaseStock() - items.get(i).getCurrentStock() > max) { - max = items.get(i).getBaseStock() - items.get(i).getCurrentStock(); - temp = items.get(i); + if (id == items.get(i).getItemId() && items.get(i).getSize() == size) { + return true; } } - } catch (Exception e) { e.printStackTrace(); } - return temp; + return false; } - public boolean isItemsInStock(Purchase pur) { - int i, j; - + public Item bestSellingProduct() { + int i, max = 0; + Item temp = null; ArrayList items = new ArrayList<>(); try { items = StoreModel.getInstance().getItems(); - for (i = 0; i < pur.getItem().size(); i++) { - for (j = 0; j < items.size(); j++) { - if (pur.getItem().get(i).getItemId() == items.get(j).getItemId()) - if (items.get(j).getCurrentStock() <= 0) { - System.out.println("item number:" + pur.getItem().get(i).getItemId() + " is out of stock!!"); - return false; - } + for (i = 0; i < items.size(); i++) { + if (items.get(i).getBaseStock() - items.get(i).getCurrentStock() > max) { + max = items.get(i).getBaseStock() - items.get(i).getCurrentStock(); + temp = items.get(i); } } + } catch (Exception e) { e.printStackTrace(); } - return true; + return temp; } + public boolean addPants(Pants pants) { + if (pants.getItemId() < 0 || pants.getSize() < 0) + { + throw new IllegalArgumentException("id or size must not be negative"); + } + if (isItemExists(pants.getItemId(), pants.getSize())) + { + throw new IllegalArgumentException("id and size exist"); + } + if (!isItemExists(pants.getItemId(), pants.getSize())) { + Connection connection = null; + try { + Class.forName("com.mysql.jdbc.Driver").newInstance(); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); + String INSERT_USERS_SQL = "INSERT INTO items" + " (itemid, color, price, type, size, brand, gender, drawstringcolor, pantstype, shirtstype, basestock, currentStock) VALUES " + + " (?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?);"; - public void addPants(Pants pants) { + PreparedStatement preparedStatement = connection.prepareStatement(INSERT_USERS_SQL); + connection.setAutoCommit(false); + preparedStatement.setInt(1, pants.getItemId()); + preparedStatement.setString(2, pants.getColor()); + preparedStatement.setInt(3, pants.getPrice()); + preparedStatement.setString(4, pants.getType()); + preparedStatement.setInt(5, pants.getSize()); + preparedStatement.setString(6, pants.getBrand()); + preparedStatement.setString(7, pants.getGender()); + preparedStatement.setString(8, "null"); + preparedStatement.setString(9, pants.getPantsType()); + preparedStatement.setString(10, "null"); + preparedStatement.setInt(11, pants.getBaseStock()); + preparedStatement.setInt(12, pants.getCurrentStock()); + preparedStatement.addBatch(); + int[] updateCounts = preparedStatement.executeBatch(); + connection.commit(); + connection.setAutoCommit(true); - Connection connection = null; - try { - Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); - String INSERT_USERS_SQL = "INSERT INTO items" + " (itemid, color, price, type, size, brand, gender, drawstringcolor, pantstype, shirtstype, basestock, currentStock) VALUES " + - " (?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?);"; - - PreparedStatement preparedStatement = connection.prepareStatement(INSERT_USERS_SQL); - connection.setAutoCommit(false); - preparedStatement.setInt(1, pants.getItemId()); - preparedStatement.setString(2, pants.getColor()); - preparedStatement.setInt(3, pants.getPrice()); - preparedStatement.setString(4, pants.getType()); - preparedStatement.setInt(5, pants.getSize()); - preparedStatement.setString(6, pants.getBrand()); - preparedStatement.setString(7, pants.getGender()); - preparedStatement.setString(8, "null"); - preparedStatement.setString(9, pants.getPantsType()); - preparedStatement.setString(10, "null"); - preparedStatement.setInt(11, pants.getBaseStock()); - preparedStatement.setInt(12, pants.getCurrentStock()); - preparedStatement.addBatch(); - int[] updateCounts = preparedStatement.executeBatch(); - connection.commit(); - connection.setAutoCommit(true); - - - } catch (IllegalAccessException | InstantiationException | SQLException | ClassNotFoundException e) { - e.printStackTrace(); - } finally { - try { - connection.close(); - } catch (SQLException e) { + } catch (IllegalAccessException | InstantiationException | SQLException | ClassNotFoundException e) { e.printStackTrace(); - } + } finally { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return true; } - + return false; } - public void addShoe(Shoe shoe) - { + public boolean addShoe(Shoe shoe) { + if (shoe.getItemId() < 0 || shoe.getSize() < 0) + { + throw new IllegalArgumentException("id or size must not be negative"); + } + if (isItemExists(shoe.getItemId(), shoe.getSize())) + { + throw new IllegalArgumentException("id and size exist"); + } + + if (!isItemExists(shoe.getItemId(), shoe.getSize())) { Connection connection = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); String INSERT_USERS_SQL = "INSERT INTO items" + " (itemid, color, price, type, size, brand, gender, drawstringcolor, pantstype, shirtstype, basestock, currentStock) VALUES " + " (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"; @@ -130,7 +142,7 @@ public void addShoe(Shoe shoe) preparedStatement.setInt(5, shoe.getSize()); preparedStatement.setString(6, shoe.getBrand()); preparedStatement.setString(7, shoe.getGender()); - preparedStatement.setString(8,shoe.getDrawstringColor()); + preparedStatement.setString(8, shoe.getDrawstringColor()); preparedStatement.setString(9, "null"); preparedStatement.setString(10, "null"); preparedStatement.setInt(11, shoe.getBaseStock()); @@ -149,18 +161,26 @@ public void addShoe(Shoe shoe) } catch (SQLException e) { e.printStackTrace(); } - + return true; } - } + return false; + } - public void addShirt(Shirt shirt) + public boolean addShirt(Shirt shirt) { + if (shirt.getItemId() < 0 || shirt.getSize() < 0) { - + throw new IllegalArgumentException("id or size must not be negative"); + } + if (isItemExists(shirt.getItemId(), shirt.getSize())) + { + throw new IllegalArgumentException("id and size exist"); + } + if (!isItemExists(shirt.getItemId(), shirt.getSize())) { Connection connection = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); String INSERT_USERS_SQL = "INSERT INTO items" + " (itemid, color, price, type, size, brand, gender, drawstringcolor, pantstype, shirtstype, basestock, currentStock) VALUES " + " (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"; @@ -175,7 +195,7 @@ public void addShirt(Shirt shirt) preparedStatement.setString(7, shirt.getGender()); preparedStatement.setString(8, "null"); preparedStatement.setString(9, "null"); - preparedStatement.setString(10,shirt.getShirtType()); + preparedStatement.setString(10, shirt.getShirtType()); preparedStatement.setInt(11, shirt.getBaseStock()); preparedStatement.setInt(12, shirt.getCurrentStock()); @@ -193,13 +213,31 @@ public void addShirt(Shirt shirt) } catch (SQLException e) { e.printStackTrace(); } - + return true; } + } + return false; + } + public boolean deleteItem(int id, int size) { + Connection connection = null; + String idNumber = String.valueOf(id); + String sizeNumber = String.valueOf(size); + String DELETE_USERS_SQL = "delete from items where itemid = " + idNumber + " and size = "+ sizeNumber+ ";"; + if (isItemExists(id,size) == true) { + try { - - - + Class.forName("com.mysql.jdbc.Driver").newInstance(); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); + Statement statement = connection.createStatement(); + statement.executeUpdate(DELETE_USERS_SQL); + return true; + } catch (Exception e) { + e.printStackTrace(); + } + } + return false; } } + diff --git a/src/Model/ManagerModel.java b/src/model/ManagerModel.java similarity index 71% rename from src/Model/ManagerModel.java rename to src/model/ManagerModel.java index 0c22927..98f8972 100644 --- a/src/Model/ManagerModel.java +++ b/src/model/ManagerModel.java @@ -2,23 +2,23 @@ import java.sql.*; -public class ManagerModel extends WorkerModel { +public class ManagerModel extends WorkerModel { - public String ChangeHourlySalary(int workerId, double newSalary) { + public boolean changeHourlySalary(int workerId, int newSalary) { if (!isExistsWorker(workerId)) { - return "worker are not registered!\n"; + return false; } Connection connection = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); Statement stmt = connection.createStatement(); String strUpdate = "update workers set hourlysalary = " + newSalary + " where id =" + workerId; int countUpdated = stmt.executeUpdate(strUpdate); - return "update successfully passed!"; + return true; } catch (IllegalAccessException | InstantiationException | SQLException | ClassNotFoundException e) { e.printStackTrace(); } finally { @@ -28,7 +28,7 @@ public String ChangeHourlySalary(int workerId, double newSalary) { e.printStackTrace(); } } - return "update failed!"; + return false; } diff --git a/src/Model/MemberModel.java b/src/model/MemberModel.java similarity index 61% rename from src/Model/MemberModel.java rename to src/model/MemberModel.java index b0a49f9..99b5a03 100644 --- a/src/Model/MemberModel.java +++ b/src/model/MemberModel.java @@ -11,14 +11,20 @@ public class MemberModel { public MemberModel() { } + public boolean addClubMember(Member m) { + if(m.getName().trim().equals("") || (m.getId() <= 0) || m.getPointsGained() < 0 || m.getDateOfBirth().trim().equals("")) + { + throw new IllegalArgumentException("name or id or pointsgaind or dateofbirth must not be null or wrong"); + } - public void addClubMember(Member m) { + if (isExistsClubMember(m.getId()) == true) { + throw new IllegalArgumentException("the member is already exist"); + } - if (isExistsClubMember(m.getId()) == false) { Connection connection = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); String INSERT_USERS_SQL = "INSERT INTO clubmembers" + " (name, id, dateofbirth, pointgained) VALUES " + " (?, ?, ?, ?);"; @@ -44,32 +50,28 @@ public void addClubMember(Member m) { } } + return true; - } } - public void deleteClubMember(int id) { + public boolean deleteClubMember(int id) { Connection connection = null; - String idNumber = String.valueOf(id); - String DELETE_USERS_SQL = "delete from clubmembers where id = " + idNumber + ";"; + String idNumber = String.valueOf(id); + String DELETE_USERS_SQL = "delete from clubmembers where id = " + idNumber + ";"; if (isExistsClubMember(id) == true) { + try { - try { - - Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); - Statement statement = connection.createStatement(); - statement.executeUpdate(DELETE_USERS_SQL); - System.out.println("Deletion was successfully"); - - } catch (Exception e) { - e.printStackTrace(); - } - - } else { - System.out.println("Unable to delete, no such user in the system"); + Class.forName("com.mysql.jdbc.Driver").newInstance(); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); + Statement statement = connection.createStatement(); + statement.executeUpdate(DELETE_USERS_SQL); + return true; + } catch (Exception e) { + e.printStackTrace(); } } + return false; +} public boolean isExistsClubMember(int id) { int i; @@ -88,10 +90,28 @@ public boolean isExistsClubMember(int id) { } - public void birthdayPointAuto() { + public Member searchMember(int id) { + int i; + ArrayList members = new ArrayList<>(); + try { + members = StoreModel.getInstance().getClubMembers(); + for (i = 0; i < members.size(); i++) { + if (Integer.valueOf(id) == (members.get(i).getId())) { + return members.get(i); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public ArrayList birthdayPointAuto() { int i; ArrayList clubMembers; + ArrayList birthdayMembers; try { + birthdayMembers = new ArrayList(); clubMembers = new ArrayList(); clubMembers = StoreModel.getInstance().getClubMembers(); Date date = new Date(); @@ -101,19 +121,18 @@ public void birthdayPointAuto() { for (i = 0; i < clubMembers.size(); i++) { String[] dateClubMember; dateClubMember = clubMembers.get(i).getDateOfBirth().split("/"); - int dayMember = Integer.parseInt(dateClubMember[0]); - int monthMember = Integer.parseInt(dateClubMember[1]); - if (Integer.valueOf(month) == Integer.valueOf(monthMember) && Integer.valueOf(day) == Integer.valueOf(dayMember)) { - updateMembersPoints(250, clubMembers.get(i)); - System.out.println("System message: 250 credits added to club member" + clubMembers.get(i).getName() + ", id: " + clubMembers.get(i).getId()); - } - + int dayMember = Integer.parseInt(dateClubMember[0]); + int monthMember = Integer.parseInt(dateClubMember[1]); + if (Integer.valueOf(month) == Integer.valueOf(monthMember) && Integer.valueOf(day) == Integer.valueOf(dayMember)) { + updateMembersPoints(250, clubMembers.get(i)); + birthdayMembers.add( clubMembers.get(i)); } - + } + return birthdayMembers; } catch (Exception e) { e.printStackTrace(); } - + return null; } public void updateMembersPoints(int price, Member m) { @@ -121,7 +140,7 @@ public void updateMembersPoints(int price, Member m) { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); Statement stmt = connection.createStatement(); String strUpdate = "update clubmembers set pointgained = pointgained +" + price + " where id =" + m.getId(); @@ -136,8 +155,4 @@ public void updateMembersPoints(int price, Member m) { } } } - - - - } diff --git a/src/Model/PurchaseModel.java b/src/model/PurchaseModel.java similarity index 77% rename from src/Model/PurchaseModel.java rename to src/model/PurchaseModel.java index f926018..4c78ec5 100644 --- a/src/Model/PurchaseModel.java +++ b/src/model/PurchaseModel.java @@ -11,6 +11,14 @@ public class PurchaseModel { public Purchase lastPurchase(int memId) { + if(memId < 0) + { + throw new IllegalArgumentException("id must not be negative"); + } + if(memId == 0) + { + throw new IllegalArgumentException("id must not be zero"); + } int i; ArrayList pur = new ArrayList<>(); try { @@ -23,17 +31,30 @@ public Purchase lastPurchase(int memId) { } catch (Exception e) { e.printStackTrace(); } - Purchase p = new Purchase(); - return p; + return null; } - public String selling(Purchase pur) { + public int selling(Purchase pur) { + if(pur.getClubMember().getName().equals("valueless") || pur.getClubMember().getDateOfBirth().equals("-1") || pur.getClubMember().getId() < 0 || pur.getClubMember().getPointsGained() < 0) + { + throw new IllegalArgumentException("name or id or pointsgaind or dateofbirth must not be null or wrong"); + } + if(pur.getItem().isEmpty()) + { + throw new IllegalArgumentException("The Array list Items must not be null or empty"); + } + if(pur.getPrice() < 0 || pur.getShoppingRating() < 0) + { + throw new IllegalArgumentException("the price or shoppingRating must not be negative"); + } + MemberModel memMod = new MemberModel(); + ItemModel itemModel = new ItemModel(); + if(!updateStockMinus(pur)) - return "Purchase faild!"; + return -1; int price = newPrice(pur.getPrice(), pur.getClubMember()); - System.out.println("The price is: " + price); memMod.updateMembersPoints((int) (0.1*price), pur.getClubMember()); int i; String strDate = new SimpleDateFormat("dd/MM/yyyy").format(new Date()); @@ -41,7 +62,7 @@ public String selling(Purchase pur) { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); Statement stmt = connection.createStatement(); for(i=0;i=0;j--) { String strUpdate2 = "update items set currentStock = currentStock +1 where itemid =" + pur.getItem().get(j).getItemId(); @@ -117,6 +135,4 @@ public boolean updateStockMinus(Purchase pur) { } return true; } - - } diff --git a/src/Model/StoreModel.java b/src/model/StoreModel.java similarity index 84% rename from src/Model/StoreModel.java rename to src/model/StoreModel.java index 4684361..37d2be2 100644 --- a/src/Model/StoreModel.java +++ b/src/model/StoreModel.java @@ -34,7 +34,7 @@ public static ArrayList getAllPurchase() { Connection connection = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); // Step 2:Create a statement using connection object Statement stmt = connection.createStatement(); @@ -69,7 +69,7 @@ public static ArrayList getAllPurchase() { Shirt shirts = new Shirt(color, brand, gender,type, price, size, currentStock, baseStock, id, shirtsType); items.add(shirts); break; - case "pant": + case "pants": Pants pants = new Pants(color, brand, gender,type, price, size, currentStock, baseStock, id, pantsType); items.add(pants); break; @@ -115,7 +115,7 @@ public static ArrayList getAllPurchase() { Shirt shirts = new Shirt(color, brand, gender,type, price, size, currentStock, baseStock, id, shirtsType); items.add(shirts); break; - case "pant": + case "pants": Pants pants = new Pants(color, brand, gender,type, price, size, currentStock, baseStock, id, pantsType); items.add(pants); break; @@ -148,7 +148,7 @@ public static ArrayList getClubMembers() { ClubMembers = new ArrayList(); Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); // Step 2:Create a statement using connection object Statement stmt = connection.createStatement(); @@ -190,7 +190,7 @@ public static ArrayList getItems() { Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); // Step 2:Create a statement using connection object Statement stmt = connection.createStatement(); @@ -217,7 +217,7 @@ public static ArrayList getItems() { Shirt shirts = new Shirt(color, brand, gender, type, price, size, currentStock, baseStock, id, shirtsType); items.add(shirts); break; - case "pant": + case "pants": Pants pants = new Pants(color, brand, gender,type, price, size, currentStock, baseStock, id, pantsType); items.add(pants); break; @@ -250,7 +250,7 @@ public static ArrayList getWorkers() { Workers = new ArrayList<>(); Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); // Step 2:Create a statement using connection object Statement stmt = connection.createStatement(); @@ -292,73 +292,7 @@ public static ArrayList getWorkers() { return Workers; } - public int averageSellingRate() { - int i=1; - int sum=0; - ArrayList pur = new ArrayList<>(); - try { - pur = StoreModel.getInstance().getAllPurchase(); - for (i = 0; i < pur.size(); i++) { - sum += pur.get(i).getShoppingRating(); - } - sum/=i; - } catch (Exception e) { - e.printStackTrace(); - } - return sum; - - } - - - - public int Login(int id, String password) { - int i; - ArrayList Workers = null; - try { - Workers = new ArrayList<>(); - Workers = StoreModel.getInstance().getWorkers(); - for (i = 0; i < Workers.size(); i++) { - if((Integer.valueOf(id) == Workers.get(i).getId() && Workers.get(i).getPassword().equals(password))) - { - return Workers.get(i).getId(); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - return -1; - } - - public String isManager(int id, String password) { - int i; - try { - i = Login(id, password); - if(i == 1) - { - return UUID.randomUUID().toString(); - } - - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - - public String isWorker(int id, String password) { - try { - int i = Login(id, password); - if(i != -1 && i != 1) - { - return UUID.randomUUID().toString(); - } - - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } } diff --git a/src/Model/WorkerModel.java b/src/model/WorkerModel.java similarity index 87% rename from src/Model/WorkerModel.java rename to src/model/WorkerModel.java index fc1f357..62fafaa 100644 --- a/src/Model/WorkerModel.java +++ b/src/model/WorkerModel.java @@ -10,12 +10,12 @@ public class WorkerModel { - public void addWorker(Worker w) { + public boolean addWorker(Worker w) { if (isExistsWorker(w.getId()) == false) { Connection connection = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); - connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "ProjectClothingStore"); + connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false", "root", "6560634i"); String INSERT_USERS_SQL = "INSERT INTO workers" + " (name, id, dateofbirth, hourlysalary, numHourMonth, jobType, password) VALUES " + " (?, ?, ?, ?, ?, ?, ?);"; @@ -40,16 +40,16 @@ public void addWorker(Worker w) { } catch (SQLException e) { e.printStackTrace(); } - + return true; } - } + return false; } - public String watchMonthlySalary(int workerId) { + public int watchMonthlySalary(int workerId) { if (!isExistsWorker(workerId)) { - return "You are not registered!\n"; + return -1; } int i; @@ -58,13 +58,13 @@ public String watchMonthlySalary(int workerId) { workers = StoreModel.getInstance().getWorkers(); for (i = 0; i < workers.size(); i++) { if (workerId == (workers.get(i).getId())) { - return "Your monthly salary is: " + workers.get(i).getHourlySalary() * workers.get(i).getNumHourMonth() + "\n"; + return workers.get(i).getHourlySalary() * workers.get(i).getNumHourMonth(); } } } catch (Exception e) { e.printStackTrace(); } - return "You are not registered!\n"; + return -1; } public boolean isExistsWorker(int workerId) { diff --git a/src/Model/entities/Item.java b/src/model/entities/Item.java similarity index 100% rename from src/Model/entities/Item.java rename to src/model/entities/Item.java diff --git a/src/Model/entities/Manager.java b/src/model/entities/Manager.java similarity index 100% rename from src/Model/entities/Manager.java rename to src/model/entities/Manager.java diff --git a/src/Model/entities/Member.java b/src/model/entities/Member.java similarity index 93% rename from src/Model/entities/Member.java rename to src/model/entities/Member.java index 9fe6913..0c96cdc 100644 --- a/src/Model/entities/Member.java +++ b/src/model/entities/Member.java @@ -12,7 +12,7 @@ public void setPointsGained(int pointsGained) { public Member() { super(); - this.pointsGained = -1; + this.pointsGained = 0; } public Member(String name, String dateOfBirth, int id, int pointsGained) { diff --git a/src/Model/entities/Pants.java b/src/model/entities/Pants.java similarity index 100% rename from src/Model/entities/Pants.java rename to src/model/entities/Pants.java diff --git a/src/Model/entities/Person.java b/src/model/entities/Person.java similarity index 100% rename from src/Model/entities/Person.java rename to src/model/entities/Person.java diff --git a/src/Model/entities/Purchase.java b/src/model/entities/Purchase.java similarity index 99% rename from src/Model/entities/Purchase.java rename to src/model/entities/Purchase.java index 2ac3c87..46e56f1 100644 --- a/src/Model/entities/Purchase.java +++ b/src/model/entities/Purchase.java @@ -15,5 +15,4 @@ public class Purchase { private ArrayList item; private int price; private int shoppingRating; - } diff --git a/src/Model/entities/Shirt.java b/src/model/entities/Shirt.java similarity index 100% rename from src/Model/entities/Shirt.java rename to src/model/entities/Shirt.java diff --git a/src/Model/entities/Shoe.java b/src/model/entities/Shoe.java similarity index 100% rename from src/Model/entities/Shoe.java rename to src/model/entities/Shoe.java diff --git a/src/Model/entities/Worker.java b/src/model/entities/Worker.java similarity index 100% rename from src/Model/entities/Worker.java rename to src/model/entities/Worker.java diff --git a/src/view/UserInterface.java b/src/view/UserInterface.java new file mode 100644 index 0000000..93da96f --- /dev/null +++ b/src/view/UserInterface.java @@ -0,0 +1,158 @@ +package view; + +import java.util.*; + +public class UserInterface implements Runnable { + private ViewFunc viewFunc; + + public UserInterface() { + this.viewFunc = new ViewFunc(); + } + + public void start() { + new Thread(this).run(); + } + + @Override + public void run() { + int i=1; + while (true){ + String str = viewFunc.login(); + if (str.equals( "manager")) { + managerScreen(); + + } + if (str.equals("worker")) { + workerScreen(); + + } + if (str.equals("none")) { + if (i==3) { + System.out.println("mistake number "+i+"/3"); + System.out.println("the program closes"); + return; + } + System.out.println("username or password are not correct - try again!"); + System.out.println("mistake number "+i+"/3"); + i++; + } + } + + } + + public void workerScreen() + { + viewFunc.runCheckCurrentStock(); + viewFunc.birthDayAuto(); + Scanner s = new Scanner(System.in); + while(true) { + System.out.println("Hello Worker!!"); + System.out.println("what do you want to do?(choose number)"); + System.out.println("1. search product by Id and size"); + System.out.println("2. add club member"); + System.out.println("3. delete club member"); + System.out.println("4. check if the club member exists"); + System.out.println("5. selling"); + System.out.println("6. watch last purchase"); + System.out.println("7. watch my monthly salary"); + System.out.println("Any other number to logout"); + int temp=s.nextInt(); + switch (temp) { + case 1: + viewFunc.searchItem(); + break; + case 2: + viewFunc.addClubMember(); + break; + case 3: + viewFunc.deleteClubMember(); + break; + case 4: + viewFunc.isMemberExists(); + break; + case 5: + viewFunc.selling(); + break; + case 6: + viewFunc.watchLastPurchase(); + break; + case 7: + viewFunc.watchMonthlySalary(); + break; + default: + System.out.println("** logout **"); + System.out.println(""); + return; + } + } + + } + + public void managerScreen() + { + viewFunc.runCheckCurrentStock(); + viewFunc.birthDayAuto(); + Scanner s = new Scanner(System.in); + while(true) { + System.out.println("Hello Manager!!"); + System.out.println("what do you want to do?(choose number)"); + System.out.println("1. search product by Id and size"); + System.out.println("2. add club member"); + System.out.println("3. delete club member"); + System.out.println("4. check if the club member exists"); + System.out.println("5. selling"); + System.out.println("6. watch last purchase"); + System.out.println("7. watch my monthly salary"); + System.out.println("8. watch average Selling Rate"); + System.out.println("9. find the best Selling Product"); + System.out.println("10. add new shoe/pants/shirt"); + System.out.println("11. Change Hourly Salary"); + System.out.println("12. add Worker"); + System.out.println("Any other number to logout"); + int temp=s.nextInt(); + switch (temp) { + case 1: + viewFunc.searchItem(); + break; + case 2: + viewFunc.addClubMember(); + break; + case 3: + viewFunc.deleteClubMember(); + break; + case 4: + viewFunc.isMemberExists(); + break; + case 5: + viewFunc.selling(); + break; + case 6: + viewFunc.watchLastPurchase(); + break; + case 7: + viewFunc.watchMonthlySalary(); + break; + case 8: + viewFunc.averageSellingRate(); + break; + case 9: + viewFunc.bestSellingProduct(); + break; + case 10: + viewFunc.addItem(); + break; + case 11: + viewFunc.changeHourlySalary(); + break; + case 12: + viewFunc.addWorker(); + break; + default: + System.out.println("** logout **"); + System.out.println(""); + return; + } + } + + } +} diff --git a/src/view/ViewFunc.java b/src/view/ViewFunc.java new file mode 100644 index 0000000..d3233a0 --- /dev/null +++ b/src/view/ViewFunc.java @@ -0,0 +1,369 @@ +package view; + +import model.entities.*; + +import java.util.*; +import controller.*; +import java.io.IOException; + +public class ViewFunc{ + private AutoFuncController autoFuncController; + private ItemController itemController; + private ManagerController managerController; + private MemberController memberController; + private PurchaseController purchaseController; + private StoreController storeController; + private WorkerController workerController; + private GeneralOpController generalOpController; + + public void birthDayAuto() + { + ArrayList temp = memberController.birthdayPointAuto(); + for(int i=0;i items = new ArrayList(); + int price = 0, temp; + Scanner s = new Scanner(System.in); + System.out.println("how many items?"); + int num = s.nextInt(); + for(int i=0;i itemsLow = new ArrayList(); + itemsLow = autoFuncController.checkCurrentStock(); + System.out.println(itemsLow.toString()); + + } + }; + + Timer timer = new Timer(); + timer.schedule(task, new Date(), 300000); + + } + +} diff --git a/tests/generalOpControllerTests/LoginTest.java b/tests/generalOpControllerTests/LoginTest.java new file mode 100644 index 0000000..32a42a0 --- /dev/null +++ b/tests/generalOpControllerTests/LoginTest.java @@ -0,0 +1,140 @@ +package generalOpControllerTests; + +import controller.GeneralOpController; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + + +import static org.junit.jupiter.api.Assertions.*; + +public class LoginTest { + GeneralOpController generalOpController; + private final static int MOCK_NEGATIVE = -1; + private final static int MOCK_ZERO = 0; + private final static int MOCK_POSITIVE = 1; + + @BeforeEach + public void setUp() + { + generalOpController = new GeneralOpController(); + } + + + @Test + public void failLoginNegativeIdTestManager() + { + try { + generalOpController.isManager(MOCK_NEGATIVE, "1234"); + fail("Login succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("id or password must not be null or wrong", e.getMessage()); + + } + + } + + @Test + public void failLoginZeroIdTestManager() + { + try { + generalOpController.isManager(MOCK_ZERO, "1234"); + fail("Login succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("id or password must not be null or wrong", e.getMessage()); + + } + } + + @Test + public void failLoginEmptyPasswordTestManager() + { + try { + generalOpController.isManager(MOCK_POSITIVE, ""); + fail("Login succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("id or password must not be null or wrong", e.getMessage()); + + } + } + + + @Test + public void loginSucceedTestManager() + { + boolean checkTrue = generalOpController.isManager(12, "1234"); + assertTrue(checkTrue); + boolean checkFalse = generalOpController.isManager(1, "1111"); + assertFalse(checkFalse); + + } + + ///////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////// + + + @Test + public void failLoginNegativeIdTestWorker() + { + try { + generalOpController.isWorker(MOCK_NEGATIVE, "1234"); + fail("Login succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("id or password must not be null or wrong", e.getMessage()); + + } + } + + + @Test + public void failLoginEmptyPasswordTestWorker() + { + try { + generalOpController.isWorker(MOCK_POSITIVE, ""); + fail("Login succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("id or password must not be null or wrong", e.getMessage()); + + } + } + + @Test + public void failLoginZeroIdTestWorker() + { + try { + generalOpController.isWorker(MOCK_ZERO, "1234"); + fail("Login succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("id or password must not be null or wrong", e.getMessage()); + + } + } + + @Test + public void loginSucceedTestWorker() + { + boolean checkTrue = generalOpController.isWorker(10, "0404"); + assertTrue(checkTrue); + boolean checkFalse = generalOpController.isWorker(1, "1111"); + assertFalse(checkFalse); + } + + + + + + +} diff --git a/tests/itemControllerTests/AddPantsTest.java b/tests/itemControllerTests/AddPantsTest.java new file mode 100644 index 0000000..0626b58 --- /dev/null +++ b/tests/itemControllerTests/AddPantsTest.java @@ -0,0 +1,78 @@ +package itemControllerTests; + +import controller.GeneralOpController; +import controller.ItemController; +import model.entities.Item; +import model.entities.Pants; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + +public class AddPantsTest { + ItemController itemController; + private final static int MOCK_NEGATIVE = -1; + private final static int MOCK_ZERO = 0; + private final static int MOCK_POSITIVE = 1; + private final static int MOCK_ID_EXIST = 3; + private final static int MOCK_SIZE_EXIST = 30; + private final static int MOCK_ID_NOT_EXIST = 152; + private final static int MOCK_SIZE_NOT_EXIST = 56; + + @BeforeEach + public void setUp() + { + itemController = new ItemController(); + } + + @Test + public void failIdTest() { + try { + Pants i = new Pants("blue", "niki", "men", "pants", 200, MOCK_POSITIVE, 200, 500, MOCK_NEGATIVE, "bermuda"); + itemController.addPants(i); + fail("The addition succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("id or size must not be negative", e.getMessage()); + + } + } + + @Test + public void failSizeTest() { + try { + Pants i = new Pants("blue", "niki", "men", "pants", 200, MOCK_NEGATIVE, 200, 500, MOCK_POSITIVE, "bermuda"); + itemController.addPants(i); + fail("The addition succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("id or size must not be negative", e.getMessage()); + + } + + } + + + @Test + public void failAddPantsTest() { + try { + Pants i = new Pants("blue", "niki", "men", "pants", 200, MOCK_SIZE_EXIST, 200, 500, MOCK_ID_EXIST, "bermuda"); + itemController.addPants(i); + fail("The addition succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("id and size exist", e.getMessage()); + + } + + } + + + @Test + public void failAddPantsSucceedTest() + { + Pants i = new Pants("blue", "niki", "men", "pants", 200, MOCK_SIZE_NOT_EXIST, 200, 500, MOCK_ID_NOT_EXIST, "bermuda"); + boolean a = itemController.addPants(i); + assertTrue(a); + itemController.deleteItem(MOCK_ID_NOT_EXIST,MOCK_SIZE_NOT_EXIST); + } +} diff --git a/tests/itemControllerTests/AddShirtTest.java b/tests/itemControllerTests/AddShirtTest.java new file mode 100644 index 0000000..b416d31 --- /dev/null +++ b/tests/itemControllerTests/AddShirtTest.java @@ -0,0 +1,83 @@ +package itemControllerTests; + +import controller.ItemController; +import model.entities.Shirt; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + +public class AddShirtTest { + + ItemController itemController; + private final static int MOCK_NEGATIVE = -1; + private final static int MOCK_ZERO = 0; + private final static int MOCK_POSITIVE = 1; + private final static int MOCK_ID_EXIST = 5; + private final static int MOCK_SIZE_EXIST = 20; + private final static int MOCK_ID_NOT_EXIST = 5; + + @BeforeEach + public void setUp() + { + itemController = new ItemController(); + } + + @Test + public void failIdTest() { + try { + Shirt i = new Shirt("blue", "niki", "men", "shirt", 200, MOCK_POSITIVE, 200, 500, MOCK_NEGATIVE, "lycra"); + itemController.addShirt(i); + fail("The addition succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("id or size must not be negative", e.getMessage()); + + } + + } + + @Test + public void failSizeTest() { + try { + Shirt i = new Shirt("blue", "niki", "men", "shirt", 200, MOCK_NEGATIVE, 200, 500,MOCK_POSITIVE, "lycra"); + itemController.addShirt(i); + fail("The addition succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("id or size must not be negative", e.getMessage()); + + } + + } + + + @Test + public void failAddShirtTest() { + try { + Shirt i = new Shirt("blue", "niki", "men", "shirt", 200, MOCK_SIZE_EXIST, 200, 500, MOCK_ID_EXIST, "bermuda"); + itemController.addShirt(i); + fail("The addition succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("id and size exist", e.getMessage()); + + } + + } + + + + + @Test + public void failAddShirtSucceedTest() + { + Shirt i = new Shirt("blue", "niki", "men", "shirt", 200, MOCK_POSITIVE, 200, 500, MOCK_ID_NOT_EXIST, "bermuda"); + boolean a = itemController.addShirt(i); + assertTrue(a); + itemController.deleteItem(MOCK_ID_NOT_EXIST,MOCK_POSITIVE); + } + +} + + + diff --git a/tests/itemControllerTests/AddShoeTest.java b/tests/itemControllerTests/AddShoeTest.java new file mode 100644 index 0000000..8d2c559 --- /dev/null +++ b/tests/itemControllerTests/AddShoeTest.java @@ -0,0 +1,84 @@ +package itemControllerTests; + +import controller.ItemController; +import model.entities.Shoe; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + +public class AddShoeTest { + ItemController itemController; + private final static int MOCK_NEGATIVE = -1; + private final static int MOCK_ZERO = 0; + private final static int MOCK_POSITIVE = 1; + private final static int MOCK_ID_EXIST = 2; + private final static int MOCK_SIZE_EXIST = 40; + private final static int MOCK_ID_NOT_EXIST = 80; + + + @BeforeEach + public void setUp() + { + itemController = new ItemController(); + } + @Test + public void failIdTest() { + try { + Shoe i = new Shoe("blue", "niki", "men", "shoe", 200, MOCK_POSITIVE, 200, 500, MOCK_NEGATIVE, "lycra"); + itemController.addShoe(i); + fail("The addition succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("id or size must not be negative", e.getMessage()); + + } + + } + + @Test + public void failSizeTest() { + try { + Shoe i = new Shoe("blue", "niki", "men", "shoe", 200, MOCK_NEGATIVE, 200, 500, MOCK_POSITIVE, "lycra"); + itemController.addShoe(i); + fail("The addition succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("id or size must not be negative", e.getMessage()); + + } + + } + + + + + @Test + public void failAddShoeTest() { + try { + Shoe i = new Shoe("blue", "niki", "men", "shoe", 200, MOCK_SIZE_EXIST, 200, 500, MOCK_ID_EXIST, "bermuda"); + itemController.addShoe(i); + fail("The addition succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("id and size exist", e.getMessage()); + + } + + } + + + + + @Test + public void failAddShoeSucceedTest() + { + Shoe i = new Shoe("blue", "niki", "men", "shoe", 200, MOCK_POSITIVE, 200, 500, MOCK_ID_NOT_EXIST, "bermuda"); + boolean a = itemController.addShoe(i); + assertTrue(a); + itemController.deleteItem(MOCK_ID_NOT_EXIST,MOCK_POSITIVE); + } +} + + + + diff --git a/tests/itemControllerTests/BestSellingProductTest.java b/tests/itemControllerTests/BestSellingProductTest.java new file mode 100644 index 0000000..d5e9a43 --- /dev/null +++ b/tests/itemControllerTests/BestSellingProductTest.java @@ -0,0 +1,25 @@ +package itemControllerTests; +import controller.ItemController; +import model.entities.Item; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + + +public class BestSellingProductTest { + ItemController itemController; + + @BeforeEach + public void setUp() {itemController = new ItemController();} + + @Test + public void BestSellingProductFoundedTest() + { + Item item = itemController.bestSellingProduct(); + Assertions.assertNotNull(item); + } + + + + +} diff --git a/tests/itemControllerTests/SearchItemTest.java b/tests/itemControllerTests/SearchItemTest.java new file mode 100644 index 0000000..290c046 --- /dev/null +++ b/tests/itemControllerTests/SearchItemTest.java @@ -0,0 +1,62 @@ +package itemControllerTests; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import controller.ItemController; +import model.entities.*; + +import static org.junit.jupiter.api.Assertions.fail; + +public class SearchItemTest { + ItemController itemController; + private final static int MOCK_NEGATIVE = -1; + private final static int MOCK_ZERO = 0; + private final static int MOCK_POSITIVE = 1; + private final static int MOCK_ID_EXIST = 2; + private final static int MOCK_ID_NOT_EXIST = 200000; + private final static int MOCK_SIZE_EXIST = 40; + + @BeforeEach + public void setUp() + { + itemController = new ItemController(); + } + + @Test + public void failIdTest() { + try { + itemController.searchItem(MOCK_NEGATIVE,MOCK_SIZE_EXIST); + fail("The search succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("id or size must not be negative", e.getMessage()); + + } + + } + + @Test + public void failSizeTest() { + try { + itemController.searchItem(MOCK_ID_EXIST,MOCK_NEGATIVE); + fail("The search succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("id or size must not be negative", e.getMessage()); + } + } + + @Test + public void SearchItemFoundedTest() + { + Item item = itemController.searchItem(MOCK_ID_EXIST,MOCK_SIZE_EXIST); + Assertions.assertNotNull(item); + } + + + + @Test + public void SearchItemNotFoundSucceedTest() + { + Item item = itemController.searchItem(MOCK_ID_NOT_EXIST,MOCK_ID_NOT_EXIST); + Assertions.assertNull(item); + } +} diff --git a/tests/memberControllerTests/AddClubMemberTest.java b/tests/memberControllerTests/AddClubMemberTest.java new file mode 100644 index 0000000..9bef816 --- /dev/null +++ b/tests/memberControllerTests/AddClubMemberTest.java @@ -0,0 +1,143 @@ +package memberControllerTests; + +import controller.GeneralOpController; +import controller.MemberController; +import model.entities.Member; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +public class AddClubMemberTest { + MemberController memberController; + private final static int MOCK_POSITIVE = 1; + private final static int MOCK_NEGATIVE = -1; + private final static int MOCK_ZERO = 0; + private final static String MOCK_NAME = "Daniel"; + private final static String MOCK_DATEOFBIRTH = "31/3/1990"; + private final static int MOCK_POINTSGAINED = 5550; + private final static String MOCK_EMPTYSTRING = ""; + private final static Member MOCK_MEMBER_WITHOUTNAME = new Member(MOCK_EMPTYSTRING , MOCK_DATEOFBIRTH,MOCK_POSITIVE, MOCK_POINTSGAINED); + private final static Member MOCK_MEMBER_WITHOUTDATEOFBIRTH = new Member(MOCK_NAME, MOCK_EMPTYSTRING,MOCK_POSITIVE, MOCK_POINTSGAINED); + private final static Member MOCK_MEMBER_WITHOUTID = new Member(MOCK_NAME, MOCK_DATEOFBIRTH,MOCK_NEGATIVE, MOCK_POINTSGAINED); + private final static Member MOCK_MEMBER_WITHOUTIDOTHER = new Member(MOCK_NAME, MOCK_DATEOFBIRTH,MOCK_ZERO, MOCK_POINTSGAINED); + private final static Member MOCK_MEMBER_WITHOUTPOINTSGAINED = new Member(MOCK_NAME, MOCK_DATEOFBIRTH,MOCK_ZERO, MOCK_NEGATIVE); + private final static Member MOCK_MEMBER_EXIST = new Member("test", "4/3/1990",9999, 1111); + private final static Member MOCK_MEMBER_NOT_EXIST = new Member("Dani", "30/2/1999",49, 4534); + + @BeforeEach + public void setUp() + { + memberController = new MemberController(); + } + + @Test + public void failAddNameTest() + { + try { + memberController.addClubMember(MOCK_MEMBER_WITHOUTNAME); + fail("The addition succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("name or id or pointsgaind or dateofbirth must not be null or wrong", e.getMessage()); + + } + + } + + + @Test + public void failAddDateOfBirthTest() + { + try { + memberController.addClubMember(MOCK_MEMBER_WITHOUTDATEOFBIRTH); + fail("The addition succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("name or id or pointsgaind or dateofbirth must not be null or wrong", e.getMessage()); + + } + + } + + @Test + public void failAddIdTest() + { + try { + memberController.addClubMember(MOCK_MEMBER_WITHOUTID); + fail("The addition succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("name or id or pointsgaind or dateofbirth must not be null or wrong", e.getMessage()); + + } + + } + + @Test + public void failAddIdOtherTest() + { + try { + memberController.addClubMember(MOCK_MEMBER_WITHOUTIDOTHER); + fail("The addition succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("name or id or pointsgaind or dateofbirth must not be null or wrong", e.getMessage()); + + } + + } + + @Test + public void failAddPointsGainedTest() { + try { + memberController.addClubMember(MOCK_MEMBER_WITHOUTPOINTSGAINED); + fail("The addition succeed when should failed"); + } catch (IllegalArgumentException e) { + Assertions.assertEquals("name or id or pointsgaind or dateofbirth must not be null or wrong", e.getMessage()); + + } + } + + + @Test + public void failAddClubMemberTest() + { + try { + memberController.addClubMember(MOCK_MEMBER_EXIST); + fail("The addition succeed when should failed"); + } + catch (IllegalArgumentException e) { + Assertions.assertEquals("the member is already exist", e.getMessage()); + + } + + + + } + + + @Test + public void failAddClubMemberSucceedTest() +{ + boolean checkTrue = memberController.addClubMember(MOCK_MEMBER_NOT_EXIST); + assertTrue(checkTrue); + memberController.deleteClubMember(MOCK_MEMBER_NOT_EXIST.getId()); +} + + + + + + + + + + + +} diff --git a/tests/purchaseControllerTests/LastPurchaseTest.java b/tests/purchaseControllerTests/LastPurchaseTest.java new file mode 100644 index 0000000..9cc37ea --- /dev/null +++ b/tests/purchaseControllerTests/LastPurchaseTest.java @@ -0,0 +1,74 @@ +package purchaseControllerTests; + +import controller.PurchaseController; +import model.entities.Purchase; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +public class LastPurchaseTest { + + PurchaseController purchaseController; + private final static int MOCK_NEGATIVE = -1; + private final static int MOCK_ZERO = 0; + private final static int MOCK_POSITIVE = 1; + private final static int MOCK_ID_NOT_EXIST = 9999; + + @BeforeEach + public void setUp() + { + purchaseController = new PurchaseController(); + } + + + @Test + public void failMemberIdTest() + { + try { + purchaseController.lastPurchase(MOCK_NEGATIVE); + fail("The addition succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("id must not be negative", e.getMessage()); + + } + } + + + @Test + public void failMemberIdOtherTest() + { + try { + purchaseController.lastPurchase(MOCK_ZERO); + fail("The addition succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("id must not be zero", e.getMessage()); + + } + } + + @Test + public void failNullPurchaseTest() { + + Purchase p = purchaseController.lastPurchase(MOCK_POSITIVE); + assertNotNull(p); + } + + @Test + public void failNotNullPurchaseTest() { + + Purchase p = purchaseController.lastPurchase(MOCK_ID_NOT_EXIST); + assertNull(p); + + } + + + + + +} diff --git a/tests/purchaseControllerTests/SellingTest.java b/tests/purchaseControllerTests/SellingTest.java new file mode 100644 index 0000000..c9fd810 --- /dev/null +++ b/tests/purchaseControllerTests/SellingTest.java @@ -0,0 +1,123 @@ +package purchaseControllerTests; + +import controller.GeneralOpController; +import controller.PurchaseController; +import model.entities.*; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import javax.management.MBeanAttributeInfo; +import java.util.ArrayList; + + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + +public class SellingTest { + + PurchaseController purchaseController; + private final static int MOCK_NEGATIVE = -1; + private final static int MOCK_ZERO = 0; + private final static int MOCK_POSITIVE = 1; + private final static int MOCK_ID_NOT_EXIST = 9999; + private final static String MOCK_NAME = "yuval"; + private final static String MOCK_DATEOFBIRTH = "31/3/1990"; + private final static int MOCK_POINTSGAINED = 5550; + private final static Member MOCK_EMPTY_MEMBER = new Member(); + private final static Member MOCK_MEMBER = new Member(MOCK_NAME, MOCK_DATEOFBIRTH, MOCK_POSITIVE, MOCK_POINTSGAINED); + + @BeforeEach + public void setUp() + { + purchaseController = new PurchaseController(); + } + + @Test + public void failMemberTest() + { + try { + Item MOCK_ITEM = new Shoe("blue", "nabibas", "men", "shoe", 300, 40, 200, 50, 1,"bermuda"); + ArrayList MOCK_LIST = new ArrayList(); + MOCK_LIST.add(MOCK_ITEM); + + Purchase p = new Purchase(MOCK_EMPTY_MEMBER, MOCK_LIST, MOCK_POSITIVE, MOCK_POSITIVE); + purchaseController.selling(p); + fail("The selling succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("name or id or pointsgaind or dateofbirth must not be null or wrong", e.getMessage()); + + } + } + + @Test + public void failArrayListTest() + { + try { + + ArrayList MOCK_LIST = new ArrayList(); + Purchase p = new Purchase(MOCK_MEMBER, MOCK_LIST, MOCK_POSITIVE, MOCK_POSITIVE); + purchaseController.selling(p); + fail("The selling succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("The Array list Items must not be null or empty", e.getMessage()); + + } + } + + @Test + public void failPriceTest() + { + try { + Item MOCK_ITEM = new Shoe("blue", "nabibas", "men", "shoe", 300, 40, 200, 50, 1,"bermuda"); + ArrayList MOCK_LIST = new ArrayList(); + MOCK_LIST.add(MOCK_ITEM); + + Purchase p = new Purchase(MOCK_MEMBER, MOCK_LIST, MOCK_NEGATIVE, MOCK_POSITIVE); + purchaseController.selling(p); + fail("The selling succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("the price or shoppingRating must not be negative", e.getMessage()); + + } + } + + @Test + public void failSellingTest() + { + try { + Item MOCK_ITEM = new Shoe("blue", "nabibas", "men", "shoe", 300, 40, 200, 50, 1,"bermuda"); + ArrayList MOCK_LIST = new ArrayList(); + MOCK_LIST.add(MOCK_ITEM); + + Purchase p = new Purchase(MOCK_MEMBER, MOCK_LIST, MOCK_POSITIVE, MOCK_NEGATIVE); + purchaseController.selling(p); + fail("The selling succeed when should failed"); + } + catch (IllegalArgumentException e) + { + Assertions.assertEquals("the price or shoppingRating must not be negative", e.getMessage()); + + } + } + + + @Test + public void failSellingReturnTest() + { + Item MOCK_ITEM = new Shoe("blue", "nabibas", "men", "shoe", 300, 40, 200, 50, 1,"bermuda"); + ArrayList MOCK_LIST = new ArrayList(); + MOCK_LIST.add(MOCK_ITEM); + + Purchase p = new Purchase(MOCK_MEMBER, MOCK_LIST, MOCK_POSITIVE, MOCK_POSITIVE); + int i = purchaseController.selling(p); + assertTrue(i > -2); + } + +}