private static int update(List<String> products, String args) {
String idProduct = "";
for (int i = 0; i < products.size(); i++) {// цикл
idProduct = products.get(i).substring(0, 8);// вырезаем айди
if (Integer.parseInt(idProduct.trim()) == Integer.parseInt(args.trim())) return i;// находим айди отпровляем индекс листа
}
return -1;// айди не найден
}
package com.javarush.task.task18.task1828;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
Прайсы 2
*/
public class Solution {
public static void main(String[] args) throws IOException {
// write your code here
List<String> products = new ArrayList();
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //Настраиваем поток читаем с консоли
String fileName = bf.readLine(); // метод записывает в переменную fileName
bf.close(); //закрываем
// считываем данные из файла fileName в List
BufferedReader reader = new BufferedReader(new FileReader(fileName)); // Настраиваем поток читаем с файла
String stringProduct = "";
while (reader.ready()) {// проверяем работает ли ридер
stringProduct = reader.readLine(); // записываем строку в переменную
if (!stringProduct.equals("")) products.add(stringProduct);// добовляем считанную строку в List products
else reader.close();// нет символов закрываем ридер
}
reader.close();
//for (String str : products) System.out.println(str);
if (args.length != 0) { // если аргумент имеет какуюто запись
// параметр -с добавить новую запись
if (args[0].equals("-c")) {
String stringPrepear = stringFormattingArgs(args, products);//приводим строку согласно условия
String newId = generatorId(products); // создаем новый id максимальный из файла
products.add(newId + stringPrepear);// склеиваем
}
if (args[0].equals("-d") && args.length > 0 && args[1].length() < 9) delete(products, args[1]);
if (args[0].equals("-u")) {
String stringPrepear = args[1] + stringFormattingArgs(args, products);//склеиваем с айди
if (update(products,args[1])!=-1)products.set(update(products, args[1]), stringPrepear);//изминяем продукт по найденому айди
}
writer(fileName, products); //переписываем
}
}
private static int update(List<String> products, String args) {
String idProduct = "";
for (int i = 0; i < products.size(); i++) {
idProduct = products.get(i).substring(0, 8);
if (Integer.parseInt(idProduct.trim()) == Integer.parseInt(args.trim())) return i;
}
return -1;
}
private static void delete(List<String> products, String arg) {
String idProduct = "";
for (int i = 0; i < products.size(); i++) {
idProduct = products.get(i).substring(0, 8);
if (Integer.parseInt(idProduct.trim()) == Integer.parseInt(arg.trim())) products.remove(i);
}
}
//--------------------------------------------------------------------------------------------
private static void writer(String fileName, List<String> products) throws IOException {
FileOutputStream fileOutPut = new FileOutputStream(fileName);// настраиваем поток output
for (String strProduct:products){ // создаем цикл
fileOutPut.write(strProduct.getBytes());// записываем в файл по строчно
fileOutPut.write(13);// перенос строки
}
fileOutPut.close(); //закрываем поток
}
private static String generatorId(List<String> products) {
String idMax="0";
for (String idProduct:products){
idProduct = idProduct.substring(0,8);
if (Integer.parseInt(idMax.trim())<Integer.parseInt(idProduct.trim()))idMax=idProduct.trim();
}
idMax=String.valueOf(Integer.parseInt(idMax.trim())+1);
return String.format("%.8s",idMax);
}
private static String stringFormattingArgs(String[] args, List product) {
String stringArgs = "";String productName = "";String price = "";String quntity = "";String id = "";
for (String str : args) stringArgs += "=" + str;
stringArgs = stringArgs.substring(4);
args = stringArgs.split("=");
for (String str : args) {
try {
Float.parseFloat(str);
} catch (NumberFormatException e) {
productName +=str+" ";
}
}
price = args[args.length - 2];
quntity = args[args.length - 1];
return stringArgs=String.format("%.30s %.8s %.4s",productName,String.valueOf(price),quntity);
}
}