diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 148a46e..49b8fd1 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -2,10 +2,14 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; +import java.util.InputMismatchException; import java.util.Scanner; public class Main { + static ArrayList productCatalog = new ArrayList<>(); + + public static void loadProducts() throws IOException{ InputStream input = Main.class .getClassLoader() @@ -15,6 +19,20 @@ public class Main { } Scanner scanner = new Scanner(input); + while (scanner.hasNextLine()){ + String line = scanner.nextLine(); + String[] lines = line.split(","); + + int id = Integer.parseInt(lines[0]); + String name = lines[1]; + double price = Double.parseDouble(lines[2]); + + Product product = new Product(id , name , price); + productCatalog.add(product); + + } + + // TODO: // - Read each line from products.csv // - For each line, parse productId, name, and price diff --git a/src/main/java/ReportGenerator.java b/src/main/java/ReportGenerator.java index 8eb458b..500f0f7 100644 --- a/src/main/java/ReportGenerator.java +++ b/src/main/java/ReportGenerator.java @@ -1,14 +1,18 @@ +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintWriter; import java.util.List; +import java.util.Scanner; public class ReportGenerator { private final String ordersFilePath; private final List productList; - private double totalFinalCost; - private int totalQuantity; - private double totalDiscountValue; - private int totalInvalidLines; + private double totalFinalCost =0; + private int totalQuantity=0; + private double totalDiscountValue=0; + private int totalInvalidLines=0; public ReportGenerator(String ordersFilePath, List productList) { this.ordersFilePath = ordersFilePath; @@ -17,6 +21,64 @@ public class ReportGenerator { public void processFile() { + File inputfile = new File(ordersFilePath); + Scanner input = null; + try { + input = new Scanner(inputfile); + } catch (FileNotFoundException e) { + System.out.println("We cannot open csv file");; + } + + while (input.hasNextLine()){ + + + + try{ + String line = input.nextLine(); + String[] data = line.split(","); + int id = Integer.parseInt(data[0]); + int quantity = Integer.parseInt(data[1]); + int discount = Integer.parseInt(data[2]); + + if(quantity <= 0 || discount<0 || discount>= 100 || id <= 0 || id > 9){ + totalInvalidLines++; + continue; + } + + Product myProduct = null; + for (Product p : productList) { + if (p.getProductID() == id) { + myProduct = p; + break; + } + } + + if (myProduct == null) { + totalInvalidLines++; + continue; + } + + + double subtotal = quantity * myProduct.getPrice(); + double discountValue = subtotal * (discount / 100.0); + double finalCost = subtotal - discountValue; + + totalQuantity += quantity; + totalFinalCost += finalCost; + totalDiscountValue += discountValue; + + + + }catch (NumberFormatException e){ + totalInvalidLines++; + continue; + } + + + + } + + input.close(); // TODO: // 1. Open the order details CSV file // 2. Read the file line by line @@ -59,6 +121,21 @@ public class ReportGenerator { public void saveReport() { + + + try { + PrintWriter report = new PrintWriter("Report.txt"); + report.println("=======REPORT========"); + report.println("Totsl Quantity sold :" + totalQuantity); + report.println("Toal final cost: $" + totalFinalCost); + report.println("Total discount value : $" + totalDiscountValue); + report.println("Invalid rows: " + totalInvalidLines); + report.println("====================="); + report.close(); + + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } // TODO: // 1. Build a formatted report string // 2. Include: