From 81bcb44d74ddf7394766d03db7dfc7153faff467 Mon Sep 17 00:00:00 2001 From: Malte Schulze Hobeling Date: Mon, 30 Jan 2023 04:26:30 +0100 Subject: [PATCH] most Objects done --- .../AccountMgr.java | 105 ++++++++++++------ .../essensbestellungsverwaltung/Address.java | 10 ++ .../essensbestellungsverwaltung/Allergy.java | 3 + .../AllergySeverity.java | 28 +++++ .../essensbestellungsverwaltung/Child.java | 49 ++++++++ .../ConsoleLib.java | 81 ++++++++------ .../ConsoleMain.java | 36 +++--- .../essensbestellungsverwaltung/Database.java | 10 +- .../bib/essensbestellungsverwaltung/Food.java | 8 ++ .../essensbestellungsverwaltung/FoodMgr.java | 64 +++++++---- .../essensbestellungsverwaltung/FoodPlan.java | 58 ++++++++++ .../essensbestellungsverwaltung/FoodType.java | 3 + .../essensbestellungsverwaltung/Parent.java | 24 ++++ .../bib/essensbestellungsverwaltung/User.java | 25 ++--- .../essensbestellungsverwaltung/Worker.java | 13 +++ 15 files changed, 396 insertions(+), 121 deletions(-) create mode 100644 src/main/java/com/bib/essensbestellungsverwaltung/AllergySeverity.java create mode 100644 src/main/java/com/bib/essensbestellungsverwaltung/Child.java create mode 100644 src/main/java/com/bib/essensbestellungsverwaltung/FoodPlan.java create mode 100644 src/main/java/com/bib/essensbestellungsverwaltung/Parent.java create mode 100644 src/main/java/com/bib/essensbestellungsverwaltung/Worker.java diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/AccountMgr.java b/src/main/java/com/bib/essensbestellungsverwaltung/AccountMgr.java index 3d5a923..95b306f 100644 --- a/src/main/java/com/bib/essensbestellungsverwaltung/AccountMgr.java +++ b/src/main/java/com/bib/essensbestellungsverwaltung/AccountMgr.java @@ -18,12 +18,10 @@ public class AccountMgr { /** * creates a user with createUser(...) and adds its id to the 'worker' table - * @param userData String[] name, firstname, password, email - * @param addressData String[] street, number, plz, city * @return userid or -1 */ - protected static long createWorker(String[] userData, String[] addressData){ - long id = createUser(userData, addressData); + protected static long createWorker(Worker worker){ + long id = createUser(worker); String sId = String.valueOf(id); Database.insert("worker", new String[]{"userid"}, new String[]{sId}); return id; @@ -31,12 +29,10 @@ public class AccountMgr { /** * creates a user with createUser(...) and adds its id to the 'parent' table - * @param userData String[] name, firstname, password, email - * @param addressData String[] street, number, plz, city * @return userid or -1 */ - protected static long createParent(String[] userData, String[] addressData){ - long id = createUser(userData, addressData); + protected static long createParent(Parent parent){ + long id = createUser(parent); String sId = String.valueOf(id); Database.insert("parent", new String[]{"userid"}, new String[]{sId}); return id; @@ -44,42 +40,43 @@ public class AccountMgr { /** * adds a user to the database - * @param userData String[] name, firstname, password, email - * @param addressData String[] street, number, plz, city * @return userid or -1 */ - protected static long createUser(String[] userData, String[] addressData) { - String[] addressH = {"street", "number", "plz", "city"}; + protected static long createUser(User user) { String[] userH = {"name", "firstname", "addressid", "password", "email"}; - String name = userData[0]; - String firstname = userData[1]; - String pw = hashAndSalt(userData[2], getSalt()); - String email = userData[3]; + String name = user.getName(); + String firstname = user.getFirstname(); + String pw = hashAndSalt(user.getPassword(), getSalt()); + String email = user.getEmail(); + long addressId = user.getAddress().getId(); + if(addressId < 1){ + addressId = createAddress(user.getAddress()); + } + String[] userD = {name, firstname, String.valueOf(addressId), pw, email}; + return Database.insert("user", userH, userD); + } - long id = Database.insert("address", addressH, addressData); - String sId = String.valueOf(id); - String[] userD = {name, firstname, sId, pw, email}; - id = Database.insert("user", userH, userD); - return id; + protected static long createAddress(Address address){ + String[] addressH = {"street", "number", "plz", "city"}; + String[] addressD = {address.getStreet(),address.getNumber(),address.getPlz(),address.getCity()}; + return Database.insert("address",addressH,addressD); } /** * adds a child and allergies to the database - * @param childData name, firstname, addressid - * @param allergyData id of allergies order matching with severityData - * @param severityData id of severity order matching with allergyData * @return id of child or -1 */ - protected static long createChild(String[] childData,String[] allergyData, String[] severityData){ + protected static long createChild(Child child){ String[] childH = {"name","firstname","addressid"}; + String[] childD = {child.getName(), child.getFirstname(), String.valueOf(child.getAddress().getId())}; + long id = Database.insert("child", childH, childD); String[] child_allergyH = {"childid","allergyid","severityid"}; - long id = Database.insert("child", childH, childData); - if(allergyData.length > 0){ - for(int i = 0; i < allergyData.length; i++){ - String sId = String.valueOf(id); - String[] child_allergyD = {sId,allergyData[i],severityData[i]}; - Database.insert("child_allergy",child_allergyH,child_allergyD); - } + for (AllergySeverity allergy: child.getAllergies()) { + String sId = String.valueOf(id); + String sAllergyId = String.valueOf(allergy.getAllergy().getId()); + String sSeverityId = String.valueOf(allergy.getSeverityId()); + String[] child_allergyD = {sId,sAllergyId,sSeverityId}; + Database.insert("child_allergy",child_allergyH,child_allergyD); } return id; } @@ -88,7 +85,36 @@ public class AccountMgr { List entry = Database.getEntryById("user",id); String[] parts = entry.get(0).split(":"); Address address = getAddressById(id); - return new User(id,parts[1],parts[2],parts[4],parts[5],address,isWorker(String.valueOf(id)),isParent(String.valueOf(id))); + if(isWorker(String.valueOf(id))){ + return new Worker(id,parts[1],parts[2],parts[4],parts[5],address); + }else{ + String[] parent_childH = {"parentuserid"}; + String[] parent_childD = {String.valueOf(id)}; + List children = new ArrayList<>(); + List parent_childEntries = Database.select("parent_child",parent_childH,parent_childD); + for (String parent_childEntry: parent_childEntries) { + String[] parent_childParts = parent_childEntry.split(":"); + children.add(getChildById(Long.parseLong(parent_childParts[2]))); + } + return new Parent(id,parts[1],parts[2],parts[4],parts[5],address,children); + } + } + + protected static Child getChildById(long id){ + List entry = Database.getEntryById("child",id); + String[] parts = entry.get(0).split(":"); + String[] child_allergyH = {"childid"}; + String[] child_allergyD = {String.valueOf(id)}; + List entriesAllergy = Database.select("child_allergy",child_allergyH,child_allergyD); + List allergySeverities = new ArrayList<>(); + for (String entryAllergy : entriesAllergy) { + String[] allergyParts = entryAllergy.split(":"); + List severity = Database.getEntryById("severity", Long.parseLong(allergyParts[3])); + String sSeverity = severity.get(0).split(":")[1]; + long lSeverity = Long.parseLong(severity.get(0).split(":")[0]); + allergySeverities.add(new AllergySeverity(FoodMgr.getAllergyById(Long.parseLong(allergyParts[2])),lSeverity,sSeverity)); + } + return new Child(id,parts[1],parts[2],getAddressById(Long.parseLong(parts[3])),allergySeverities); } protected static Address getAddressById(long id){ @@ -162,7 +188,7 @@ public class AccountMgr { * @param pw the password to hash * @return hashed and salted password */ - protected static String hashAndSalt(String pw, String salt){ + private static String hashAndSalt(String pw, String salt){ Base64.Decoder dec = Base64.getDecoder(); byte[] bySalt = dec.decode(salt); KeySpec spec = new PBEKeySpec(pw.toCharArray(), bySalt,310001,256); @@ -218,4 +244,15 @@ public class AccountMgr { invoice.add("Total: " + (invoice.size()-2) + " X " + price + "€ = " + ((invoice.size()-2)*price) + "€"); return invoice; } + + protected static void getPriceFromDb(){ + List priceEntry = Database.getEntryById("price",1); + price = Double.parseDouble(priceEntry.get(0).split(":")[1])/100.0; + } + + protected static void setPriceInDb(){ + String[] priceH = {"id","price"}; + String[] priceD = {"1", String.valueOf(price*100)}; + Database.update("price",priceH,priceD); + } } diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/Address.java b/src/main/java/com/bib/essensbestellungsverwaltung/Address.java index 106ce77..641330d 100644 --- a/src/main/java/com/bib/essensbestellungsverwaltung/Address.java +++ b/src/main/java/com/bib/essensbestellungsverwaltung/Address.java @@ -1,4 +1,7 @@ package com.bib.essensbestellungsverwaltung; +/* + @author Malte Schulze Hobeling + */ public class Address { private long id; @@ -34,4 +37,11 @@ public class Address { this.plz = plz; this.city = city; } + public Address(String street, String number, String plz, String city) { + this.id = -1; + this.street = street; + this.number = number; + this.plz = plz; + this.city = city; + } } diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/Allergy.java b/src/main/java/com/bib/essensbestellungsverwaltung/Allergy.java index 46e4e14..77518be 100644 --- a/src/main/java/com/bib/essensbestellungsverwaltung/Allergy.java +++ b/src/main/java/com/bib/essensbestellungsverwaltung/Allergy.java @@ -1,4 +1,7 @@ package com.bib.essensbestellungsverwaltung; +/* + @author Malte Schulze Hobeling + */ public class Allergy { private final long id; diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/AllergySeverity.java b/src/main/java/com/bib/essensbestellungsverwaltung/AllergySeverity.java new file mode 100644 index 0000000..5ad3e9e --- /dev/null +++ b/src/main/java/com/bib/essensbestellungsverwaltung/AllergySeverity.java @@ -0,0 +1,28 @@ +package com.bib.essensbestellungsverwaltung; +/* + @author Malte Schulze Hobeling + */ + +public class AllergySeverity { + private Allergy allergy; + private long severityId; + private String severity; + + public AllergySeverity(Allergy allergy, long severityId, String severity) { + this.allergy = allergy; + this.severityId = severityId; + this.severity = severity; + } + + public Allergy getAllergy() { + return allergy; + } + + public long getSeverityId() { + return severityId; + } + + public String getSeverity() { + return severity; + } +} diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/Child.java b/src/main/java/com/bib/essensbestellungsverwaltung/Child.java new file mode 100644 index 0000000..697e055 --- /dev/null +++ b/src/main/java/com/bib/essensbestellungsverwaltung/Child.java @@ -0,0 +1,49 @@ +package com.bib.essensbestellungsverwaltung; +/* + @author Malte Schulze Hobeling + */ + +import java.util.List; + +public class Child { + private long id; + private String name; + private String firstname; + private Address address; + private List allergies; + + public Child(long id, String name, String firstname, Address address, List allergies) { + this.id = id; + this.name = name; + this.firstname = firstname; + this.address = address; + this.allergies = allergies; + } + public Child(String name, String firstname, Address address, List allergies) { + this.id = -1; + this.name = name; + this.firstname = firstname; + this.address = address; + this.allergies = allergies; + } + + public String getName() { + return name; + } + + public String getFirstname() { + return firstname; + } + + public Address getAddress() { + return address; + } + + public long getId() { + return id; + } + + public List getAllergies() { + return allergies; + } +} diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/ConsoleLib.java b/src/main/java/com/bib/essensbestellungsverwaltung/ConsoleLib.java index f4f5627..c8d7eaf 100644 --- a/src/main/java/com/bib/essensbestellungsverwaltung/ConsoleLib.java +++ b/src/main/java/com/bib/essensbestellungsverwaltung/ConsoleLib.java @@ -29,7 +29,9 @@ public class ConsoleLib { userData[3] = sc.nextLine(); System.out.print("Passwort: "); userData[2] = sc.nextLine(); - long id = AccountMgr.createWorker(userData,addressData); + Address address = new Address(addressData[0],addressData[1],addressData[2],addressData[3]); + Worker worker = new Worker(userData[0],userData[1],userData[2],userData[3],address); + long id = AccountMgr.createWorker(worker); if(id < 1){ System.out.println("Fehler beim erstellen"); } @@ -56,7 +58,9 @@ public class ConsoleLib { userData[3] = sc.nextLine(); System.out.print("Passwort: "); userData[2] = sc.nextLine(); - long id = AccountMgr.createParent(userData,addressData); + Address address = new Address(addressData[0],addressData[1],addressData[2],addressData[3]); + Parent parent = new Parent(userData[0],userData[1],userData[2],userData[3],address); + long id = AccountMgr.createParent(parent); if(id < 1){ System.out.println("Fehler beim erstellen"); } @@ -88,7 +92,15 @@ public class ConsoleLib { System.out.print("Schweren (1 Harmlos - 3 Kritisch[2,3,1,3]): "); String severities = sc.nextLine(); String[] severityData = severities.split(","); - long id = AccountMgr.createChild(childData,allergyData,severityData); + Address address = AccountMgr.getAddressById(Long.parseLong(childData[2])); + List allergySeverities = new ArrayList<>(); + for(int i = 0; i < allergyData.length; i++){ + List allergySeverity = Database.getEntryById("severity", Long.parseLong(severityData[i])); + String[] asParts = allergySeverity.get(0).split(":"); + allergySeverities.add(new AllergySeverity(FoodMgr.getAllergyById(Long.parseLong(allergyData[0])),Long.parseLong(asParts[0]),asParts[1])); + } + Child child = new Child(childData[0],childData[1],address,allergySeverities); + long id = AccountMgr.createChild(child); if(id < 1){ System.out.println("Fehler beim erstellen"); return; @@ -124,31 +136,34 @@ public class ConsoleLib { for (String data : allergyData) { allergyList.add(FoodMgr.getAllergyById(Long.parseLong(data))); } - Food food = new Food(foodData[0],foodData[1],true,foodType,allergyList); + boolean isDessert = !foodData[2].equals("0"); + Food food = new Food(foodData[0],foodData[1],isDessert,foodType,allergyList); if(FoodMgr.createFood(food) < 1){ System.out.println("Fehler"); } } - public static long loginPrompt(){ + public static User loginPrompt(){ System.out.println("Login"); Scanner sc = new Scanner(System.in); - long id = -1; - while (id == -1){ + User user = null; + while (user == null){ System.out.print("Email: "); String email = sc.nextLine(); if(email.isEmpty()){ - return -1; + return null; } System.out.print("Passwort: "); String pw = sc.nextLine(); - id = AccountMgr.login(email,pw); + long id = AccountMgr.login(email,pw); if(id == -1){ System.out.println("Login fehlgeschlagen"); + }else { + user = AccountMgr.getUserById(id); } } System.out.println("Login erfolgreich"); - return id; + return user; } public static void matchParentChildPrompt(String parentId){ @@ -193,12 +208,16 @@ public class ConsoleLib { System.out.print("Bitte geben Sie das Datum im Format YYYY-MM-DD an: "); food_planData[0] = sc.nextLine(); List veganMain = FoodMgr.getVeganFood(false); + System.out.println(veganMain.size()); for (Food food : veganMain) { System.out.println(food.getId() + " : " + food.getName()); } System.out.print("Veganes Hauptgericht Nr: "); food_planData[1] = sc.nextLine(); List foodMain = FoodMgr.getFood(false); + for (Food food : foodMain) { + System.out.println(food.getId() + " : " + food.getName()); + } System.out.print("Zweites Hauptgericht Nr: "); food_planData[2] = sc.nextLine(); List veganDessert = FoodMgr.getVeganFood(true); @@ -213,7 +232,12 @@ public class ConsoleLib { } System.out.print("Zweites Dessert Nr: "); food_planData[4] = sc.nextLine(); - long id = FoodMgr.createFood_plan(food_planData); + FoodPlan foodPlan = new FoodPlan(food_planData[0], + FoodMgr.getFoodById(Long.parseLong(food_planData[1])), + FoodMgr.getFoodById(Long.parseLong(food_planData[2])), + FoodMgr.getFoodById(Long.parseLong(food_planData[3])), + FoodMgr.getFoodById(Long.parseLong(food_planData[4]))); + long id = FoodMgr.createFood_plan(foodPlan); if(id < 0){ System.out.println("Fehler"); } @@ -224,29 +248,21 @@ public class ConsoleLib { Scanner sc = new Scanner(System.in); System.out.print("Bitte geben Sie das Datum im Format YYYY-MM-DD an: "); String date = sc.nextLine(); - List plan = FoodMgr.getFood_plan(date); + FoodPlan plan = FoodMgr.getFoodPlan(date); List foodList = new ArrayList<>(); - Food food; StringBuilder sb; - for (String day : plan) { - sb = new StringBuilder(); - String[] parts = day.split(":"); - sb.append("Tag: "); - sb.append(parts[1]); - sb.append(" Veganesgericht: "); - food = FoodMgr.getFoodById(Long.parseLong(parts[2])); - sb.append(food.getName()); - sb.append(" Zweites Hauptgericht: "); - food = FoodMgr.getFoodById(Long.parseLong(parts[3])); - sb.append(food.getName()); - sb.append(" Veganesdessert: "); - food = FoodMgr.getFoodById(Long.parseLong(parts[4])); - sb.append(food.getName()); - sb.append(" Zweites Dessert: "); - food = FoodMgr.getFoodById(Long.parseLong(parts[5])); - sb.append(food.getName()); - foodList.add(sb.toString()); - } + sb = new StringBuilder(); + sb.append("Tag: "); + sb.append(plan.getDate()); + sb.append(" Veganesgericht: "); + sb.append(plan.getFoodVegan().getName()); + sb.append(" Zweites Hauptgericht: "); + sb.append(plan.getFoodSecond().getName()); + sb.append(" Veganesdessert: "); + sb.append(plan.getDessertVegan().getName()); + sb.append(" Zweites Dessert: "); + sb.append(plan.getDessertSecond().getName()); + foodList.add(sb.toString()); printConsole(foodList); } @@ -306,5 +322,6 @@ public class ConsoleLib { double price = sc.nextDouble(); sc.nextLine(); AccountMgr.price = price; + AccountMgr.setPriceInDb(); } } diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/ConsoleMain.java b/src/main/java/com/bib/essensbestellungsverwaltung/ConsoleMain.java index ec5ebac..2927351 100644 --- a/src/main/java/com/bib/essensbestellungsverwaltung/ConsoleMain.java +++ b/src/main/java/com/bib/essensbestellungsverwaltung/ConsoleMain.java @@ -6,9 +6,8 @@ package com.bib.essensbestellungsverwaltung; import java.util.Scanner; public class ConsoleMain { - static long currentUserId = -1; - static boolean isWorker = false; - static boolean isParent = false; + static User currentUser = null; + static boolean running = true; public static void main(String[] args) { boolean firstRun = Database.init(); if(firstRun){ @@ -16,15 +15,14 @@ public class ConsoleMain { Database.fillDb(); ConsoleLib.createWorkerPrompt(); } - while (true){ - if(currentUserId == -2){ - break; - }else if(currentUserId < 0){ + AccountMgr.getPriceFromDb(); + while (running){ + if(currentUser == null){ defaultMenu(); }else{ - if(isWorker){ + if(currentUser.getClass().getSimpleName().equals("Worker")){ adminMenu(); - }else if(isParent){ + }else if(currentUser.getClass().getSimpleName().equals("Parent")){ parentMenu(); } } @@ -41,11 +39,9 @@ public class ConsoleMain { Scanner sc = new Scanner(System.in); String selection = sc.nextLine(); switch (selection) { - case "0" -> currentUserId = -2; + case "0" -> running = false; case "1" -> { - currentUserId = ConsoleLib.loginPrompt(); - isWorker = AccountMgr.isWorker(String.valueOf(currentUserId)); - isParent = AccountMgr.isParent(String.valueOf(currentUserId)); + currentUser = ConsoleLib.loginPrompt(); } case "2" -> ConsoleLib.showFood_planPrompt(); case "3" -> ConsoleLib.createParentPrompt(); @@ -74,14 +70,12 @@ public class ConsoleMain { String selection = sc.nextLine(); switch (selection) { case "0" -> { - currentUserId = -1; - isWorker = false; - isParent = false; + currentUser = null; } case "1" -> ConsoleLib.createWorkerPrompt(); case "2" -> ConsoleLib.createParentPrompt(); - case "3" -> ConsoleLib.createChildPrompt(String.valueOf(currentUserId)); - case "4" -> ConsoleLib.matchParentChildPrompt(String.valueOf(currentUserId)); + case "3" -> ConsoleLib.createChildPrompt(String.valueOf(currentUser.getId())); + case "4" -> ConsoleLib.matchParentChildPrompt(String.valueOf(currentUser.getId())); case "5" -> ConsoleLib.createFoodPrompt(); case "6" -> ConsoleLib.createFood_planPrompt(); case "7" -> ConsoleLib.showFood_planPrompt(); @@ -107,11 +101,9 @@ public class ConsoleMain { String selection = sc.nextLine(); switch (selection) { case "0" -> { - currentUserId = -1; - isWorker = false; - isParent = false; + currentUser = null; } - case "3" -> ConsoleLib.createChildPrompt(String.valueOf(currentUserId)); + case "3" -> ConsoleLib.createChildPrompt(String.valueOf(currentUser.getId())); case "6" -> ConsoleLib.tablePrompt(); case "7" -> ConsoleLib.showFood_planPrompt(); case "8" -> ConsoleLib.createFood_selectionPrompt(); diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/Database.java b/src/main/java/com/bib/essensbestellungsverwaltung/Database.java index bb6f167..887a822 100644 --- a/src/main/java/com/bib/essensbestellungsverwaltung/Database.java +++ b/src/main/java/com/bib/essensbestellungsverwaltung/Database.java @@ -45,7 +45,7 @@ public class Database { * creates the initial structure of the db */ protected static void createDb(){ - String[] sql = new String[14]; + String[] sql = new String[15]; sql[0] = """ CREATE TABLE IF NOT EXISTS address ( id integer PRIMARY KEY, @@ -157,6 +157,11 @@ public class Database { FOREIGN KEY(food_planid) REFERENCES food_plan(id), FOREIGN KEY(foodid) REFERENCES food(id) );"""; + sql[14] = """ + CREATE TABLE IF NOT EXISTS price ( + id integer PRIMARY KEY, + price integer + );"""; try(Connection conn = connect(); Statement stmt = conn.createStatement()){ for(int i = 0; i < sql.length; i++){ stmt.execute(sql[i]); @@ -255,6 +260,9 @@ public class Database { sqls.add(""" INSERT OR IGNORE INTO severity (id,name) VALUES('3','Kritisch');"""); + sqls.add(""" + INSERT OR IGNORE INTO price (id,price) + VALUES('1','500');"""); try(Connection conn = connect(); Statement stmt = conn.createStatement()){ for (String sql : sqls) { stmt.execute(sql); diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/Food.java b/src/main/java/com/bib/essensbestellungsverwaltung/Food.java index 0cd67a0..f8b3816 100644 --- a/src/main/java/com/bib/essensbestellungsverwaltung/Food.java +++ b/src/main/java/com/bib/essensbestellungsverwaltung/Food.java @@ -1,4 +1,7 @@ package com.bib.essensbestellungsverwaltung; +/* + @author Malte Schulze Hobeling + */ import java.util.List; @@ -51,4 +54,9 @@ public class Food { public List getAllergies() { return allergies; } + + @Override + public String toString() { + return getName(); + } } diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/FoodMgr.java b/src/main/java/com/bib/essensbestellungsverwaltung/FoodMgr.java index bde280b..ac1bcc1 100644 --- a/src/main/java/com/bib/essensbestellungsverwaltung/FoodMgr.java +++ b/src/main/java/com/bib/essensbestellungsverwaltung/FoodMgr.java @@ -29,12 +29,16 @@ public class FoodMgr { /** * inserts a food_plan into the database - * @param food_planData date[YYYY-MM-DD], foodid[vegan], foodid, foodid[dessert,vegan], foodid[dessert] * @return id of food_plan or -1 */ - public static long createFood_plan(String[] food_planData){ + public static long createFood_plan(FoodPlan foodPlan){ String[] food_planH = {"date","food1","food2","dessert1","dessert2"}; - return Database.insert("food_plan",food_planH,food_planData); + String[] food_planD = {foodPlan.getDate(), + String.valueOf(foodPlan.getFoodVegan().getId()), + String.valueOf(foodPlan.getFoodSecond().getId()), + String.valueOf(foodPlan.getDessertVegan().getId()), + String.valueOf(foodPlan.getDessertSecond().getId())}; + return Database.insert("food_plan",food_planH,food_planD); } /** @@ -76,10 +80,28 @@ public class FoodMgr { * @param date YYYY-MM-DD one day * @return food_plan for date */ - public static List getFood_plan(String date){ + public static FoodPlan getFoodPlan(String date){ String[] food_planH = {"date"}; String[] food_planD = {date}; - return Database.select("food_plan",food_planH,food_planD); + List entry = Database.select("food_plan",food_planH,food_planD); + String[] parts = entry.get(0).split(":"); + Food foodVegan = getFoodById(Long.parseLong(parts[2])); + Food foodSecond = getFoodById(Long.parseLong(parts[3])); + Food dessertVegan = getFoodById(Long.parseLong(parts[4])); + Food dessertSecond = getFoodById(Long.parseLong(parts[5])); + boolean isSent = !parts[6].equals("0"); + return new FoodPlan(Long.parseLong(parts[0]),date,foodVegan,foodSecond,dessertVegan,dessertSecond,isSent); + } + + public static FoodPlan getFoodPlanById(long id){ + List entry = Database.getEntryById("food_plan",id); + String[] parts = entry.get(0).split(":"); + Food foodVegan = getFoodById(Long.parseLong(parts[2])); + Food foodSecond = getFoodById(Long.parseLong(parts[3])); + Food dessertVegan = getFoodById(Long.parseLong(parts[4])); + Food dessertSecond = getFoodById(Long.parseLong(parts[5])); + boolean isSent = !parts[6].equals("0"); + return new FoodPlan(id,parts[1], foodVegan,foodSecond,dessertVegan,dessertSecond,isSent); } public static Food getFoodById(long id){ @@ -95,7 +117,7 @@ public class FoodMgr { } public static FoodType getFoodTypeById(long id){ - List entry = Database.getEntryById("foodtype",id); + List entry = Database.getEntryById("food_type",id); String[] typeParts = entry.get(0).split(":"); return new FoodType(Long.parseLong(typeParts[0]),typeParts[1]); } @@ -112,7 +134,7 @@ public class FoodMgr { List allergies = new ArrayList<>(); String[] restrictionsH = {"foodid"}; String[] restrictionsD = {String.valueOf(foodId)}; - List restrictions = Database.select("food_restrictions",restrictionsH,restrictionsD); + List restrictions = Database.select("food_restriction",restrictionsH,restrictionsD); for (String restriction : restrictions) { String[] partsRestrictions = restriction.split(":"); allergies.add(getAllergyById(Long.parseLong(partsRestrictions[2]))); @@ -127,9 +149,8 @@ public class FoodMgr { */ public static long createFood_selection(String[] food_selectionData){ String[] food_selectionH = {"childid","food_planid","foodid"}; - List food_plan = Database.getEntryById("food_plan",Long.parseLong(food_selectionData[1])); - String[] food_planParts = food_plan.get(0).split(":"); - if(Long.parseLong(food_planParts[6]) == 0){ + FoodPlan food_plan = getFoodPlanById(Long.parseLong(food_selectionData[1])); + if(!food_plan.isSent()){ return Database.insert("food_selection",food_selectionH,food_selectionData); }else { return -1; @@ -143,18 +164,23 @@ public class FoodMgr { */ public static List getDayOrder(String date){ List orders = new ArrayList<>(); - List food_plan = getFood_plan(date); - String[] food_planParts = food_plan.get(0).split(":"); - for(int i = 2; i < 2+4; i++){ - Food food = getFoodById(Long.parseLong(food_planParts[i])); - String foodName = food.getName(); - String[] food_selectionH = {"food_planid","foodid"}; - String[] food_selectionD = {food_planParts[0], String.valueOf(food.getId())}; + FoodPlan food_plan = getFoodPlan(date); + String sId = String.valueOf(food_plan.getId()); + String[] food_selectionH = {"food_planid","foodid"}; + Food[] foodArray = { + food_plan.getFoodVegan(), + food_plan.getFoodSecond(), + food_plan.getDessertVegan(), + food_plan.getDessertSecond() + }; + for(int i = 0; i < 4; i++){ + String foodName = foodArray[i].getName(); + String[] food_selectionD = {sId, String.valueOf(foodArray[i].getId())}; int count = Database.count("food_selection",food_selectionH,food_selectionD); - orders.add(foodName+":"+count); + orders.add(count+" X "+foodName); } String[] updateH = {"id","issent"}; - String[] updateD = {food_planParts[0],"1"}; + String[] updateD = {sId,"1"}; if(Database.update("food_plan",updateH,updateD) < 0){ System.out.println("Fehler"); } diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/FoodPlan.java b/src/main/java/com/bib/essensbestellungsverwaltung/FoodPlan.java new file mode 100644 index 0000000..c0b10a2 --- /dev/null +++ b/src/main/java/com/bib/essensbestellungsverwaltung/FoodPlan.java @@ -0,0 +1,58 @@ +package com.bib.essensbestellungsverwaltung; + +public class FoodPlan { + private long id; + private String date; + private Food foodVegan; + private Food foodSecond; + private Food dessertVegan; + private Food dessertSecond; + private boolean isSent; + + public FoodPlan(long id, String date, Food foodVegan, Food foodSecond, Food dessertVegan, Food dessertSecond, boolean isSent) { + this.id = id; + this.date = date; + this.foodVegan = foodVegan; + this.foodSecond = foodSecond; + this.dessertVegan = dessertVegan; + this.dessertSecond = dessertSecond; + this.isSent = isSent; + } + public FoodPlan(String date, Food foodVegan, Food foodSecond, Food dessertVegan, Food dessertSecond) { + this.id = -1; + this.date = date; + this.foodVegan = foodVegan; + this.foodSecond = foodSecond; + this.dessertVegan = dessertVegan; + this.dessertSecond = dessertSecond; + this.isSent = false; + } + + public long getId() { + return id; + } + + public String getDate() { + return date; + } + + public Food getFoodVegan() { + return foodVegan; + } + + public Food getFoodSecond() { + return foodSecond; + } + + public Food getDessertVegan() { + return dessertVegan; + } + + public Food getDessertSecond() { + return dessertSecond; + } + + public boolean isSent() { + return isSent; + } +} diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/FoodType.java b/src/main/java/com/bib/essensbestellungsverwaltung/FoodType.java index 3efa4c4..be7ca6a 100644 --- a/src/main/java/com/bib/essensbestellungsverwaltung/FoodType.java +++ b/src/main/java/com/bib/essensbestellungsverwaltung/FoodType.java @@ -1,4 +1,7 @@ package com.bib.essensbestellungsverwaltung; +/* + @author Malte Schulze Hobeling + */ public class FoodType { private long id; diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/Parent.java b/src/main/java/com/bib/essensbestellungsverwaltung/Parent.java new file mode 100644 index 0000000..616e432 --- /dev/null +++ b/src/main/java/com/bib/essensbestellungsverwaltung/Parent.java @@ -0,0 +1,24 @@ +package com.bib.essensbestellungsverwaltung; +/* + @author Malte Schulze Hobeling + */ + +import java.util.ArrayList; +import java.util.List; + +public class Parent extends User{ + List children; + + public Parent(long id, String name, String firstname, String password, String email, Address address, List children) { + super(id, name, firstname, password, email, address); + this.children = children; + } + public Parent(String name, String firstname, String password, String email, Address address) { + super(name, firstname, password, email, address); + this.children = new ArrayList<>(); + } + + public List getChildren() { + return children; + } +} diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/User.java b/src/main/java/com/bib/essensbestellungsverwaltung/User.java index 3422fc9..23cd3e0 100644 --- a/src/main/java/com/bib/essensbestellungsverwaltung/User.java +++ b/src/main/java/com/bib/essensbestellungsverwaltung/User.java @@ -1,4 +1,7 @@ package com.bib.essensbestellungsverwaltung; +/* + @author Malte Schulze Hobeling + */ public class User { private long id; @@ -7,18 +10,22 @@ public class User { private String password; private String email; private Address address; - private boolean isWorker; - private boolean isParent; - public User(long id, String name, String firstname, String password, String email, Address address, boolean isWorker, boolean isParent) { + public User(long id, String name, String firstname, String password, String email, Address address) { this.id = id; this.name = name; this.firstname = firstname; this.password = password; this.email = email; this.address = address; - this.isWorker = isWorker; - this.isParent = isParent; + } + public User(String name, String firstname, String password, String email, Address address) { + this.id = -1; + this.name = name; + this.firstname = firstname; + this.password = password; + this.email = email; + this.address = address; } public long getId() { @@ -44,12 +51,4 @@ public class User { public Address getAddress() { return address; } - - public boolean isWorker() { - return isWorker; - } - - public boolean isParent() { - return isParent; - } } diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/Worker.java b/src/main/java/com/bib/essensbestellungsverwaltung/Worker.java new file mode 100644 index 0000000..e4a7d5c --- /dev/null +++ b/src/main/java/com/bib/essensbestellungsverwaltung/Worker.java @@ -0,0 +1,13 @@ +package com.bib.essensbestellungsverwaltung; +/* + @author Malte Schulze Hobeling + */ + +public class Worker extends User{ + public Worker(long id, String name, String firstname, String password, String email, Address address) { + super(id, name, firstname, password, email, address); + } + public Worker(String name, String firstname, String password, String email, Address address) { + super(name, firstname, password, email, address); + } +}