develop #1

Open
mahdi_Goudarzi wants to merge 2 commits from develop into main
2 changed files with 99 additions and 4 deletions
+18
View File
@@ -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<Product> 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
+81 -4
View File
@@ -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<Product> 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<Product> 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: