From 780917069d15b97668827a26e6527f1fe19d90df Mon Sep 17 00:00:00 2001 From: Ivan Bogosavljevic <136277150+Nuvve@users.noreply.github.com> Date: Tue, 16 Apr 2024 22:40:30 +0200 Subject: [PATCH 01/10] =?UTF-8?q?Fick=20problem=20n=C3=A4r=20tablen=20hett?= =?UTF-8?q?e=20Order=20bytte=20till=20Orders=20ist=C3=A4llet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sqlCode | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sqlCode b/sqlCode index 5571df5..2205047 100644 --- a/sqlCode +++ b/sqlCode @@ -3,7 +3,7 @@ DROP TABLE IF EXISTS Recipe; DROP TABLE IF EXISTS Ingredient; DROP TABLE IF EXISTS Cookie; DROP TABLE IF EXISTS Pallet; -DROP TABLE IF EXISTS Order; +DROP TABLE IF EXISTS Orders; DROP TABLE IF EXISTS Customer; CREATE TABLE Customer ( @@ -12,7 +12,7 @@ CREATE TABLE Customer ( address VARCHAR(255) ); -CREATE TABLE Order ( +CREATE TABLE Orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, customer_id INT, delivery_date DATE, @@ -26,7 +26,7 @@ CREATE TABLE Pallet ( manufacture_date DATE, delivery_date DATE, blocked BOOLEAN, - FOREIGN KEY (order_id) REFERENCES Order(order_id) + FOREIGN KEY (order_id) REFERENCES Orders(order_id) ); CREATE TABLE Cookie ( @@ -41,7 +41,7 @@ CREATE TABLE OrderSpec ( cookie_id INT, quantity INT, PRIMARY KEY (order_id, cookie_id), - FOREIGN KEY (order_id) REFERENCES Order(order_id), + FOREIGN KEY (order_id) REFERENCES Orders(order_id), FOREIGN KEY (cookie_id) REFERENCES Cookie(cookie_id) ); From ad45f94f23b4b840eb9f5dcc2dd95383776ab237 Mon Sep 17 00:00:00 2001 From: Ivan Bogosavljevic <136277150+Nuvve@users.noreply.github.com> Date: Tue, 16 Apr 2024 23:27:14 +0200 Subject: [PATCH 02/10] Create initialdata --- initialdata | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 initialdata diff --git a/initialdata b/initialdata new file mode 100644 index 0000000..70e21a7 --- /dev/null +++ b/initialdata @@ -0,0 +1,46 @@ +INSERT INTO Customer(name, address) VALUES + ('Finkakor AB', 'Helsingborg'), + ('Småbröd AB', 'Malmö'), + ('Kaffebröd AB', 'Landskrona'), + ('Bjudkakor AB', 'Ystad'), + ('Kalaskakor AB', 'Trelleborg'), + ('Partykakor AB', 'Kristianstad'), + ('Gästkakor AB', 'Hässleholm'), + ('Skånekakor AB', 'Perstorp'); + +INSERT INTO Cookie(name) VALUES + ('Nut ring'), + ('Nut cookie'), + ('Amneris'), + ('Tango'), + ('Almond delight'), + ('Berliner'); + +INSERT INTO Ingredient(name, stock, unit) VALUES + ('Bread crumbs', 500000, 'g'), + ('Butter', 500000, 'g'), + ('Chocolate', 500000, 'g'), + ('Chopped almonds', 500000, 'g'), + ('Cinnamon', 500000, 'g'), + ('Egg whites', 500000, 'ml'), + ('Eggs', 500000, 'g'), + ('Fine-ground nuts', 500000, 'g'), + ('Flour', 500000, 'g'), + ('Ground, roasted nuts', 500000, 'g'), + ('Icing sugar', 500000, 'g'), + ('Marzipan', 500000, 'g'), + ('Potato starch', 500000, 'g'), + ('Roasted, chopped nuts', 500000, 'g'), + ('Sodium bicarbonate', 500000, 'g'), + ('Sugar', 500000, 'g'), + ('Vanilla sugar', 500000, 'g'), + ('Vanilla', 500000, 'g'), + ('Wheat flour', 500000, 'g'); + +INSERT INTO Recipe (ingredient_id, cookie_id, amount) VALUES + (2, 1, 450),(9, 1, 450),(11, 1, 190),(14, 1, 225), + (2, 2, 125),(3, 2, 50),(6, 2, 350),(8, 2, 750),(10, 2, 625),(16, 2, 375), + (2, 3, 250),(7, 3, 250),(12, 3, 750),(13, 3, 25),(19, 3, 25), + (2, 4, 200),(9, 4, 300),(15, 4, 4),(16, 4, 250),(18, 4, 2), + (2, 5, 400),(4, 5, 279),(5, 5, 10),(9, 5, 400),(16, 5, 270), + (2, 6, 250),(3, 6, 50),(7, 6, 50),(9, 6, 350),(11, 6, 100),(17, 6, 5); From 236d0d43b5e8b84d741837b21dfcbde639c83f05 Mon Sep 17 00:00:00 2001 From: Ivan Bogosavljevic Date: Wed, 17 Apr 2024 10:17:28 +0200 Subject: [PATCH 03/10] =?UTF-8?q?getCustomers=20testet=20fungerar=20nu,=20?= =?UTF-8?q?title=20ska=20vara=20customers=20f=C3=B6r=20testet=20letar=20ef?= =?UTF-8?q?ter=20just=20det=20ordet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/krusty/Database.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/krusty/Database.java b/src/main/java/krusty/Database.java index 978dcb2..c195c06 100644 --- a/src/main/java/krusty/Database.java +++ b/src/main/java/krusty/Database.java @@ -45,7 +45,7 @@ public class Database { public String getCustomers(Request req, Response res) { String query = "SELECT name, address FROM Customer"; - String title = "Customer"; + String title = "customers"; //ändra inte det är till för testet, söker efter just "customers" små bokstäver return getJson(query, title); From 7a5ade039dbc874b418bcb5faa27725564011f3a Mon Sep 17 00:00:00 2001 From: Ivan Bogosavljevic Date: Wed, 17 Apr 2024 10:28:01 +0200 Subject: [PATCH 04/10] Fixat getRawMaterials och getCookies --- src/main/java/krusty/Database.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/krusty/Database.java b/src/main/java/krusty/Database.java index c195c06..b46f9ee 100644 --- a/src/main/java/krusty/Database.java +++ b/src/main/java/krusty/Database.java @@ -52,11 +52,18 @@ public class Database { } public String getRawMaterials(Request req, Response res) { - return "{}"; + String query = "SELECT name, stock as amount, unit FROM Ingredient"; + String title = "raw-materials"; + + return getJson(query, title); } public String getCookies(Request req, Response res) { - return "{\"cookies\":[]}"; + String query = "Select name from Cookie"; + String title = "cookies"; + + + return getJson(query, title); } public String getRecipes(Request req, Response res) { From ef3aecfe38f3818637c428ed7c97edc3dea9027f Mon Sep 17 00:00:00 2001 From: Ivan Bogosavljevic Date: Wed, 17 Apr 2024 11:09:27 +0200 Subject: [PATCH 05/10] =?UTF-8?q?getRecipes=20fungerar=20enligt=20anvisnin?= =?UTF-8?q?gar=20finns=20ej=20testfall=20f=C3=B6r=20att=20testa=20detta=20?= =?UTF-8?q?dock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/krusty/Database.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/krusty/Database.java b/src/main/java/krusty/Database.java index b46f9ee..a9a7cac 100644 --- a/src/main/java/krusty/Database.java +++ b/src/main/java/krusty/Database.java @@ -1,15 +1,14 @@ package krusty; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + import spark.Request; import spark.Response; -import java.util.Arrays; -import java.util.Map; -import java.util.TreeMap; -import java.sql.*; - -import static krusty.Jsonizer.toJson; - public class Database { /** * Modify it to fit your environment and then use this string when connecting to your database! @@ -67,7 +66,10 @@ public class Database { } public String getRecipes(Request req, Response res) { - return "{}"; + String query = "Select c.name, i.name, r.amount, i.unit FROM Cookie c, Ingredient i, Recipe r WHERE r.cookie_id = c.cookie_id AND r.ingredient_id = i.ingredient_id;"; + String title = "recipes"; + + return getJson(query, title); } public String getPallets(Request req, Response res) { From 051c15d8d3df72d734f57bd19603e8644c161c45 Mon Sep 17 00:00:00 2001 From: Ivan Bogosavljevic Date: Wed, 17 Apr 2024 18:53:14 +0200 Subject: [PATCH 06/10] =?UTF-8?q?B=C3=B6rjat=20lite=20med=20createPallet?= =?UTF-8?q?=20men=20ej=20klar.=20f=C3=B6ljt=20compendiet=20kanske=20ej=20r?= =?UTF-8?q?=C3=A4tt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/krusty/Database.java | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/krusty/Database.java b/src/main/java/krusty/Database.java index a9a7cac..ebf0683 100644 --- a/src/main/java/krusty/Database.java +++ b/src/main/java/krusty/Database.java @@ -81,8 +81,27 @@ public class Database { } public String createPallet(Request req, Response res) { - return "{}"; - } + + if (req.queryParams("cookie") != null) { + String cookie = req.queryParams("cookie"); + return createPallet(cookie); + } else { + return ""; + } + } + + protected String createPallet(String cookie) { + String query = ""; + try (PreparedStatement stmt = conn.prepareStatement(query)) { + + } catch (SQLException e) { + return ""; + } + return ""; + } + + + private String getJson(String query, String title) { //privat hjälpmetod så man slipper kalla på jsonizer varje gång try { From eb38c47af7600a7470bd4348a720b2cdb7a3e722 Mon Sep 17 00:00:00 2001 From: Ivan Bogosavljevic <136277150+Nuvve@users.noreply.github.com> Date: Wed, 17 Apr 2024 23:19:16 +0200 Subject: [PATCH 07/10] Uppdaterad sqlkod --- sqlCode | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/sqlCode b/sqlCode index 2205047..9a1dfff 100644 --- a/sqlCode +++ b/sqlCode @@ -1,8 +1,8 @@ DROP TABLE IF EXISTS OrderSpec; DROP TABLE IF EXISTS Recipe; DROP TABLE IF EXISTS Ingredient; -DROP TABLE IF EXISTS Cookie; DROP TABLE IF EXISTS Pallet; +DROP TABLE IF EXISTS Cookie; DROP TABLE IF EXISTS Orders; DROP TABLE IF EXISTS Customer; @@ -20,34 +20,32 @@ CREATE TABLE Orders ( FOREIGN KEY (customer_id) REFERENCES Customer(customer_id) ); +CREATE TABLE Cookie ( + name VARCHAR(255) PRIMARY KEY +); + CREATE TABLE Pallet ( pallet_id INT AUTO_INCREMENT PRIMARY KEY, order_id INT, - manufacture_date DATE, + manufacture_date DATETIME, delivery_date DATE, - blocked BOOLEAN, + blocked VARCHAR(255) DEFAULT 'no', + cookie_name VARCHAR(255), + FOREIGN KEY(cookie_name) REFERENCES Cookie(name), FOREIGN KEY (order_id) REFERENCES Orders(order_id) ); -CREATE TABLE Cookie ( - cookie_id INT AUTO_INCREMENT PRIMARY KEY, - pallet_id INT, - name VARCHAR(255), - FOREIGN KEY (pallet_id) REFERENCES Pallet(pallet_id) -); - CREATE TABLE OrderSpec ( order_id INT, - cookie_id INT, + cookie_name VARCHAR(255), quantity INT, - PRIMARY KEY (order_id, cookie_id), + PRIMARY KEY (order_id, cookie_name), FOREIGN KEY (order_id) REFERENCES Orders(order_id), - FOREIGN KEY (cookie_id) REFERENCES Cookie(cookie_id) + FOREIGN KEY (cookie_name) REFERENCES Cookie(name) ); CREATE TABLE Ingredient ( - ingredient_id INT AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(255), + ingredient_name VARCHAR(255) PRIMARY KEY, stock INT, unit VARCHAR(50), delivery_date DATE, @@ -55,10 +53,10 @@ CREATE TABLE Ingredient ( ); CREATE TABLE Recipe ( - ingredient_id INT, - cookie_id INT, + ingredient_name VARCHAR(255), + cookie_name VARCHAR(255), amount FLOAT, - PRIMARY KEY (ingredient_id, cookie_id), - FOREIGN KEY (ingredient_id) REFERENCES Ingredient(ingredient_id), - FOREIGN KEY (cookie_id) REFERENCES Cookie(cookie_id) + PRIMARY KEY (ingredient_name, cookie_name), + FOREIGN KEY (ingredient_name) REFERENCES Ingredient(ingredient_name), + FOREIGN KEY (cookie_name) REFERENCES Cookie(name) ); From b4851455ddb520dd43ad33fb317545d0c68fee93 Mon Sep 17 00:00:00 2001 From: Ivan Bogosavljevic <136277150+Nuvve@users.noreply.github.com> Date: Wed, 17 Apr 2024 23:19:51 +0200 Subject: [PATCH 08/10] Update initialdata --- initialdata | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/initialdata b/initialdata index 70e21a7..a127a07 100644 --- a/initialdata +++ b/initialdata @@ -16,7 +16,7 @@ INSERT INTO Cookie(name) VALUES ('Almond delight'), ('Berliner'); -INSERT INTO Ingredient(name, stock, unit) VALUES +INSERT INTO Ingredient(ingredient_name, stock, unit) VALUES ('Bread crumbs', 500000, 'g'), ('Butter', 500000, 'g'), ('Chocolate', 500000, 'g'), @@ -37,10 +37,11 @@ INSERT INTO Ingredient(name, stock, unit) VALUES ('Vanilla', 500000, 'g'), ('Wheat flour', 500000, 'g'); -INSERT INTO Recipe (ingredient_id, cookie_id, amount) VALUES - (2, 1, 450),(9, 1, 450),(11, 1, 190),(14, 1, 225), - (2, 2, 125),(3, 2, 50),(6, 2, 350),(8, 2, 750),(10, 2, 625),(16, 2, 375), - (2, 3, 250),(7, 3, 250),(12, 3, 750),(13, 3, 25),(19, 3, 25), - (2, 4, 200),(9, 4, 300),(15, 4, 4),(16, 4, 250),(18, 4, 2), - (2, 5, 400),(4, 5, 279),(5, 5, 10),(9, 5, 400),(16, 5, 270), - (2, 6, 250),(3, 6, 50),(7, 6, 50),(9, 6, 350),(11, 6, 100),(17, 6, 5); +INSERT INTO Recipe (ingredient_name, cookie_name, amount) VALUES + ('Butter', 'Nut ring', 450),('Flour', 'Nut ring', 450),('Icing sugar', 'Nut ring', 190),('Roasted, chopped nuts', 'Nut ring', 225), + ('Bread crumbs', 'Nut cookie', 125),('Chocolate', 'Nut cookie', 50),('Egg whites', 'Nut cookie', 350),('Fine-ground nuts', 'Nut cookie', 750),('Ground, roasted nuts', 'Nut cookie', 625),('Sugar', 'Nut cookie', 375), + ('Butter', 'Amneris', 250),('Eggs', 'Amneris', 250),('Marzipan', 'Amneris', 750),('Potato starch', 'Amneris', 25),('Wheat flour', 'Amneris', 25), + ('Butter', 'Tango', 200),('Flour', 'Tango', 300),('Sodium bicarbonate', 'Tango', 4),('Sugar', 'Tango', 250),('Vanilla', 'Tango', 2), + ('Butter', 'Almond delight', 400),('Chopped almonds', 'Almond delight', 279),('Cinnamon', 'Almond delight', 10),('Flour', 'Almond delight', 400),('Sugar', 'Almond delight', 270), + ('Butter', 'Berliner', 250),('Chocolate', 'Berliner', 50),('Eggs', 'Berliner', 50),('Flour', 'Berliner', 350),('Icing sugar', 'Berliner', 100),('Vanilla sugar', 'Berliner', 5); + From e241613a151ea438a2e6faaa3cf141ed5f1ef76f Mon Sep 17 00:00:00 2001 From: Ivan Bogosavljevic <136277150+Nuvve@users.noreply.github.com> Date: Wed, 17 Apr 2024 23:30:01 +0200 Subject: [PATCH 09/10] Update sqlCode --- sqlCode | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sqlCode b/sqlCode index 9a1dfff..26d3a9f 100644 --- a/sqlCode +++ b/sqlCode @@ -7,17 +7,16 @@ DROP TABLE IF EXISTS Orders; DROP TABLE IF EXISTS Customer; CREATE TABLE Customer ( - customer_id INT AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(255), + name VARCHAR(255) PRIMARY KEY, address VARCHAR(255) ); CREATE TABLE Orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, - customer_id INT, + customer_name VARCHAR(255), delivery_date DATE, order_date DATE, - FOREIGN KEY (customer_id) REFERENCES Customer(customer_id) + FOREIGN KEY (customer_name) REFERENCES Customer(name) ); CREATE TABLE Cookie ( From d1daee1e0300494f267831993d992aa693deafab Mon Sep 17 00:00:00 2001 From: Ivan Bogosavljevic Date: Thu, 18 Apr 2024 00:23:25 +0200 Subject: [PATCH 10/10] Bara reset och getPallets som ska fixas tror jag, allt annat fungerar --- src/main/java/krusty/Database.java | 41 ++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/src/main/java/krusty/Database.java b/src/main/java/krusty/Database.java index ebf0683..5ec0f57 100644 --- a/src/main/java/krusty/Database.java +++ b/src/main/java/krusty/Database.java @@ -51,7 +51,7 @@ public class Database { } public String getRawMaterials(Request req, Response res) { - String query = "SELECT name, stock as amount, unit FROM Ingredient"; + String query = "SELECT ingredient_name as name, stock as amount, unit FROM Ingredient"; String title = "raw-materials"; return getJson(query, title); @@ -66,14 +66,16 @@ public class Database { } public String getRecipes(Request req, Response res) { - String query = "Select c.name, i.name, r.amount, i.unit FROM Cookie c, Ingredient i, Recipe r WHERE r.cookie_id = c.cookie_id AND r.ingredient_id = i.ingredient_id;"; + String query = "Select r.cookie_name, i.ingredient_name, r.amount, i.unit From Ingredient i, Recipe r WHERE r.ingredient_name = i.ingredient_name;"; String title = "recipes"; return getJson(query, title); } public String getPallets(Request req, Response res) { - return "{\"pallets\":[]}"; + String query = "Select cookie_name as cookie, blocked From Pallet;"; + String title = "pallets"; + return getJson(query, title); } public String reset(Request req, Response res) { @@ -81,7 +83,6 @@ public class Database { } public String createPallet(Request req, Response res) { - if (req.queryParams("cookie") != null) { String cookie = req.queryParams("cookie"); return createPallet(cookie); @@ -91,11 +92,13 @@ public class Database { } protected String createPallet(String cookie) { - String query = ""; + String query = "Insert into Pallet (manufacture_date, cookie_name) VALUES (NOW(), ?);"; try (PreparedStatement stmt = conn.prepareStatement(query)) { - + stmt.setString(1, cookie); + stmt.executeUpdate(); + removeMaterials(cookie); } catch (SQLException e) { - return ""; + return "bob"; } return ""; } @@ -104,13 +107,31 @@ public class Database { private String getJson(String query, String title) { //privat hjälpmetod så man slipper kalla på jsonizer varje gång - try { - PreparedStatement stmt = conn.prepareStatement(query); + try (PreparedStatement stmt = conn.prepareStatement(query)) { ResultSet rs = stmt.executeQuery(); - return Jsonizer.toJson(rs, title); } catch (SQLException e) { return ""; } } + public void removeMaterials(String cookie) { //privat hjälpmetod för att minska antalet material efter man gör en pallet + String query = "Select ingredient_name, amount from Recipe where cookie_name = ?;"; + String query2 = "UPDATE Ingredient SET stock = stock - ? WHERE ingredient_name = ?;"; + + try (PreparedStatement stmt = conn.prepareStatement(query)) { + stmt.setString(1, cookie); + ResultSet rs = stmt.executeQuery(); + while(rs.next()) { //loopar igenom och uppdaterar all material + try (PreparedStatement stmt2 = conn.prepareStatement(query2)) { + stmt2.setInt(1, rs.getInt("amount") * 54); //54 för (10*15*36)/100 = 10 kakor per låda, 15 lådor per box 36 boxar per pallet, materialet är för 100 kakor därför man delar allt med 100 + stmt2.setString(2, rs.getString("ingredient_name")); + stmt2.executeUpdate(); + } catch (SQLException e) { + } + } + } catch (SQLException e){ + //return false; + } + //return true; + } }