package com.javarush.task.task18.task1827;

/* 
Прайсы

CrUD для таблицы внутри файла.
Считать с консоли имя файла для операций CrUD.

Программа запускается со следующим набором параметров:
-c productName price quantity

Значения параметров:
где id — 8 символов.
productName — название товара, 30 chars (60 bytes).
price — цена, 8 символов.
quantity — количество, 4 символа.
-c — добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле.

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity

Данные дополнены пробелами до их длины.

Пример:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
*/

/*
спецификатор %5.7s выводит строку длиной не менее пяти и не более семи символов.
Если строка длиннее, конечные символы отбрасываются.
*/


import java.io.*;
import java.util.ArrayList;
import java.util.Collections;

public class Solution {

    public static void main(String[] args) throws Exception {
        if (args.length != 4)
            return;

        BufferedReader conReader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = conReader.readLine();
        //String fileName = "e:\\price.txt";
        conReader.close();

        if (args[0].equals("-c")) {
            BufferedReader fileReader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));

            ArrayList<Integer> idList = new ArrayList<>();
            int lastID = 0;
            while (fileReader.ready()) {
                String line = fileReader.readLine();
                if (line.length() < 8)
                    continue;

                lastID = Integer.parseInt(line.substring(0, 8).trim());
                idList.add(lastID);

            }
            fileReader.close();

            int maxID = Collections.max(idList) + 1;
            String toFile = String.format("%n%-8d%-30.30s%-8.2f%-4d", maxID, args[1], Float.valueOf(args[2]), Integer.valueOf(args[3]));
            PrintWriter printWriter = new PrintWriter(new FileOutputStream(fileName, true));
            printWriter.println(toFile);
            printWriter.close();
        }
    }
}
@@ -1144,32 +1144,451 @@
 gth 
-!= 4)%0A            return
+%3C 4) return;%0A%0A        String priceText = args%5Bargs.length - 2%5D;%0A        String qtyText = args%5Bargs.length - 1%5D;%0A        String descripText = null;%0A%0A        if (args.length %3E 4) %7B%0A            StringBuffer buf = new StringBuffer();%0A            for (int i = 1; i %3C args.length - 2; i++)%0A                buf.append(args%5Bi%5D).append(%22 %22);%0A            descripText = buf.substring(0, buf.length() - 1);%0A        %7D else%0A            descripText = args%5B1%5D
 ;%0A%0A 
@@ -2218,34 +2218,19 @@
     
-lastID = Integer.parseInt(
+String s = 
 line
@@ -2252,16 +2252,61 @@
 ).trim()
+;%0A                lastID = Integer.parseInt(s
 );%0A     
@@ -2514,23 +2514,27 @@
  maxID, 
-args%5B1%5D
+descripText
 , Float.
@@ -2545,15 +2545,17 @@
 eOf(
-args%5B2%5D
+priceText
 ), I
@@ -2573,15 +2573,15 @@
 eOf(
-args%5B3%5D
+qtyText
 ));%0A

Update task1827