From f80aef336fed6a01c9fdcdadb7a16064e18ca5de Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Tue, 2 Apr 2024 15:54:32 -0400 Subject: [PATCH 01/22] Added JUnit to POM --- .idea/jarRepositories.xml | 20 ++++++++++++++++++++ pom.xml | 14 ++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 .idea/jarRepositories.xml diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 43c1af2..c3fbd83 100644 --- a/pom.xml +++ b/pom.xml @@ -21,5 +21,19 @@ + + + org.junit.jupiter + junit-jupiter-engine + 5.4.2 + test + + + org.junit.jupiter + junit-jupiter-api + 5.4.2 + test + + \ No newline at end of file From 8e5d002af2287f7a67b62aeded8e61ecf689be63 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Tue, 2 Apr 2024 16:03:38 -0400 Subject: [PATCH 02/22] Created main and test classes --- src/main/java/Models/Sneaker.java | 4 ++++ src/main/java/Models/Whiskey.java | 4 ++++ src/main/java/Services/SneakerService.java | 4 ++++ src/main/java/Services/WhiskeyService.java | 4 ++++ src/test/java/ModelsTest/SneakerTest.java | 4 ++++ src/test/java/ModelsTest/WhiskeyTest.java | 4 ++++ src/test/java/ServicesTest/SneakerServicesTest.java | 4 ++++ src/test/java/ServicesTest/WhiskeyServicesTest.java | 4 ++++ 8 files changed, 32 insertions(+) create mode 100644 src/main/java/Models/Sneaker.java create mode 100644 src/main/java/Models/Whiskey.java create mode 100644 src/main/java/Services/SneakerService.java create mode 100644 src/main/java/Services/WhiskeyService.java create mode 100644 src/test/java/ModelsTest/SneakerTest.java create mode 100644 src/test/java/ModelsTest/WhiskeyTest.java create mode 100644 src/test/java/ServicesTest/SneakerServicesTest.java create mode 100644 src/test/java/ServicesTest/WhiskeyServicesTest.java diff --git a/src/main/java/Models/Sneaker.java b/src/main/java/Models/Sneaker.java new file mode 100644 index 0000000..32d7419 --- /dev/null +++ b/src/main/java/Models/Sneaker.java @@ -0,0 +1,4 @@ +package Models; + +public class Sneaker { +} diff --git a/src/main/java/Models/Whiskey.java b/src/main/java/Models/Whiskey.java new file mode 100644 index 0000000..527f027 --- /dev/null +++ b/src/main/java/Models/Whiskey.java @@ -0,0 +1,4 @@ +package Models; + +public class Whiskey { +} diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java new file mode 100644 index 0000000..75a3ef3 --- /dev/null +++ b/src/main/java/Services/SneakerService.java @@ -0,0 +1,4 @@ +package Services; + +public class SneakerService { +} diff --git a/src/main/java/Services/WhiskeyService.java b/src/main/java/Services/WhiskeyService.java new file mode 100644 index 0000000..def3cb5 --- /dev/null +++ b/src/main/java/Services/WhiskeyService.java @@ -0,0 +1,4 @@ +package Services; + +public class WhiskeyService { +} diff --git a/src/test/java/ModelsTest/SneakerTest.java b/src/test/java/ModelsTest/SneakerTest.java new file mode 100644 index 0000000..275bad7 --- /dev/null +++ b/src/test/java/ModelsTest/SneakerTest.java @@ -0,0 +1,4 @@ +package ModelsTest; + +public class SneakerTest { +} diff --git a/src/test/java/ModelsTest/WhiskeyTest.java b/src/test/java/ModelsTest/WhiskeyTest.java new file mode 100644 index 0000000..0936ada --- /dev/null +++ b/src/test/java/ModelsTest/WhiskeyTest.java @@ -0,0 +1,4 @@ +package ModelsTest; + +public class WhiskeyTest { +} diff --git a/src/test/java/ServicesTest/SneakerServicesTest.java b/src/test/java/ServicesTest/SneakerServicesTest.java new file mode 100644 index 0000000..ca973fe --- /dev/null +++ b/src/test/java/ServicesTest/SneakerServicesTest.java @@ -0,0 +1,4 @@ +package ServicesTest; + +public class SneakerServicesTest { +} diff --git a/src/test/java/ServicesTest/WhiskeyServicesTest.java b/src/test/java/ServicesTest/WhiskeyServicesTest.java new file mode 100644 index 0000000..3967228 --- /dev/null +++ b/src/test/java/ServicesTest/WhiskeyServicesTest.java @@ -0,0 +1,4 @@ +package ServicesTest; + +public class WhiskeyServicesTest { +} From f494e9c43fb0d79eec51c6e1c95bd3f3418a9422 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Tue, 2 Apr 2024 16:07:41 -0400 Subject: [PATCH 03/22] Added fields to sneakers and whiskey --- src/main/java/Models/Sneaker.java | 7 +++++++ src/main/java/Models/Whiskey.java | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/Models/Sneaker.java b/src/main/java/Models/Sneaker.java index 32d7419..ae5e953 100644 --- a/src/main/java/Models/Sneaker.java +++ b/src/main/java/Models/Sneaker.java @@ -1,4 +1,11 @@ package Models; public class Sneaker { + private int id; + private String name; + private String brand; + private String sport; + private int size; + private int qty; + private float price; } diff --git a/src/main/java/Models/Whiskey.java b/src/main/java/Models/Whiskey.java index 527f027..6847b50 100644 --- a/src/main/java/Models/Whiskey.java +++ b/src/main/java/Models/Whiskey.java @@ -1,4 +1,9 @@ package Models; public class Whiskey { + private int age; + private String brand; + private String color; + private int ounces; + private float price; } From db0ab2602a1293d92862791044fdd1361d2b29d1 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Tue, 2 Apr 2024 16:35:31 -0400 Subject: [PATCH 04/22] Part 1 and 2 Finished --- pom.xml | 6 ++ src/main/java/Models/Sneaker.java | 68 ++++++++++++++++++- src/main/java/Services/SneakerService.java | 46 +++++++++++++ src/test/java/ModelsTest/SneakerTest.java | 41 +++++++++++ .../ServicesTest/SneakerServicesTest.java | 40 +++++++++++ 5 files changed, 200 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c3fbd83..12b36b3 100644 --- a/pom.xml +++ b/pom.xml @@ -34,6 +34,12 @@ 5.4.2 test + + junit + junit + RELEASE + test + \ No newline at end of file diff --git a/src/main/java/Models/Sneaker.java b/src/main/java/Models/Sneaker.java index ae5e953..ea43352 100644 --- a/src/main/java/Models/Sneaker.java +++ b/src/main/java/Models/Sneaker.java @@ -7,5 +7,71 @@ public class Sneaker { private String sport; private int size; private int qty; - private float price; + private double price; + + public Sneaker(int id, String name, String brand, String sport, int size, int qty, double price){ + this.id = id; + this.name = name; + this.brand = brand; + this.sport = sport; + this.size = size; + this.qty = qty; + this.price = price; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getBrand() { + return brand; + } + + public void setBrand(String brand) { + this.brand = brand; + } + + public String getSport() { + return sport; + } + + public void setSport(String sport) { + this.sport = sport; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public int getQty() { + return qty; + } + + public void setQty(int qty) { + this.qty = qty; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } } diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index 75a3ef3..222aac2 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -1,4 +1,50 @@ package Services; +import Models.Sneaker; + +import java.util.ArrayList; +import java.util.List; + public class SneakerService { + private static int nextId = 1; + + private static ArrayList inventory = new ArrayList<>(); + + + public static Sneaker create(String name, String brand, String sport, int size, int quantity, double price) { + + // (2) + Sneaker createdSneaker = new Sneaker(nextId++, name, brand, sport, size, quantity, price); + + // (3) + inventory.add(createdSneaker); + + // (4) + return createdSneaker; + } + + public Sneaker findSneaker(int id) { + // should take an int and return an object with that id, if exists + return inventory.get(id); + } + + //read all + public Sneaker[] findAll() { + // should return a basic array copy of the ArrayList + return inventory.toArray(new Sneaker[0]); + } + + //delete + public boolean delete(int id) { + // should remove the object with this id from the ArrayList if exits and return true. + // Otherwise return false + for(Sneaker sneaks : inventory){ + if(sneaks.getId() == id){ + inventory.remove(id); + return true; + } + } + + return false; + } } diff --git a/src/test/java/ModelsTest/SneakerTest.java b/src/test/java/ModelsTest/SneakerTest.java index 275bad7..49f03ed 100644 --- a/src/test/java/ModelsTest/SneakerTest.java +++ b/src/test/java/ModelsTest/SneakerTest.java @@ -1,4 +1,45 @@ package ModelsTest; +import Models.Sneaker; +import org.junit.Test; +import org.junit.jupiter.api.Assertions; + public class SneakerTest { + + @Test + public void setNameTest() { + // given (1) + String expected = "OZWEEGO"; + + // when (2) + Sneaker testSneaker = new Sneaker(0, expected, null, null, 0, 0, 0); + testSneaker.setName(expected); + + // then (3) + Assertions.assertEquals(expected, testSneaker.getName()); + } + + @Test // (1) + public void constructorTest(){ + + // (2) + int expectedId = 6; + String expectedName = "Stan Smith"; + String expectedBrand = "Adidas"; + String expectedSport = "Tennis"; + int expectedQty = 10; + double expectedPrice = 80.00; + + // (3) + Sneaker testSneaker = new Sneaker(expectedId, expectedName, expectedBrand, + expectedSport,0, expectedQty, expectedPrice); + + // (4) + Assertions.assertEquals(expectedId, testSneaker.getId()); + Assertions.assertEquals(expectedName, testSneaker.getName()); + Assertions.assertEquals(expectedBrand, testSneaker.getBrand()); + Assertions.assertEquals(expectedSport, testSneaker.getSport()); + Assertions.assertEquals(expectedQty, testSneaker.getQty()); + Assertions.assertEquals(expectedPrice, testSneaker.getPrice()); + } } diff --git a/src/test/java/ServicesTest/SneakerServicesTest.java b/src/test/java/ServicesTest/SneakerServicesTest.java index ca973fe..c2f3471 100644 --- a/src/test/java/ServicesTest/SneakerServicesTest.java +++ b/src/test/java/ServicesTest/SneakerServicesTest.java @@ -1,4 +1,44 @@ package ServicesTest; +import Models.Sneaker; +import Services.SneakerService; +import org.junit.Test; +import org.junit.jupiter.api.Assertions; + public class SneakerServicesTest { + + @Test + public void createTest() { + + // (1) + String expectedName = "Stan Smith"; + String expectedBrand = "Adidas"; + String expectedSport = "Tennis"; + int expectedSize = (int) 10.5; + int expectedQty = 10; + double expectedPrice = 80.00; + + // (2) + SneakerService sneakerService = new SneakerService(); + Sneaker testSneaker = SneakerService.create(expectedName, expectedBrand, + expectedSport, expectedSize, expectedQty, expectedPrice); + + // (3) + int actualId = testSneaker.getId(); + String actualName = testSneaker.getName(); + String actualBrand = testSneaker.getBrand(); + String actualSport = testSneaker.getSport(); + int actualSize = testSneaker.getSize(); + int actualQty = testSneaker.getQty(); + double actualPrice = testSneaker.getPrice(); + + // (4) + Assertions.assertEquals(Integer.class.getName(), new Integer(actualId).getClass().getName()); + Assertions.assertEquals(expectedName, actualName); + Assertions.assertEquals(expectedBrand, actualBrand); + Assertions.assertEquals(expectedSport, actualSport); + Assertions.assertEquals(expectedSize, actualSize); + Assertions.assertEquals(expectedQty, actualQty); + Assertions.assertEquals(expectedPrice, actualPrice); + } } From 3e6d6fd296b734e984d2f90a647f673c15abc517 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Tue, 2 Apr 2024 16:42:43 -0400 Subject: [PATCH 05/22] Part 1,2 Finished, part 3 halfway done --- src/main/java/IO/App.java | 12 ++++++++++++ src/main/java/IO/Console.java | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/main/java/IO/App.java create mode 100644 src/main/java/IO/Console.java diff --git a/src/main/java/IO/App.java b/src/main/java/IO/App.java new file mode 100644 index 0000000..75314f0 --- /dev/null +++ b/src/main/java/IO/App.java @@ -0,0 +1,12 @@ +package IO; + +import Services.SneakerService; + +public class App { + + private SneakerService ss = new SneakerService(); + + public static void main(String... args) { + + } +} diff --git a/src/main/java/IO/Console.java b/src/main/java/IO/Console.java new file mode 100644 index 0000000..19f88fd --- /dev/null +++ b/src/main/java/IO/Console.java @@ -0,0 +1,20 @@ + +package IO; + +import java.util.Scanner; + +import static java.lang.System.in; + +public class Console { + + public Scanner scanner = new Scanner(in); + + public static void printWelcome(){ + System.out.println("" + + "**************************************************" + + "*** Welcome and Bienvenue ***" + + "*** to ***" + + "*** ZipCo Inventory Manager ***" + + "**************************************************"); + } +} From 55073cce112f0d2ae4780670e24687f7a9f0b16f Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Tue, 2 Apr 2024 16:51:09 -0400 Subject: [PATCH 06/22] Part 3 almost done --- src/main/java/IO/App.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/IO/App.java b/src/main/java/IO/App.java index 75314f0..54f415a 100644 --- a/src/main/java/IO/App.java +++ b/src/main/java/IO/App.java @@ -2,11 +2,35 @@ import Services.SneakerService; +import java.util.Scanner; + +import static java.lang.System.in; + public class App { + Scanner scanner = new Scanner(in); private SneakerService ss = new SneakerService(); public static void main(String... args) { + App application = new App(); + application.init(); + } + public void init(){ + // (4) + // application logic here + // call methods to take user input and interface with services + Console.printWelcome(); + System.out.println("What would you like to do?"); + System.out.println("1. Create new sneaker"); + System.out.println("2. See existing inventory"); + System.out.println("3. Update inventory"); + System.out.println("4. Delete inventory"); + System.out.println("5. Get Product Reports"); + System.out.println("6. Exit Program"); + int choice = scanner.nextInt(); + switch(choice){ + case 1: + } } } From 6c2655b6d9de02d928f04deeb68b265af65ae736 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Thu, 4 Apr 2024 14:37:13 -0400 Subject: [PATCH 07/22] Part 1,2,3 Finished --- src/main/java/IO/App.java | 27 ++++++++++++++++++++++ src/main/java/Services/SneakerService.java | 4 ++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/main/java/IO/App.java b/src/main/java/IO/App.java index 54f415a..d3f6ab6 100644 --- a/src/main/java/IO/App.java +++ b/src/main/java/IO/App.java @@ -4,6 +4,7 @@ import java.util.Scanner; +import static java.lang.System.exit; import static java.lang.System.in; public class App { @@ -31,6 +32,32 @@ public void init(){ int choice = scanner.nextInt(); switch(choice){ case 1: + SneakerService ss = new SneakerService(); + System.out.println("Name your sneaker"); + String name = scanner.nextLine(); + System.out.println("Name your brand"); + String brand = scanner.nextLine(); + System.out.println("Name your sport"); + String sport = scanner.nextLine(); + System.out.println("Choose your size"); + int size = scanner.nextInt(); + System.out.println("Choose qty to make"); + int qty = scanner.nextInt(); + System.out.println("Choose a price point"); + double price = scanner.nextDouble(); + ss.create(name, brand, sport, size, qty, price); + case 2: + SneakerService.findAll(); + case 3: + SneakerService.findAll(); + case 4: + System.out.println("Choose an ID to delete, check existing inventory first"); + int id = scanner.nextInt(); + SneakerService.delete(id); + case 5: + System.out.println("Product report"); + case 6: + System.exit(0); } } } diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index 222aac2..22d0e0c 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -29,13 +29,13 @@ public Sneaker findSneaker(int id) { } //read all - public Sneaker[] findAll() { + public static Sneaker[] findAll() { // should return a basic array copy of the ArrayList return inventory.toArray(new Sneaker[0]); } //delete - public boolean delete(int id) { + public static boolean delete(int id) { // should remove the object with this id from the ArrayList if exits and return true. // Otherwise return false for(Sneaker sneaks : inventory){ From b970d1693c76ea80706f2c5554c3fcc760cffaa6 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Mon, 8 Apr 2024 10:34:05 -0400 Subject: [PATCH 08/22] 123 Done, Part 4 in progress --- src/main/java/IO/App.java | 23 ++++++++++++++++++---- src/main/java/IO/Console.java | 9 ++++----- src/main/java/Services/SneakerService.java | 4 ++-- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/main/java/IO/App.java b/src/main/java/IO/App.java index d3f6ab6..84ae0f5 100644 --- a/src/main/java/IO/App.java +++ b/src/main/java/IO/App.java @@ -1,5 +1,6 @@ package IO; +import Models.Sneaker; import Services.SneakerService; import java.util.Scanner; @@ -28,11 +29,10 @@ public void init(){ System.out.println("3. Update inventory"); System.out.println("4. Delete inventory"); System.out.println("5. Get Product Reports"); - System.out.println("6. Exit Program"); + System.out.println("6. Exit Program\n"); int choice = scanner.nextInt(); switch(choice){ case 1: - SneakerService ss = new SneakerService(); System.out.println("Name your sneaker"); String name = scanner.nextLine(); System.out.println("Name your brand"); @@ -45,19 +45,34 @@ public void init(){ int qty = scanner.nextInt(); System.out.println("Choose a price point"); double price = scanner.nextDouble(); - ss.create(name, brand, sport, size, qty, price); + SneakerService.create(name, brand, sport, size, qty, price); + break; case 2: - SneakerService.findAll(); + Sneaker[] inventory = SneakerService.findAll(); + for (Sneaker sneaker : inventory) { + System.out.println("Name: " + sneaker.getName()); + System.out.println("Brand: " + sneaker.getBrand()); + System.out.println("Sport: " + sneaker.getSport()); + System.out.println("Size: " + sneaker.getSize()); + System.out.println("Quantity: " + sneaker.getQty()); + System.out.println("Price: " + sneaker.getPrice()); + System.out.println(); + } + break; case 3: SneakerService.findAll(); + break; case 4: System.out.println("Choose an ID to delete, check existing inventory first"); int id = scanner.nextInt(); SneakerService.delete(id); + break; case 5: System.out.println("Product report"); + break; case 6: System.exit(0); + break; } } } diff --git a/src/main/java/IO/Console.java b/src/main/java/IO/Console.java index 19f88fd..ddd2e05 100644 --- a/src/main/java/IO/Console.java +++ b/src/main/java/IO/Console.java @@ -8,13 +8,12 @@ public class Console { public Scanner scanner = new Scanner(in); - public static void printWelcome(){ System.out.println("" + - "**************************************************" + - "*** Welcome and Bienvenue ***" + - "*** to ***" + - "*** ZipCo Inventory Manager ***" + + "**************************************************\n"+ + "*** Welcome and Bienvenue ***\n" + + "*** to ***\n" + + "*** ZipCo Inventory Manager ***\n" + "**************************************************"); } } diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index 22d0e0c..745b4dd 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -14,8 +14,8 @@ public class SneakerService { public static Sneaker create(String name, String brand, String sport, int size, int quantity, double price) { // (2) - Sneaker createdSneaker = new Sneaker(nextId++, name, brand, sport, size, quantity, price); - + Sneaker createdSneaker = new Sneaker(nextId, name, brand, sport, size, quantity, price); + nextId++; // (3) inventory.add(createdSneaker); From 99161aa2630a5765cd2ea4fb801c56da6f5724fc Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Mon, 8 Apr 2024 11:06:24 -0400 Subject: [PATCH 09/22] CSV writing implemented --- src/main/SneakerList.csv | 2 ++ src/main/java/IO/App.java | 7 +++-- src/main/java/Services/SneakerService.java | 34 +++++++++++++++++++++- src/main/java/Utils/CSVUtils.java | 28 ++++++++++++++++++ 4 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 src/main/SneakerList.csv create mode 100644 src/main/java/Utils/CSVUtils.java diff --git a/src/main/SneakerList.csv b/src/main/SneakerList.csv new file mode 100644 index 0000000..47d31b7 --- /dev/null +++ b/src/main/SneakerList.csv @@ -0,0 +1,2 @@ +2 +1,Matt,Nike,Tennis,1,100.0 diff --git a/src/main/java/IO/App.java b/src/main/java/IO/App.java index 84ae0f5..d809d6e 100644 --- a/src/main/java/IO/App.java +++ b/src/main/java/IO/App.java @@ -3,6 +3,7 @@ import Models.Sneaker; import Services.SneakerService; +import java.io.IOException; import java.util.Scanner; import static java.lang.System.exit; @@ -13,12 +14,12 @@ public class App { private SneakerService ss = new SneakerService(); - public static void main(String... args) { + public static void main(String... args) throws IOException { App application = new App(); application.init(); } - public void init(){ + public void init() throws IOException { // (4) // application logic here // call methods to take user input and interface with services @@ -34,6 +35,7 @@ public void init(){ switch(choice){ case 1: System.out.println("Name your sneaker"); + scanner.nextLine(); String name = scanner.nextLine(); System.out.println("Name your brand"); String brand = scanner.nextLine(); @@ -46,6 +48,7 @@ public void init(){ System.out.println("Choose a price point"); double price = scanner.nextDouble(); SneakerService.create(name, brand, sport, size, qty, price); + SneakerService.writeToCSV(); break; case 2: Sneaker[] inventory = SneakerService.findAll(); diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index 745b4dd..9ff8a53 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -1,8 +1,12 @@ package Services; import Models.Sneaker; +import Utils.CSVUtils; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class SneakerService { @@ -25,7 +29,12 @@ public static Sneaker create(String name, String brand, String sport, int size, public Sneaker findSneaker(int id) { // should take an int and return an object with that id, if exists - return inventory.get(id); + if (inventory.contains(id)) { + return inventory.get(id); + } else { + System.out.println("ID does not exist"); + return null; + } } //read all @@ -47,4 +56,27 @@ public static boolean delete(int id) { return false; } + + public static void writeToCSV() throws IOException { + String csvFile = "/Users/matthew/Projects/Product-Inventory-Lab/src/main/SneakerList.csv"; + FileWriter writer = new FileWriter(csvFile); //(1) + + CSVUtils.writeLine(writer, new ArrayList(Arrays.asList(String.valueOf(nextId)))); // (2) + + for (Sneaker s : inventory) { + List list = new ArrayList<>(); // (3) + list.add(String.valueOf(s.getId())); + list.add(s.getName()); + list.add(s.getBrand()); + list.add(s.getSport()); + list.add(String.valueOf(s.getQty())); + list.add(String.valueOf(s.getPrice())); + + CSVUtils.writeLine(writer, list); // (4) + } + + // (5) + writer.flush(); + writer.close(); + } } diff --git a/src/main/java/Utils/CSVUtils.java b/src/main/java/Utils/CSVUtils.java new file mode 100644 index 0000000..aed50a0 --- /dev/null +++ b/src/main/java/Utils/CSVUtils.java @@ -0,0 +1,28 @@ +package Utils; + +import java.io.IOException; +import java.io.Writer; +import java.util.List; + +public class CSVUtils { + private static final char DEFAULT_SEPARATOR = ','; // (1) + + // (2) + public static void writeLine(Writer w, List values) throws IOException { + boolean first = true; + + StringBuilder sb = new StringBuilder(); + + // (3) + for (String value : values) { + if (!first) { + sb.append(DEFAULT_SEPARATOR); + } + sb.append(value); + first = false; + } + sb.append("\n"); + + w.append(sb.toString()); // (4) + } +} From c1d1a6e9f560dca4d12ef4bcaa0aa4e71714ca65 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Mon, 8 Apr 2024 11:19:26 -0400 Subject: [PATCH 10/22] 1,2,3,4 Finished JSON 5 started --- pom.xml | 6 ++++ src/main/SneakerList.csv | 3 +- src/main/java/IO/App.java | 1 + src/main/java/Services/SneakerService.java | 39 ++++++++++++++++++++-- 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 12b36b3..4c1f783 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,12 @@ RELEASE test + + com.fasterxml.jackson.core + jackson-databind + 2.10.1 + + \ No newline at end of file diff --git a/src/main/SneakerList.csv b/src/main/SneakerList.csv index 47d31b7..c1c0ba5 100644 --- a/src/main/SneakerList.csv +++ b/src/main/SneakerList.csv @@ -1,2 +1,3 @@ -2 +3 1,Matt,Nike,Tennis,1,100.0 +2,Dunks,Nike,Skating,1,50.0 diff --git a/src/main/java/IO/App.java b/src/main/java/IO/App.java index d809d6e..607a8a1 100644 --- a/src/main/java/IO/App.java +++ b/src/main/java/IO/App.java @@ -24,6 +24,7 @@ public void init() throws IOException { // application logic here // call methods to take user input and interface with services Console.printWelcome(); + SneakerService.loadData(); System.out.println("What would you like to do?"); System.out.println("1. Create new sneaker"); System.out.println("2. See existing inventory"); diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index 9ff8a53..81f1cc8 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -2,9 +2,9 @@ import Models.Sneaker; import Utils.CSVUtils; +import jdk.internal.org.objectweb.asm.TypeReference; -import java.io.FileWriter; -import java.io.IOException; +import java.io.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -79,4 +79,39 @@ public static void writeToCSV() throws IOException { writer.flush(); writer.close(); } + + public static void loadData(){ + // (1) + String csvFile = "/Users/matthew/Projects/Product-Inventory-Lab/src/main/SneakerList.csv"; + String line = ""; + String csvSplitBy = ","; + + // (2) + try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) { + nextId = Integer.parseInt(br.readLine()); // (3) + + while ((line = br.readLine()) != null) { + // split line with comma + String[] beer = line.split(csvSplitBy); + + // (4) + int id = Integer.parseInt(beer[0]); + String name = beer[1]; + String brand = beer[2]; + String sport = beer[3]; + int qty = Integer.parseInt(beer[4]); + double price = Double.parseDouble(beer[5]); + + // (5) + inventory.add(new Sneaker(id, name, brand, sport, 12, qty, price)); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void loadJSONData(){ + ObjectMapper objectMapper = new ObjectMapper(); + this.inventory = objectMapper.readValue(new File("sneaker.json"), new TypeReference>(){}); + } } From 7118770a2fbf53df978a985d865393c048f0f968 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Mon, 8 Apr 2024 11:22:30 -0400 Subject: [PATCH 11/22] 1,2,3,4 Finished JSON 5 started, method in SneakServ --- src/main/java/Services/SneakerService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index 81f1cc8..f55046f 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -110,8 +110,8 @@ public static void loadData(){ } } - public void loadJSONData(){ - ObjectMapper objectMapper = new ObjectMapper(); - this.inventory = objectMapper.readValue(new File("sneaker.json"), new TypeReference>(){}); - } +// public void loadJSONData(){ +// ObjectMapper objectMapper = new ObjectMapper(); +// this.inventory = objectMapper.readValue(new File("sneaker.json"), new TypeReference>(){}); +// } } From a7bc19557449eb2fee27c591dde1773cd2b3c71f Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Mon, 8 Apr 2024 16:26:18 -0400 Subject: [PATCH 12/22] JSON imported --- src/main/java/Services/SneakerService.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index f55046f..61acae8 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -3,7 +3,8 @@ import Models.Sneaker; import Utils.CSVUtils; import jdk.internal.org.objectweb.asm.TypeReference; - +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.*; import java.io.*; import java.util.ArrayList; import java.util.Arrays; @@ -12,7 +13,7 @@ public class SneakerService { private static int nextId = 1; - private static ArrayList inventory = new ArrayList<>(); + private static List inventory = new ArrayList<>(); public static Sneaker create(String name, String brand, String sport, int size, int quantity, double price) { @@ -110,8 +111,8 @@ public static void loadData(){ } } -// public void loadJSONData(){ -// ObjectMapper objectMapper = new ObjectMapper(); -// this.inventory = objectMapper.readValue(new File("sneaker.json"), new TypeReference>(){}); -// } + public void loadJSONData(){ + ObjectMapper objectMapper = new ObjectMapper(); + inventory = objectMapper.readValue(new File("sneaker.json"), new TypeReference>(){}); + } } From 511de47741b300fa925e130cec92f33d007a2717 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Mon, 8 Apr 2024 16:36:26 -0400 Subject: [PATCH 13/22] JSON load/Mapper done --- src/main/java/Services/SneakerService.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index 61acae8..80e52a3 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -111,8 +111,11 @@ public static void loadData(){ } } - public void loadJSONData(){ + public void loadJSONData() throws IOException { ObjectMapper objectMapper = new ObjectMapper(); - inventory = objectMapper.readValue(new File("sneaker.json"), new TypeReference>(){}); + JavaType type = objectMapper.getTypeFactory().constructCollectionType(List.class, Sneaker.class); + List list = objectMapper.readValue(new File("sneaker.json"), type);//different than readme because of missing sneaker type + //ReadMe had this.inventory which was a new instance of inventory + //Instead just created new list of Sneakers } } From f791c6327615f493a7baf296c8b71f2c40a17040 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Mon, 8 Apr 2024 16:42:11 -0400 Subject: [PATCH 14/22] Part 5.4 needs completed --- src/main/java/Services/SneakerService.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index 80e52a3..c1d85fa 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -2,6 +2,7 @@ import Models.Sneaker; import Utils.CSVUtils; +import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; import jdk.internal.org.objectweb.asm.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.*; @@ -114,8 +115,14 @@ public static void loadData(){ public void loadJSONData() throws IOException { ObjectMapper objectMapper = new ObjectMapper(); JavaType type = objectMapper.getTypeFactory().constructCollectionType(List.class, Sneaker.class); - List list = objectMapper.readValue(new File("sneaker.json"), type);//different than readme because of missing sneaker type + inventory = objectMapper.readValue(new File("sneaker.json"), type);//different than readme because of missing sneaker type //ReadMe had this.inventory which was a new instance of inventory //Instead just created new list of Sneakers } + + public void writeJSONData() throws IOException { + ObjectMapper mapper = new ObjectMapper(); + ObjectWriter writer = mapper.writer(new DefaultPrettyPrinter()); + writer.writeValue(new File("sneaker.json"), inventory); + } } From a24910a0773066051052c02177699bb0703b9f76 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Mon, 8 Apr 2024 16:47:52 -0400 Subject: [PATCH 15/22] Part 5.3 Done, need to test read and write --- src/main/java/Models/Sneaker.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/Models/Sneaker.java b/src/main/java/Models/Sneaker.java index ea43352..67f7705 100644 --- a/src/main/java/Models/Sneaker.java +++ b/src/main/java/Models/Sneaker.java @@ -1,5 +1,8 @@ package Models; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; + public class Sneaker { private int id; private String name; @@ -9,7 +12,8 @@ public class Sneaker { private int qty; private double price; - public Sneaker(int id, String name, String brand, String sport, int size, int qty, double price){ + @JsonCreator + public Sneaker(@JsonProperty int id, @JsonProperty String name, @JsonProperty String brand, @JsonProperty String sport, @JsonProperty int size, @JsonProperty int qty, @JsonProperty double price){ this.id = id; this.name = name; this.brand = brand; From 4c218db195e6448fcc07d256074e087225d4da13 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Mon, 8 Apr 2024 16:52:32 -0400 Subject: [PATCH 16/22] JSON ready to go --- src/main/java/Services/SneakerService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index c1d85fa..f43f169 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -2,6 +2,7 @@ import Models.Sneaker; import Utils.CSVUtils; +import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; import jdk.internal.org.objectweb.asm.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -14,6 +15,7 @@ public class SneakerService { private static int nextId = 1; + @JsonProperty private static List inventory = new ArrayList<>(); From 9ca35c202c92d370dae5e0db91fc5bb86f79feb1 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Tue, 9 Apr 2024 07:59:03 -0400 Subject: [PATCH 17/22] Finished All --- .idea/inspectionProfiles/Project_Default.xml | 23 +++++++ src/main/SneakerList.csv | 8 ++- src/main/java/IO/App.java | 4 ++ src/main/java/Services/SneakerService.java | 21 +++++-- src/main/nextID.txt | 1 + src/main/sneaker.json | 65 ++++++++++++++++++++ 6 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 src/main/nextID.txt create mode 100644 src/main/sneaker.json diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..791bd0f --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,23 @@ + + + + \ No newline at end of file diff --git a/src/main/SneakerList.csv b/src/main/SneakerList.csv index c1c0ba5..4706455 100644 --- a/src/main/SneakerList.csv +++ b/src/main/SneakerList.csv @@ -1,3 +1,9 @@ -3 +9 1,Matt,Nike,Tennis,1,100.0 2,Dunks,Nike,Skating,1,50.0 +3,Matt,Nike,Tennis,1,100.0 +4,Dunks,Nike,Skate,1,100.0 +5,Dunks,Nike,Skate,1,100.0 +6,Nike,Dunks,Skate,1,100.0 +7,Dunks,Nike,Skate,1,100.0 +8,Air,Jordan,Basketball,1,100.0 diff --git a/src/main/java/IO/App.java b/src/main/java/IO/App.java index 607a8a1..e796875 100644 --- a/src/main/java/IO/App.java +++ b/src/main/java/IO/App.java @@ -25,6 +25,8 @@ public void init() throws IOException { // call methods to take user input and interface with services Console.printWelcome(); SneakerService.loadData(); + //SneakerService.loadJSONData(); + SneakerService.loadNextId("/Users/matthew/Projects/Product-Inventory-Lab/src/main/nextID.txt"); System.out.println("What would you like to do?"); System.out.println("1. Create new sneaker"); System.out.println("2. See existing inventory"); @@ -50,6 +52,8 @@ public void init() throws IOException { double price = scanner.nextDouble(); SneakerService.create(name, brand, sport, size, qty, price); SneakerService.writeToCSV(); + SneakerService.writeJSONData(); + SneakerService.saveNextId("/Users/matthew/Projects/Product-Inventory-Lab/src/main/nextID.txt"); break; case 2: Sneaker[] inventory = SneakerService.findAll(); diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index f43f169..0977689 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -114,17 +114,30 @@ public static void loadData(){ } } - public void loadJSONData() throws IOException { + public static void loadJSONData() throws IOException { ObjectMapper objectMapper = new ObjectMapper(); JavaType type = objectMapper.getTypeFactory().constructCollectionType(List.class, Sneaker.class); - inventory = objectMapper.readValue(new File("sneaker.json"), type);//different than readme because of missing sneaker type + inventory = objectMapper.readValue(new File("/Users/matthew/Projects/Product-Inventory-Lab/src/main/sneaker.json"), type);//different than readme because of missing sneaker type //ReadMe had this.inventory which was a new instance of inventory //Instead just created new list of Sneakers } - public void writeJSONData() throws IOException { + public static void writeJSONData() throws IOException { ObjectMapper mapper = new ObjectMapper(); ObjectWriter writer = mapper.writer(new DefaultPrettyPrinter()); - writer.writeValue(new File("sneaker.json"), inventory); + writer.writeValue(new File("/Users/matthew/Projects/Product-Inventory-Lab/src/main/sneaker.json"), inventory); + } + + // Save and Load nextId Static Data with a Text File + public static void saveNextId(String filename) throws IOException { + FileWriter writer = new FileWriter(filename); + writer.write(String.valueOf(nextId)); + writer.close(); + } + + public static void loadNextId(String filename) throws IOException { + BufferedReader reader = new BufferedReader(new FileReader(filename)); + nextId = Integer.parseInt(reader.readLine()); + reader.close(); } } diff --git a/src/main/nextID.txt b/src/main/nextID.txt new file mode 100644 index 0000000..f11c82a --- /dev/null +++ b/src/main/nextID.txt @@ -0,0 +1 @@ +9 \ No newline at end of file diff --git a/src/main/sneaker.json b/src/main/sneaker.json new file mode 100644 index 0000000..eaac9a0 --- /dev/null +++ b/src/main/sneaker.json @@ -0,0 +1,65 @@ +[ { + "id" : 1, + "name" : "Matt", + "brand" : "Nike", + "sport" : "Tennis", + "size" : 12, + "qty" : 1, + "price" : 100.0 +}, { + "id" : 2, + "name" : "Dunks", + "brand" : "Nike", + "sport" : "Skating", + "size" : 12, + "qty" : 1, + "price" : 50.0 +}, { + "id" : 3, + "name" : "Matt", + "brand" : "Nike", + "sport" : "Tennis", + "size" : 12, + "qty" : 1, + "price" : 100.0 +}, { + "id" : 4, + "name" : "Dunks", + "brand" : "Nike", + "sport" : "Skate", + "size" : 12, + "qty" : 1, + "price" : 100.0 +}, { + "id" : 5, + "name" : "Dunks", + "brand" : "Nike", + "sport" : "Skate", + "size" : 12, + "qty" : 1, + "price" : 100.0 +}, { + "id" : 6, + "name" : "Nike", + "brand" : "Dunks", + "sport" : "Skate", + "size" : 12, + "qty" : 1, + "price" : 100.0 +}, { + "id" : 7, + "name" : "Dunks", + "brand" : "Nike", + "sport" : "Skate", + "size" : 12, + "qty" : 1, + "price" : 100.0 +}, { + "id" : 8, + "name" : "Air", + "brand" : "Jordan", + "sport" : "Basketball", + "size" : 12, + "qty" : 1, + "price" : 100.0 +} ] \ No newline at end of file From d0d9941dba5aa0280d0a5b39626872e31bc17b70 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Tue, 9 Apr 2024 14:38:49 -0400 Subject: [PATCH 18/22] Finished --- src/main/SneakerList.csv | 5 +++-- src/main/java/IO/App.java | 24 ++++++++++++++-------- src/main/java/Services/SneakerService.java | 2 +- src/main/nextID.txt | 2 +- src/main/sneaker.json | 24 ++++++++++++++-------- 5 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/main/SneakerList.csv b/src/main/SneakerList.csv index 4706455..bc0d209 100644 --- a/src/main/SneakerList.csv +++ b/src/main/SneakerList.csv @@ -1,9 +1,10 @@ -9 +11 1,Matt,Nike,Tennis,1,100.0 2,Dunks,Nike,Skating,1,50.0 3,Matt,Nike,Tennis,1,100.0 4,Dunks,Nike,Skate,1,100.0 5,Dunks,Nike,Skate,1,100.0 -6,Nike,Dunks,Skate,1,100.0 7,Dunks,Nike,Skate,1,100.0 8,Air,Jordan,Basketball,1,100.0 +9,Matt,Matt,Soccer,1,100.0 +10,Assan,Sandals,Crawling,1,100.0 diff --git a/src/main/java/IO/App.java b/src/main/java/IO/App.java index e796875..1ff784f 100644 --- a/src/main/java/IO/App.java +++ b/src/main/java/IO/App.java @@ -30,10 +30,11 @@ public void init() throws IOException { System.out.println("What would you like to do?"); System.out.println("1. Create new sneaker"); System.out.println("2. See existing inventory"); - System.out.println("3. Update inventory"); - System.out.println("4. Delete inventory"); - System.out.println("5. Get Product Reports"); - System.out.println("6. Exit Program\n"); + System.out.println("3. Find Sneaker by ID"); + System.out.println("4. Update inventory"); + System.out.println("5. Delete inventory"); + System.out.println("6. Get Product Reports"); + System.out.println("7. Exit Program\n"); int choice = scanner.nextInt(); switch(choice){ case 1: @@ -68,17 +69,22 @@ public void init() throws IOException { } break; case 3: - SneakerService.findAll(); + System.out.println("Choose ID to find"); + int id1 = scanner.nextInt(); + SneakerService.findSneaker(id1); break; case 4: - System.out.println("Choose an ID to delete, check existing inventory first"); - int id = scanner.nextInt(); - SneakerService.delete(id); break; case 5: - System.out.println("Product report"); + System.out.println("Choose an ID to delete, check existing inventory first"); + int id2 = scanner.nextInt(); + SneakerService.delete(id2); + SneakerService.writeToCSV(); break; case 6: + System.out.println("Product report"); + break; + case 7: System.exit(0); break; } diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index 0977689..dcec8da 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -31,7 +31,7 @@ public static Sneaker create(String name, String brand, String sport, int size, return createdSneaker; } - public Sneaker findSneaker(int id) { + public static Sneaker findSneaker(int id) { // should take an int and return an object with that id, if exists if (inventory.contains(id)) { return inventory.get(id); diff --git a/src/main/nextID.txt b/src/main/nextID.txt index f11c82a..9d60796 100644 --- a/src/main/nextID.txt +++ b/src/main/nextID.txt @@ -1 +1 @@ -9 \ No newline at end of file +11 \ No newline at end of file diff --git a/src/main/sneaker.json b/src/main/sneaker.json index eaac9a0..3e64b18 100644 --- a/src/main/sneaker.json +++ b/src/main/sneaker.json @@ -38,14 +38,6 @@ "size" : 12, "qty" : 1, "price" : 100.0 -}, { - "id" : 6, - "name" : "Nike", - "brand" : "Dunks", - "sport" : "Skate", - "size" : 12, - "qty" : 1, - "price" : 100.0 }, { "id" : 7, "name" : "Dunks", @@ -62,4 +54,20 @@ "size" : 12, "qty" : 1, "price" : 100.0 +}, { + "id" : 9, + "name" : "Matt", + "brand" : "Matt", + "sport" : "Soccer", + "size" : 12, + "qty" : 1, + "price" : 100.0 +}, { + "id" : 10, + "name" : "Assan", + "brand" : "Sandals", + "sport" : "Crawling", + "size" : 10, + "qty" : 1, + "price" : 100.0 } ] \ No newline at end of file From ebcc35ccf65bc142fa379d517b3685da66b51276 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Thu, 11 Apr 2024 10:40:48 -0400 Subject: [PATCH 19/22] Finished --- src/main/SneakerList.csv | 3 ++- src/main/java/Services/SneakerService.java | 9 ++++----- src/main/nextID.txt | 2 +- src/main/sneaker.json | 10 +++++++++- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/SneakerList.csv b/src/main/SneakerList.csv index bc0d209..4fd926f 100644 --- a/src/main/SneakerList.csv +++ b/src/main/SneakerList.csv @@ -1,4 +1,4 @@ -11 +12 1,Matt,Nike,Tennis,1,100.0 2,Dunks,Nike,Skating,1,50.0 3,Matt,Nike,Tennis,1,100.0 @@ -8,3 +8,4 @@ 8,Air,Jordan,Basketball,1,100.0 9,Matt,Matt,Soccer,1,100.0 10,Assan,Sandals,Crawling,1,100.0 +11,Dunks,Nike,Skate,1,100.0 diff --git a/src/main/java/Services/SneakerService.java b/src/main/java/Services/SneakerService.java index dcec8da..48bf269 100644 --- a/src/main/java/Services/SneakerService.java +++ b/src/main/java/Services/SneakerService.java @@ -3,8 +3,8 @@ import Models.Sneaker; import Utils.CSVUtils; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; -import jdk.internal.org.objectweb.asm.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.*; import java.io.*; @@ -116,10 +116,9 @@ public static void loadData(){ public static void loadJSONData() throws IOException { ObjectMapper objectMapper = new ObjectMapper(); - JavaType type = objectMapper.getTypeFactory().constructCollectionType(List.class, Sneaker.class); - inventory = objectMapper.readValue(new File("/Users/matthew/Projects/Product-Inventory-Lab/src/main/sneaker.json"), type);//different than readme because of missing sneaker type - //ReadMe had this.inventory which was a new instance of inventory - //Instead just created new list of Sneakers + //JavaType type = objectMapper.getTypeFactory().constructCollectionType(List.class, Sneaker.class); + inventory = objectMapper.readValue(new File("/Users/matthew/Projects/Product-Inventory-Lab/src/main/sneaker.json"), new TypeReference>(){}); + } public static void writeJSONData() throws IOException { diff --git a/src/main/nextID.txt b/src/main/nextID.txt index 9d60796..3cacc0b 100644 --- a/src/main/nextID.txt +++ b/src/main/nextID.txt @@ -1 +1 @@ -11 \ No newline at end of file +12 \ No newline at end of file diff --git a/src/main/sneaker.json b/src/main/sneaker.json index 3e64b18..043a05a 100644 --- a/src/main/sneaker.json +++ b/src/main/sneaker.json @@ -67,7 +67,15 @@ "name" : "Assan", "brand" : "Sandals", "sport" : "Crawling", - "size" : 10, + "size" : 12, + "qty" : 1, + "price" : 100.0 +}, { + "id" : 11, + "name" : "Dunks", + "brand" : "Nike", + "sport" : "Skate", + "size" : 12, "qty" : 1, "price" : 100.0 } ] \ No newline at end of file From f1c30fb310c85480632bcdf7067b5e64d9c174af Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Thu, 11 Apr 2024 10:44:25 -0400 Subject: [PATCH 20/22] Finished --- src/main/SneakerList.csv | 3 ++- src/main/nextID.txt | 2 +- src/main/sneaker.json | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/SneakerList.csv b/src/main/SneakerList.csv index 4fd926f..581da6c 100644 --- a/src/main/SneakerList.csv +++ b/src/main/SneakerList.csv @@ -1,4 +1,4 @@ -12 +13 1,Matt,Nike,Tennis,1,100.0 2,Dunks,Nike,Skating,1,50.0 3,Matt,Nike,Tennis,1,100.0 @@ -9,3 +9,4 @@ 9,Matt,Matt,Soccer,1,100.0 10,Assan,Sandals,Crawling,1,100.0 11,Dunks,Nike,Skate,1,100.0 +12,Jordyn,Maya,Soccer,1,50.0 diff --git a/src/main/nextID.txt b/src/main/nextID.txt index 3cacc0b..ca7bf83 100644 --- a/src/main/nextID.txt +++ b/src/main/nextID.txt @@ -1 +1 @@ -12 \ No newline at end of file +13 \ No newline at end of file diff --git a/src/main/sneaker.json b/src/main/sneaker.json index 043a05a..8465ffe 100644 --- a/src/main/sneaker.json +++ b/src/main/sneaker.json @@ -78,4 +78,12 @@ "size" : 12, "qty" : 1, "price" : 100.0 +}, { + "id" : 12, + "name" : "Jordyn", + "brand" : "Maya", + "sport" : "Soccer", + "size" : 12, + "qty" : 1, + "price" : 50.0 } ] \ No newline at end of file From 10e524f3a2755562578f8630083a5fc1edef1501 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Thu, 11 Apr 2024 13:30:13 -0400 Subject: [PATCH 21/22] Finished --- src/main/SneakerList.csv | 3 ++- src/main/java/Models/Sneaker.java | 4 ++-- src/main/nextID.txt | 2 +- src/main/sneaker.json | 8 ++++++++ 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/SneakerList.csv b/src/main/SneakerList.csv index 581da6c..6cf79c3 100644 --- a/src/main/SneakerList.csv +++ b/src/main/SneakerList.csv @@ -1,4 +1,4 @@ -13 +14 1,Matt,Nike,Tennis,1,100.0 2,Dunks,Nike,Skating,1,50.0 3,Matt,Nike,Tennis,1,100.0 @@ -10,3 +10,4 @@ 10,Assan,Sandals,Crawling,1,100.0 11,Dunks,Nike,Skate,1,100.0 12,Jordyn,Maya,Soccer,1,50.0 +13,Thursday,Project,Lets,1,200.0 diff --git a/src/main/java/Models/Sneaker.java b/src/main/java/Models/Sneaker.java index 67f7705..5186a5a 100644 --- a/src/main/java/Models/Sneaker.java +++ b/src/main/java/Models/Sneaker.java @@ -12,8 +12,8 @@ public class Sneaker { private int qty; private double price; - @JsonCreator - public Sneaker(@JsonProperty int id, @JsonProperty String name, @JsonProperty String brand, @JsonProperty String sport, @JsonProperty int size, @JsonProperty int qty, @JsonProperty double price){ + + public Sneaker(int id, String name, String brand, String sport, int size, int qty, double price){ this.id = id; this.name = name; this.brand = brand; diff --git a/src/main/nextID.txt b/src/main/nextID.txt index ca7bf83..da2d398 100644 --- a/src/main/nextID.txt +++ b/src/main/nextID.txt @@ -1 +1 @@ -13 \ No newline at end of file +14 \ No newline at end of file diff --git a/src/main/sneaker.json b/src/main/sneaker.json index 8465ffe..f7b3993 100644 --- a/src/main/sneaker.json +++ b/src/main/sneaker.json @@ -86,4 +86,12 @@ "size" : 12, "qty" : 1, "price" : 50.0 +}, { + "id" : 13, + "name" : "Thursday", + "brand" : "Project", + "sport" : "Lets", + "size" : 12, + "qty" : 1, + "price" : 200.0 } ] \ No newline at end of file From 66e8b14621c7d33b4f1776884d34016d0e302e11 Mon Sep 17 00:00:00 2001 From: Matt Kramer Date: Fri, 12 Apr 2024 14:03:34 -0400 Subject: [PATCH 22/22] Finished fixed JSON loading problem --- src/main/java/IO/App.java | 2 +- src/main/java/Models/Sneaker.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/IO/App.java b/src/main/java/IO/App.java index 1ff784f..a413bd0 100644 --- a/src/main/java/IO/App.java +++ b/src/main/java/IO/App.java @@ -25,7 +25,7 @@ public void init() throws IOException { // call methods to take user input and interface with services Console.printWelcome(); SneakerService.loadData(); - //SneakerService.loadJSONData(); + SneakerService.loadJSONData(); SneakerService.loadNextId("/Users/matthew/Projects/Product-Inventory-Lab/src/main/nextID.txt"); System.out.println("What would you like to do?"); System.out.println("1. Create new sneaker"); diff --git a/src/main/java/Models/Sneaker.java b/src/main/java/Models/Sneaker.java index 5186a5a..61dbb77 100644 --- a/src/main/java/Models/Sneaker.java +++ b/src/main/java/Models/Sneaker.java @@ -12,6 +12,10 @@ public class Sneaker { private int qty; private double price; + public Sneaker(){ + + } + public Sneaker(int id, String name, String brand, String sport, int size, int qty, double price){ this.id = id;