import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { static ArrayList productCatalog = new ArrayList<>(); public static void loadProducts() throws IOException { InputStream input = Main.class .getClassLoader() .getResourceAsStream("products.csv"); if (input == null) { throw new IOException("products.csv not found"); } try (Scanner scanner = new Scanner(input)) { while (scanner.hasNextLine()) { String line = scanner.nextLine(); if (line.trim().isEmpty()) continue; String[] parts = line.split(","); if (parts.length >= 3) { int productId = Integer.parseInt(parts[0].trim()); String name = parts[1].trim(); double price = Double.parseDouble(parts[2].trim()); productCatalog.add(new Product(productId, name, price)); } } } } public static void main(String[] args) { try { loadProducts(); } catch (IOException e) { System.err.println("Error reading products: " + e.getMessage()); System.out.println("Terminating the program..."); return; } System.out.println("=== Products loaded"); ReportGenerator reportGenerator = new ReportGenerator("2025_order_details.csv", Collections.unmodifiableList(productCatalog)); reportGenerator.processFile(); System.out.println("=== Order file processed"); reportGenerator.saveReport(); System.out.println("=== Report saved as report.txt"); } }