Help is appreciated...
package com.codegym.task.task18.task1828;
/*
Prices 2
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
if (args[0].equals("-u")) {
updateProduct(args[1], args[2], args[3], args[4], args[5]);
} else if (args[0].equals("-d")) {
deleteProduct(args[1], args[2]);
}
//updateProduct("/home/seferi/test", "1", "testName", "23.5", "45");
//deleteProduct("/home/seferi/test", "3");
}
public static void updateProduct(String fileName, String id, String productName, String price, String quantity) throws IOException {
ArrayList<Product> productList = getProductList(fileName);
for (Product product : productList) {
if (id.equals(product.getId())) {
product.setProductName(productName);
product.setPrice(price);
product.setQuantity(quantity);
}
}
outputProducts(fileName, productList);
}
public static void deleteProduct(String fileName, String id) throws IOException {
ArrayList<Product> productList = getProductList(fileName);
productList.removeIf(product -> id.equals(product.getId()));
outputProducts(fileName, productList);
}
public static ArrayList<Product> getProductList(String fileName) throws IOException {
ArrayList<String> lines = new ArrayList<>();
ArrayList<Product> productList = new ArrayList<>();
FileInputStream inputStream = new FileInputStream(fileName);
BufferedReader lineReader = new BufferedReader(new InputStreamReader(inputStream));
String data;
while ((data = lineReader.readLine()) != null) {
lines.add(data);
}
inputStream.close();
lineReader.close();
for (String line : lines) {
String oldId = line.substring(0, 7).trim();
String oldProductName = line.substring(8, 37).trim();
String oldPrice = line.substring(38, 45).trim();
String oldQuantity = line.substring(46, 49).trim();
productList.add(new Product(oldId, oldProductName, oldPrice, oldQuantity));
}
return productList;
}
public static void outputProducts(String fileName, ArrayList<Product> productList) throws IOException {
Iterator iter = productList.iterator();
if (iter.hasNext()) {
FileOutputStream outputStream = new FileOutputStream(fileName);
outputStream.write(iter.next().toString().getBytes());
while (iter.hasNext()) {
outputStream.write("\n".getBytes());
outputStream.write(iter.next().toString().getBytes());
}
outputStream.close();
}
}
public static class Product {
private String id;
private String productName;
private String price;
private String quantity;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getQuantity() {
return quantity;
}
public void setQuantity(String quantity) {
this.quantity = quantity;
}
public Product(String id, String productName, String price, String quantity) {
this.id = id;
this.productName = productName;
this.price = price;
this.quantity = quantity;
}
public String toString() {
return String.format("%-8s%-30s%-8s%-4s", id, productName, price, quantity);
}
}
}