Advertisement
jaVer404

level18.lesson10.bonus02(RK1)_not tested

Jan 27th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.31 KB | None | 0 0
  1. package com.javarush.test.level18.lesson10.bonus02;
  2.  
  3. /* Прайсы
  4. CrUD для таблицы внутри файла
  5. Считать с консоли имя файла для операций CrUD
  6. Программа запускается со следующим набором параметров:
  7. -c productName price quantity
  8. Значения параметров:
  9. где id - 8 символов
  10. productName - название товара, 30 chars (60 bytes)
  11. price - цена, 8 символов
  12. quantity - количество, 4 символа
  13. -c  - добавляет товар с заданными параметрами в конец файла,
  14. генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле
  15.  
  16. В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
  17. id productName price quantity
  18. Данные дополнены пробелами до их длины
  19.  
  20. Пример:
  21. 19846   Шорты пляжные синие           159.00  12
  22. 198478  Шорты пляжные черные с рисунко173.00  17
  23. 19847983Куртка для сноубордистов, разм10173.991234
  24. */
  25.  
  26.  
  27. import java.io.*;
  28. import java.util.ArrayList;
  29. import java.util.Arrays;
  30. import java.util.TreeSet;
  31.  
  32. public class Solution {
  33.     public static void main(String[] args) throws IOException
  34.     {
  35.         if ((args.length > 0) && ("-c".equals(args[0])))
  36.         {
  37.         BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
  38.         BufferedReader fileReader = null;
  39.         ArrayList<String> priceLines = null;
  40.         String fileName=inputReader.readLine();
  41.         inputReader.close();
  42.         args=parsArgs(args);
  43.  
  44.             try
  45.             {
  46.                 fileReader = new BufferedReader(new FileReader(fileName));
  47.                 priceLines = new ArrayList<String>();
  48.                 String line;
  49.                 while ((line = fileReader.readLine()) != null)
  50.                 {
  51.                     priceLines.add(line);
  52.                 }
  53.             }
  54.             catch (Exception e)
  55.             {
  56.             }
  57.             finally
  58.             {
  59.                 fileReader.close();
  60.             }
  61.  
  62.  
  63.             String newID = formNewId(findMaxNum(priceLines) + 1);
  64.  
  65.             String rawLine="";
  66.             for (int i =0;i<args.length;i++) {
  67.                 rawLine=rawLine+args[i];
  68.             }
  69.             String addThisLine = newID + formNewProdName(args[1]) + formNewPrice(args[2]) + formNewQuan(args[3]);
  70.             FileWriter fileWriter = null;
  71.             try
  72.             {
  73.                 fileWriter = new FileWriter(fileName, true);
  74.                 fileWriter.write("\r\n"+addThisLine);
  75.             }
  76.             catch (Exception e)
  77.             {
  78.             }
  79.             finally
  80.             {
  81.                 fileWriter.close();
  82.             }
  83.         }
  84.     }
  85.  
  86.  
  87.     public static int findMaxNum (ArrayList<String> list) {
  88.         TreeSet<Integer> nums= new TreeSet<Integer>();
  89.         for (String s : list) {
  90.             try{
  91.             nums.add(Integer.parseInt((s.substring(0,8)).replaceAll("\\s","")));}
  92.             catch (Exception e) {}
  93.         }
  94.         return nums.last();
  95.     }
  96.  
  97.     public static String formNewId (int i) {
  98.         char[]spaceArray = new char[8];
  99.         Arrays.fill(spaceArray,' ');
  100.         char[]myIntChar = (String.valueOf(i)).toCharArray();
  101.         for (int c = 0; c<myIntChar.length;c++) {
  102.             spaceArray[c] = myIntChar[c];
  103.         }
  104.         return new String(spaceArray);
  105.     }
  106.  
  107.     public static String formNewProdName (String input){
  108.         char[]spaceArray = new char[30];
  109.         Arrays.fill(spaceArray,' ');
  110.         char[]myProdN = input.toCharArray();
  111.         for (int b = 0; b < 30; b++) {
  112.             spaceArray[b] = myProdN[b];
  113.         }
  114.         return new String(spaceArray);
  115.     }
  116.  
  117.     public static String formNewPrice (String input){
  118.         char[]spaceArray = new char[8];
  119.         Arrays.fill(spaceArray,' ');
  120.         char[]myProdN = input.toCharArray();
  121.         for (int b = 0; b < 8; b++) {
  122.             spaceArray[b] = myProdN[b];
  123.         }
  124.         return new String(spaceArray);
  125.     }
  126.     public static String formNewQuan (String input){
  127.         char[]spaceArray = new char[4];
  128.         Arrays.fill(spaceArray,' ');
  129.         char[]myProdN = input.toCharArray();
  130.         for (int b = 0; b < 4; b++) {
  131.             spaceArray[b] = myProdN[b];
  132.         }
  133.         return new String(spaceArray);
  134.     }
  135.  
  136.     public static String[] parsArgs (String[] someStrings){
  137.         ArrayList<String>stringArgs = new ArrayList<String>();
  138.         for (String s : someStrings) {
  139.             stringArgs.add(s);
  140.         }
  141.         int i = stringArgs.size();
  142.         String prodName="";
  143.         for (int c = 1;c<i-3;c++) {
  144.             prodName=prodName+stringArgs.get(c);
  145.             if ((c<i-4)==true) {
  146.                 prodName=prodName+" ";
  147.             }
  148.         }
  149.         String[]returnArgs = new String[4];
  150.         returnArgs[0]=stringArgs.get(0);
  151.         returnArgs[1]=prodName;
  152.         returnArgs[2] = stringArgs.get(i-2);
  153.         returnArgs[3] = stringArgs.get(i-1);
  154.         return returnArgs;
  155.     }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement