From 19c588450808b74949855202f95336c8b8ff24ad Mon Sep 17 00:00:00 2001 From: asanahmadli Date: Fri, 5 Apr 2024 10:46:04 -0400 Subject: [PATCH 1/5] add sneaker/whiskey models and service --- .idea/jarRepositories.xml | 20 +++++++++++++++++++ .idea/misc.xml | 2 +- pom.xml | 20 +++++++++++++++++++ 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/models/SneakerTest.java | 4 ++++ src/test/java/models/WhiskeyTest.java | 4 ++++ .../java/services/SneakerServiceTest.java | 4 ++++ .../java/services/WhiskeyServiceTest.java | 4 ++++ 11 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 .idea/jarRepositories.xml 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/models/SneakerTest.java create mode 100644 src/test/java/models/WhiskeyTest.java create mode 100644 src/test/java/services/SneakerServiceTest.java create mode 100644 src/test/java/services/WhiskeyServiceTest.java 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/.idea/misc.xml b/.idea/misc.xml index 4b661a5..df00c07 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 43c1af2..12b36b3 100644 --- a/pom.xml +++ b/pom.xml @@ -21,5 +21,25 @@ + + + org.junit.jupiter + junit-jupiter-engine + 5.4.2 + test + + + org.junit.jupiter + junit-jupiter-api + 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 new file mode 100644 index 0000000..fa150ec --- /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..bb9e5d5 --- /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..a022353 --- /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..1307c24 --- /dev/null +++ b/src/main/java/services/WhiskeyService.java @@ -0,0 +1,4 @@ +package services; + +public class WhiskeyService { +} diff --git a/src/test/java/models/SneakerTest.java b/src/test/java/models/SneakerTest.java new file mode 100644 index 0000000..c63eae0 --- /dev/null +++ b/src/test/java/models/SneakerTest.java @@ -0,0 +1,4 @@ +package models; + +public class SneakerTest { +} diff --git a/src/test/java/models/WhiskeyTest.java b/src/test/java/models/WhiskeyTest.java new file mode 100644 index 0000000..81c7672 --- /dev/null +++ b/src/test/java/models/WhiskeyTest.java @@ -0,0 +1,4 @@ +package models; + +public class WhiskeyTest { +} diff --git a/src/test/java/services/SneakerServiceTest.java b/src/test/java/services/SneakerServiceTest.java new file mode 100644 index 0000000..3ae2e9a --- /dev/null +++ b/src/test/java/services/SneakerServiceTest.java @@ -0,0 +1,4 @@ +package services; + +public class SneakerServiceTest { +} diff --git a/src/test/java/services/WhiskeyServiceTest.java b/src/test/java/services/WhiskeyServiceTest.java new file mode 100644 index 0000000..cb856f0 --- /dev/null +++ b/src/test/java/services/WhiskeyServiceTest.java @@ -0,0 +1,4 @@ +package services; + +public class WhiskeyServiceTest { +} From 2327d2ed3434cd1073acbdb982259e99d5a63709 Mon Sep 17 00:00:00 2001 From: asanahmadli Date: Fri, 5 Apr 2024 13:24:20 -0400 Subject: [PATCH 2/5] Constructor tested --- src/main/java/models/Sneaker.java | 77 +++++++++++++++++++++++++++ src/test/java/models/SneakerTest.java | 44 ++++++++++++++- 2 files changed, 120 insertions(+), 1 deletion(-) diff --git a/src/main/java/models/Sneaker.java b/src/main/java/models/Sneaker.java index fa150ec..0b5d690 100644 --- a/src/main/java/models/Sneaker.java +++ b/src/main/java/models/Sneaker.java @@ -1,4 +1,81 @@ package models; public class Sneaker { + private int id; + private String name; + private String brand; + private String sport; + private float size; + private int qty; + private float price; + + + + public Sneaker(int id, String name, String brand, String sport, int qty, float price) { + this.id = id; + this.name = name; + this.brand = brand; + this.sport = sport; + this.qty = qty; + this.price = price; + } + + public Sneaker(){ + + } + 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 float getSize() { + return size; + } + + public void setSize(float size) { + this.size = size; + } + + public int getQty() { + return qty; + } + + public void setQty(int qty) { + this.qty = qty; + } + + public float getPrice() { + return price; + } + + public void setPrice(float price) { + this.price = price; + } } diff --git a/src/test/java/models/SneakerTest.java b/src/test/java/models/SneakerTest.java index c63eae0..0b1aaa4 100644 --- a/src/test/java/models/SneakerTest.java +++ b/src/test/java/models/SneakerTest.java @@ -1,4 +1,46 @@ package models; +import org.junit.Test; +import org.junit.jupiter.api.Assertions; + public class SneakerTest { -} + @Test + public void setNameTest() { + Sneaker testSneaker1 = new Sneaker(); + // given (1) + String expected = "OZWEEGO"; + + // when (2) + testSneaker1 = new Sneaker(); + testSneaker1.setName(expected); + + // then (3) + Assertions.assertEquals(expected, testSneaker1.getName()); + } + + + + @Test // (1) + public void constructorTest(){ + + // (2) + int expectedId = 6; + String expectedName = "Stan Smith"; + String expectedBrand = "Adidas"; + String expectedSport = "Tennnis"; + int expectedQty = 10; + float expectedPrice = 80.00f; + + // (3) + Sneaker testSneaker = new Sneaker(expectedId,expectedName,expectedBrand,expectedSport,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()); + } + } + From 043bacda3850851c6a5ea8a5764608944cb2f9ed Mon Sep 17 00:00:00 2001 From: asanahmadli Date: Sat, 6 Apr 2024 02:01:51 -0400 Subject: [PATCH 3/5] I finished second readme file --- src/main/java/models/Sneaker.java | 42 ++++++++++- src/main/java/services/SneakerService.java | 29 ++++++++ src/test/java/models/SneakerTest.java | 72 ++++++++++++++----- .../java/services/SneakerServiceTest.java | 42 ++++++++++- 4 files changed, 163 insertions(+), 22 deletions(-) diff --git a/src/main/java/models/Sneaker.java b/src/main/java/models/Sneaker.java index 0b5d690..1eb0c68 100644 --- a/src/main/java/models/Sneaker.java +++ b/src/main/java/models/Sneaker.java @@ -1,5 +1,9 @@ package models; +import services.SneakerService; + +import java.util.Arrays; + public class Sneaker { private int id; private String name; @@ -8,8 +12,22 @@ public class Sneaker { private float size; private int qty; private float price; + SneakerService sneakerService = new SneakerService(); + + public Sneaker(){ + + } + public Sneaker(int id, String name, String brand, String sport, float size, int qty, float price) { + this.id = id; + this.name = name; + this.brand = brand; + this.sport = sport; + this.size = size; + this.qty = qty; + this.price = price; + } public Sneaker(int id, String name, String brand, String sport, int qty, float price) { this.id = id; @@ -20,9 +38,7 @@ public Sneaker(int id, String name, String brand, String sport, int qty, float p this.price = price; } - public Sneaker(){ - } public int getId() { return id; } @@ -78,4 +94,26 @@ public float getPrice() { public void setPrice(float price) { this.price = price; } + + //read + public Sneaker findSneaker(int id) { + // should take an int and return an object with that id, if exists + return sneakerService.getInventory().get(id); + } + + //read all + public Sneaker[] findAll() { + // should return a basic array copy of the ArrayList + return sneakerService.getInventory().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 + sneakerService.getInventory().remove(id); + return sneakerService.getInventory().contains(id)?true:false; + } + + } diff --git a/src/main/java/services/SneakerService.java b/src/main/java/services/SneakerService.java index a022353..da0e800 100644 --- a/src/main/java/services/SneakerService.java +++ b/src/main/java/services/SneakerService.java @@ -1,4 +1,33 @@ package services; +import models.Sneaker; + +import java.util.ArrayList; +import java.util.List; + public class SneakerService { + + private static int nextId = 0; // (1) + + private static List inventory = new ArrayList<>(); // (2) + + + public static Sneaker create(String name, String brand,String sport,float size,int qty,float price){ + Sneaker createdSneaker = new Sneaker(nextId++,name,brand,sport,size,qty,price); + inventory.add(createdSneaker); + return createdSneaker; + } + + public Sneaker find(Sneaker sneaker){ + return inventory.get(nextId); + } + + + public static List getInventory() { + return inventory; + } + + public static int getNextId() { + return nextId; + } } diff --git a/src/test/java/models/SneakerTest.java b/src/test/java/models/SneakerTest.java index 0b1aaa4..3da8d4e 100644 --- a/src/test/java/models/SneakerTest.java +++ b/src/test/java/models/SneakerTest.java @@ -1,7 +1,12 @@ package models; +import org.junit.Assert; import org.junit.Test; import org.junit.jupiter.api.Assertions; +import services.SneakerService; + +import java.util.ArrayList; +import java.util.List; public class SneakerTest { @Test @@ -19,28 +24,57 @@ public void setNameTest() { } + @Test // (1) + public void constructorTest() { + + // (2) + int expectedId = 6; + String expectedName = "Stan Smith"; + String expectedBrand = "Adidas"; + String expectedSport = "Tennnis"; + int expectedQty = 10; + float expectedPrice = 80.00f; - @Test // (1) - public void constructorTest(){ + // (3) + Sneaker testSneaker = new Sneaker(expectedId, expectedName, expectedBrand, expectedSport, expectedQty, expectedPrice); - // (2) - int expectedId = 6; - String expectedName = "Stan Smith"; - String expectedBrand = "Adidas"; - String expectedSport = "Tennnis"; - int expectedQty = 10; - float expectedPrice = 80.00f; + // (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()); + } - // (3) - Sneaker testSneaker = new Sneaker(expectedId,expectedName,expectedBrand,expectedSport,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()); - } + @Test + public void findSneaker() { + Sneaker sneaker = SneakerService.create("Jogger", "Adidas", "Run", 10.5f, 1, 115); + int id = SneakerService.getNextId(); + int expected = 1; + Assert.assertEquals(expected, id); } + @Test + public void findAll() { + Sneaker sneaker = SneakerService.create("Jogger", "Adidas", "Run", 10.5f, 1, 115f); + String expectedName = "Jogger"; + String expectedBrand = "Adidas"; + String expectedSportName = "Run"; + float expectedSize = 10.5f; + int expectedQty = 1; + float expectedPrice = 115f; + //copy of the inventory list + Sneaker[] sneakers = SneakerService.getInventory().toArray(new Sneaker[0]); + Assert.assertEquals(expectedName,sneakers[0].getName()); + Assert.assertEquals(expectedBrand,sneakers[0].getBrand()); + Assert.assertEquals(expectedSportName,sneakers[0].getSport()); + Assert.assertEquals(expectedSize,sneakers[0].getSize(),0.01); + Assert.assertEquals(expectedQty,sneakers[0].getQty()); + Assert.assertEquals(expectedPrice,sneakers[0].getPrice(),0.01); + } + + +} + diff --git a/src/test/java/services/SneakerServiceTest.java b/src/test/java/services/SneakerServiceTest.java index 3ae2e9a..d0e7c5c 100644 --- a/src/test/java/services/SneakerServiceTest.java +++ b/src/test/java/services/SneakerServiceTest.java @@ -1,4 +1,44 @@ package services; +import models.Sneaker; +import org.junit.Test; +import org.junit.jupiter.api.Assertions; + public class SneakerServiceTest { -} + @Test + public void createTest(){ + + // (1) + String expectedName = "Stan Smith"; + String expectedBrand = "Adidas"; + String expectedSport = "Tennis"; + float expectedSize = 10.5f; + int expectedQty = 10; + float expectedPrice = 80.00f; + + // (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(); + float actualSize = testSneaker.getSize(); + int actualQty = testSneaker.getQty(); + float 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 2da60a187b00413c8f1e1addeac17b799c2c50e3 Mon Sep 17 00:00:00 2001 From: asanahmadli Date: Sat, 6 Apr 2024 20:30:58 -0400 Subject: [PATCH 4/5] completed 3 section --- src/main/java/models/App.java | 174 +++++++++++++++++++++ src/main/java/models/ColorEnum.java | 28 ++++ src/main/java/models/Console.java | 15 ++ src/main/java/models/Sneaker.java | 47 +++++- src/main/java/services/CSVUtils.java | 28 ++++ src/main/java/services/Sneaker.csv | 0 src/main/java/services/SneakerService.java | 72 ++++++++- src/test/java/models/SneakerTest.java | 4 +- 8 files changed, 357 insertions(+), 11 deletions(-) create mode 100644 src/main/java/models/App.java create mode 100644 src/main/java/models/ColorEnum.java create mode 100644 src/main/java/models/Console.java create mode 100644 src/main/java/services/CSVUtils.java create mode 100644 src/main/java/services/Sneaker.csv diff --git a/src/main/java/models/App.java b/src/main/java/models/App.java new file mode 100644 index 0000000..733bdc6 --- /dev/null +++ b/src/main/java/models/App.java @@ -0,0 +1,174 @@ +package models; + + +import services.SneakerService; + +import java.awt.*; +import java.sql.SQLOutput; +import java.util.InputMismatchException; +import java.util.Scanner; + +public class App { + private SneakerService sneakerService = new SneakerService(); // (1) + Scanner scanner = new Scanner(System.in); + Sneaker sneaker = new Sneaker(); + + public static void main(String[] args) { + + App application = new App(); // (2) + application.init(); // (3) + + + + }//main + + + public void init(){ + Console.printWelcome(); + // (4) + // application logic here + // call methods to take user input and interface with services + boolean flag = true; + while (flag) { + System.out.println(ColorEnum.CYAN.formatString("📝Main Menu")); + System.out.print(ColorEnum.BLUE.formatString("➕Create\t")); + System.out.print(ColorEnum.BLUE.formatString("📖Read\t ")); + System.out.print(ColorEnum.BLUE.formatString("🖌Update\t")); + System.out.print(ColorEnum.BLUE.formatString("⌦ Delete\t")); + System.out.print(ColorEnum.BLUE.formatString("🔍Find\t")); + System.out.println(ColorEnum.BLUE.formatString("❗️Exit\t")); + String menu = scanner.next(); + + if(menu.equalsIgnoreCase("Create")){ + add(); + } + else if(menu.equalsIgnoreCase("Read")){ + System.out.println("Please enter product ID:"); + int id = scanner.nextInt(); + read(id); + } + else if(menu.equalsIgnoreCase("Update")){ + System.out.println("Please enter product id"); + int id = scanner.nextInt(); + update(id); + + } + else if(menu.equalsIgnoreCase("Delete")){ + System.out.println("Please enter product id"); + int id = scanner.nextInt(); + sneaker.delete(id); + } + else if(menu.equalsIgnoreCase("Find")){ + System.out.println("Please enter product id"); + int id = scanner.nextInt(); + Sneaker sneaker1 = sneaker.findSneaker(id); + if(sneaker1!=null){ + System.out.println(sneaker1.toString()); + } + + } + + else if(menu.equalsIgnoreCase("exit")){ + break; + } + } + + } + + /**Create different products to be added to inventory + Read from existing products + Update products + Delete products + Get different reports about products + Exit the program*/ + + public void add(){ + Scanner scanner = new Scanner(System.in); + System.out.println("Please enter product name:"); + String name = scanner.nextLine(); + System.out.println("Please enter brand name:"); + String brand = scanner.nextLine(); + System.out.println("Please enter sport name:"); + String sport = scanner.nextLine(); + System.out.println("Please enter product size:"); + float size = scanner.nextFloat(); + System.out.println("Please enter product quantity:"); + int qty = scanner.nextInt(); + System.out.println("Please enter product price:"); + float price = scanner.nextFloat(); + Sneaker sneaker = SneakerService.create(name,brand,sport,size,qty,price); + System.out.println("Product created and product ID: " + sneaker.getId()); + } + + public void update(int id){ + for (Sneaker s:SneakerService.getInventory()){ + if(s.getId() == id){ + System.out.println("Please choice valid option"); + System.out.println(ColorEnum.CYAN.formatString("📝Options")); + System.out.print(ColorEnum.BLUE.formatString("Name\t")); + System.out.print(ColorEnum.BLUE.formatString("Brand\t ")); + System.out.print(ColorEnum.BLUE.formatString("Sport\t")); + System.out.print(ColorEnum.BLUE.formatString("Size\t")); + System.out.println(ColorEnum.BLUE.formatString("Quantity\t")); + System.out.println(ColorEnum.BLUE.formatString("Price\t")); + String menu1 = scanner.next(); + if(menu1.equalsIgnoreCase("name")){ + System.out.println("Please enter new Product name:"); + String input = scanner.next(); + s.setName(input); + System.out.println("Name updated to: "+s.getName()); + } + else if(menu1.equalsIgnoreCase("brand")){ + System.out.println("Please enter new Brand name:"); + String input = scanner.next(); + s.setBrand(input); + System.out.println("Brand updated to: "+s.getBrand()); + } + else if(menu1.equalsIgnoreCase("sport")){ + System.out.println("Please enter new Sport name:"); + String input = scanner.next(); + s.setSport(input); + System.out.println("Sport name updated to "+s.getSport()); + } + else if(menu1.equalsIgnoreCase("size")){ + System.out.println("Please enter new size:"); + float input = scanner.nextFloat(); + s.setSize(input); + System.out.println("Size updated to "+s.getSize()); + } + else if(menu1.equalsIgnoreCase("quantity")){ + System.out.println("Please enter new size:"); + int input = scanner.nextInt(); + s.setSize(input); + System.out.println("Quantity updated to "+s.getId()); + + } + else if(menu1.equalsIgnoreCase("price")){ + System.out.println("Please enter new size:"); + int input = scanner.nextInt(); + s.setSize(input); + System.out.println("Price updated to "+ s.getPrice()); + } + + } + } + } + + public void read(int id){ + boolean flag = true; + for (Sneaker s:SneakerService.getInventory()){ + if(s.getId() == id){ + System.out.println(s.toString()); + flag = false; + break; + } + } + if(flag) { + System.out.println(ColorEnum.RED.formatString("Product not found in the inventory!")); + } + } + + + + +}//class diff --git a/src/main/java/models/ColorEnum.java b/src/main/java/models/ColorEnum.java new file mode 100644 index 0000000..93bd0c4 --- /dev/null +++ b/src/main/java/models/ColorEnum.java @@ -0,0 +1,28 @@ +package models; + +public enum ColorEnum { + RED("\u001B[31m"), + GREEN("\u001B[32m"), + BLUE("\u001B[34m"), + YELLOW("\u001B[33m"), + CYAN("\u001B[36m"), + MAGENTA("\u001B[35m"), + WHITE("\u001B[37m"), + BLACK("\u001B[30m"); + + private final String code; + + ColorEnum(String code) { + this.code = code; + } + + public String getCode() { + return code; + } + + public String formatString(String text) { + return code + text + "\u001B[0m"; // Reset color to default after the text + } + + +} diff --git a/src/main/java/models/Console.java b/src/main/java/models/Console.java new file mode 100644 index 0000000..e2cfc17 --- /dev/null +++ b/src/main/java/models/Console.java @@ -0,0 +1,15 @@ +package models; + +import java.awt.*; + +public class Console { + public static void printWelcome(){ + System.out.println(""+ + "✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎" + "\n" + + "✴︎⭐️ Welcome and Bienvenue ⭐️✴︎" + "\n" + + "✴︎⭐️ to ⭐️✴︎" + "\n" + + "✴︎⭐️ ZipCo Inventory Manager ⭐️✴︎" + "\n" + + "✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎✴︎"); + } + +} diff --git a/src/main/java/models/Sneaker.java b/src/main/java/models/Sneaker.java index 1eb0c68..aa141bb 100644 --- a/src/main/java/models/Sneaker.java +++ b/src/main/java/models/Sneaker.java @@ -2,6 +2,7 @@ import services.SneakerService; +import java.io.IOException; import java.util.Arrays; public class Sneaker { @@ -98,22 +99,56 @@ public void setPrice(float price) { //read public Sneaker findSneaker(int id) { // should take an int and return an object with that id, if exists - return sneakerService.getInventory().get(id); + boolean flag = true; + Sneaker sn = null; + for (Sneaker s:SneakerService.getInventory()){ + if(s.getId() == id){ + System.out.println(s.toString()); + sn = s; + flag = false; + break; + } + } + if(flag) { + System.out.println(ColorEnum.RED.formatString("Product not found in the inventory!")); + } + return sn; } //read all public Sneaker[] findAll() { // should return a basic array copy of the ArrayList - return sneakerService.getInventory().toArray(new Sneaker[0]); + return SneakerService.getInventory().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 - sneakerService.getInventory().remove(id); - return sneakerService.getInventory().contains(id)?true:false; + boolean flag = true; + for (Sneaker s:SneakerService.getInventory()){ + if(s.getId() == id){ + SneakerService.getInventory().remove(s); + flag = false; + System.out.println("Product ID "+s.getId()+" removed from inventory list"); + break; + } + } + if(flag) { + System.out.println(ColorEnum.RED.formatString("Product not found in the inventory!")); + } + + try { + SneakerService.removeDataToCsv(id); + } catch (IOException e) { + throw new RuntimeException(e); + } + return flag; + } + + @Override + public String toString() { + return "ID 🟰 "+getId() + " \nProduct Name 🟰 " + getName() + " \nBrand Name 🟰 " + getBrand() + " \nSport 🟰 " + +getSport()+" \nSize 🟰 "+getSize()+" \nQuantity 🟰 "+getQty() + " \nPrice 🟰 "+getPrice(); } - - } diff --git a/src/main/java/services/CSVUtils.java b/src/main/java/services/CSVUtils.java new file mode 100644 index 0000000..2fe2dfc --- /dev/null +++ b/src/main/java/services/CSVUtils.java @@ -0,0 +1,28 @@ +package services; + +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) + } +} diff --git a/src/main/java/services/Sneaker.csv b/src/main/java/services/Sneaker.csv new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/services/SneakerService.java b/src/main/java/services/SneakerService.java index da0e800..36faf67 100644 --- a/src/main/java/services/SneakerService.java +++ b/src/main/java/services/SneakerService.java @@ -2,19 +2,31 @@ import models.Sneaker; +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class SneakerService { - private static int nextId = 0; // (1) + private static int nextId = 1; // (1) private static List inventory = new ArrayList<>(); // (2) - public static Sneaker create(String name, String brand,String sport,float size,int qty,float price){ - Sneaker createdSneaker = new Sneaker(nextId++,name,brand,sport,size,qty,price); + public static Sneaker create(String name, String brand,String sport,float size,int qty,float price){ + Sneaker createdSneaker = new Sneaker(nextId,name,brand,sport,size,qty,price); inventory.add(createdSneaker); + try{ + savaDataToCsv(); + } + catch (IOException e){ + System.out.println(e.getMessage()); + } + nextId++; return createdSneaker; } @@ -30,4 +42,58 @@ public static List getInventory() { public static int getNextId() { return nextId; } + + + public static void savaDataToCsv() throws IOException { + String csvFile = "/Users/asan/Desktop/Projects/Product-Inventory-Lab/src/main/java/services/Sneaker.csv"; + FileWriter writer = new FileWriter(csvFile,true); //(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(); + } + + private static void loadData(){ + // (1) + String csvFile = "/Users/asan/Desktop/Projects/Product-Inventory-Lab/src/main/java/services/Sneaker.csv"; + String line = ""; + String csvSplitBy = ","; + + // (2) + try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) { + if(br.readLine() !=null){ + 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]); + float price = Float.parseFloat(beer[5]); + + // (5) + inventory.add(new Sneaker(id, name, brand, sport, qty, price)); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } } diff --git a/src/test/java/models/SneakerTest.java b/src/test/java/models/SneakerTest.java index 3da8d4e..2d8a8cd 100644 --- a/src/test/java/models/SneakerTest.java +++ b/src/test/java/models/SneakerTest.java @@ -50,8 +50,8 @@ public void constructorTest() { @Test public void findSneaker() { - Sneaker sneaker = SneakerService.create("Jogger", "Adidas", "Run", 10.5f, 1, 115); - int id = SneakerService.getNextId(); + Sneaker sneaker = SneakerService.create("Jogger", "Adidas", "Run", 10.5f, 1, 115); + int id = sneaker.getId(); int expected = 1; Assert.assertEquals(expected, id); } From ed8c6f7a76d15a5f29d872abb7ad7a27a215eb5a Mon Sep 17 00:00:00 2001 From: asanahmadli Date: Thu, 11 Apr 2024 11:41:07 -0400 Subject: [PATCH 5/5] fixed load data method --- pom.xml | 5 +++ src/main/java/models/App.java | 13 +++++- src/main/java/models/Sneaker.java | 7 +--- src/main/java/services/Sneaker.csv | 5 +++ src/main/java/services/SneakerService.java | 49 ++++++++++------------ src/main/java/services/sneaker.json | 0 6 files changed, 45 insertions(+), 34 deletions(-) create mode 100644 src/main/java/services/sneaker.json diff --git a/pom.xml b/pom.xml index 12b36b3..03895eb 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,11 @@ RELEASE test + + com.fasterxml.jackson.core + jackson-databind + 2.10.1 + \ No newline at end of file diff --git a/src/main/java/models/App.java b/src/main/java/models/App.java index 733bdc6..e4ccdb2 100644 --- a/src/main/java/models/App.java +++ b/src/main/java/models/App.java @@ -4,6 +4,7 @@ import services.SneakerService; import java.awt.*; +import java.io.IOException; import java.sql.SQLOutput; import java.util.InputMismatchException; import java.util.Scanner; @@ -11,7 +12,7 @@ public class App { private SneakerService sneakerService = new SneakerService(); // (1) Scanner scanner = new Scanner(System.in); - Sneaker sneaker = new Sneaker(); + private Sneaker sneaker = new Sneaker(); public static void main(String[] args) { @@ -24,7 +25,9 @@ public static void main(String[] args) { public void init(){ + SneakerService.loadData(); Console.printWelcome(); + // (4) // application logic here // call methods to take user input and interface with services @@ -41,6 +44,11 @@ public void init(){ if(menu.equalsIgnoreCase("Create")){ add(); + try { + SneakerService.savaDataToCsv(); + } catch (IOException e) { + throw new RuntimeException(e); + } } else if(menu.equalsIgnoreCase("Read")){ System.out.println("Please enter product ID:"); @@ -96,7 +104,7 @@ public void add(){ int qty = scanner.nextInt(); System.out.println("Please enter product price:"); float price = scanner.nextFloat(); - Sneaker sneaker = SneakerService.create(name,brand,sport,size,qty,price); + sneaker = SneakerService.create(name,brand,sport,size,qty,price); System.out.println("Product created and product ID: " + sneaker.getId()); } @@ -152,6 +160,7 @@ else if(menu1.equalsIgnoreCase("price")){ } } + } public void read(int id){ diff --git a/src/main/java/models/Sneaker.java b/src/main/java/models/Sneaker.java index aa141bb..16fe50e 100644 --- a/src/main/java/models/Sneaker.java +++ b/src/main/java/models/Sneaker.java @@ -103,7 +103,7 @@ public Sneaker findSneaker(int id) { Sneaker sn = null; for (Sneaker s:SneakerService.getInventory()){ if(s.getId() == id){ - System.out.println(s.toString()); + //System.out.println(s.toString()); sn = s; flag = false; break; @@ -138,11 +138,6 @@ public boolean delete(int id) { System.out.println(ColorEnum.RED.formatString("Product not found in the inventory!")); } - try { - SneakerService.removeDataToCsv(id); - } catch (IOException e) { - throw new RuntimeException(e); - } return flag; } diff --git a/src/main/java/services/Sneaker.csv b/src/main/java/services/Sneaker.csv index e69de29..e6129de 100644 --- a/src/main/java/services/Sneaker.csv +++ b/src/main/java/services/Sneaker.csv @@ -0,0 +1,5 @@ +5 +1,a,a,a,1,1.0 +2,b,b,b,2,2.0 +3,c,c,c,3,3.0 +4,q,q,q,5,5.0 diff --git a/src/main/java/services/SneakerService.java b/src/main/java/services/SneakerService.java index 36faf67..a9442fe 100644 --- a/src/main/java/services/SneakerService.java +++ b/src/main/java/services/SneakerService.java @@ -20,16 +20,12 @@ public class SneakerService { public static Sneaker create(String name, String brand,String sport,float size,int qty,float price){ Sneaker createdSneaker = new Sneaker(nextId,name,brand,sport,size,qty,price); inventory.add(createdSneaker); - try{ - savaDataToCsv(); - } - catch (IOException e){ - System.out.println(e.getMessage()); - } nextId++; return createdSneaker; } + + public Sneaker find(Sneaker sneaker){ return inventory.get(nextId); } @@ -46,7 +42,7 @@ public static int getNextId() { public static void savaDataToCsv() throws IOException { String csvFile = "/Users/asan/Desktop/Projects/Product-Inventory-Lab/src/main/java/services/Sneaker.csv"; - FileWriter writer = new FileWriter(csvFile,true); //(1) + FileWriter writer = new FileWriter(csvFile); //(1) CSVUtils.writeLine(writer, new ArrayList<>(Arrays.asList(String.valueOf(nextId)))); // (2) @@ -66,31 +62,32 @@ public static void savaDataToCsv() throws IOException { writer.close(); } - private static void loadData(){ + + + public static void loadData(){ // (1) - String csvFile = "/Users/asan/Desktop/Projects/Product-Inventory-Lab/src/main/java/services/Sneaker.csv"; + String csvFile = "src/main/java/services/Sneaker.csv"; String line = ""; String csvSplitBy = ","; // (2) try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) { - if(br.readLine() !=null){ - 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]); - float price = Float.parseFloat(beer[5]); - - // (5) - inventory.add(new Sneaker(id, name, brand, sport, qty, price)); - } + 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]); + float price = Float.parseFloat(beer[5]); + + // (5) + inventory.add(new Sneaker(id, name, brand, sport, qty, price)); } } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/services/sneaker.json b/src/main/java/services/sneaker.json new file mode 100644 index 0000000..e69de29