Files
HW-06-exceptions-and-file-h…/src/main/java/ReportGenerator.java
T
2026-05-22 12:15:06 +03:30

110 lines
3.4 KiB
Java

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
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;
public ReportGenerator(String ordersFilePath, List<Product> productList) {
this.ordersFilePath = ordersFilePath;
this.productList = productList;
totalFinalCost = 0 ;
totalQuantity = 0;
totalDiscountValue = 0;
totalInvalidLines = 0 ;
}
public void processFile() throws FileNotFoundException {
File file = new File(ordersFilePath);
Scanner in = new Scanner(file);
while (in.hasNextLine()){
String line = in.nextLine();
String[] lineArray = line.split(",");
int productId;
int quantity;
int discountPercent;
try {
productId = Integer.parseInt(lineArray[0]);
}catch (NumberFormatException e){
totalInvalidLines += 1;
continue;
}
if (productId <= 0 ) {
totalInvalidLines +=1;
continue;
}
try {
quantity = Integer.parseInt(lineArray[1]);
}catch (NumberFormatException e){
totalInvalidLines += 1;
continue;
}
if (quantity <= 0 ) {
totalInvalidLines +=1;
continue;
}
try {
discountPercent = Integer.parseInt(lineArray[2]);
}catch (NumberFormatException e){
totalInvalidLines +=1 ;
continue;
}
if (discountPercent < 0 || discountPercent> 99 ) {
totalInvalidLines +=1;
continue;
}
boolean productIdExist = false;
Product pro = null ;
for (Product product : productList) {
if (product.getProductID() == productId) {
pro = product;
productIdExist = true;
break;
}
}
if (!productIdExist){
totalInvalidLines += 1 ;
continue;
}
double subtotal = quantity * pro.getPrice();
double discountValue = subtotal * ((double) discountPercent / 100);
double finalCost = subtotal - discountValue;
totalQuantity += quantity;
totalFinalCost += finalCost;
totalDiscountValue += discountValue;
}
in.close();
}
public void saveReport() throws IOException {
String report = "";
report += ("========= SALES REPORT ========="+"\n");
report += ("Total Quantity Sold: "+totalQuantity+"\n");
report += ("Total Final Cost: $"+totalFinalCost+"\n");
report += ("Total Discount Value: $"+totalDiscountValue+"\n");
report += ("Invalid Rows: "+totalInvalidLines+"\n");
report += ("================================"+"\n");
File file = new File("report.txt");
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(report);
fileWriter.close();
}
}