Advertisement
jaVer404

level18.lesson10.bonus03(done)_1-attempt

Feb 15th, 2016
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.37 KB | None | 0 0
  1. package com.javarush.test.level18.lesson10.bonus03;
  2.  
  3. /* Прайсы 2
  4. CrUD для таблицы внутри файла
  5. Считать с консоли имя файла для операций CrUD
  6. Программа запускается с одним из следующих наборов параметров:
  7. -u id productName price quantity
  8. -d id
  9. Значения параметров:
  10. где id - 8 символов
  11. productName - название товара, 30 chars (60 bytes)
  12. price - цена, 8 символов
  13. quantity - количество, 4 символа
  14. -u  - обновляет данные товара с заданным id
  15. -d  - производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id)
  16.  
  17. В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
  18. id productName price quantity
  19. Данные дополнены пробелами до их длины
  20.  
  21. Пример:
  22. 19846   Шорты пляжные синие           159.00  12
  23. 198478  Шорты пляжные черные с рисунко173.00  17
  24. 19847983Куртка для сноубордистов, разм10173.991234
  25. */
  26.  
  27. import java.io.*;
  28. import java.util.ArrayList;
  29.  
  30. public class Solution {
  31.     public static void main(String[] args) {
  32. /*-------------------------------------------*/
  33.         if (((args.length) > 0) && argsFine(args[0]))
  34.         {
  35.             BufferedReader reader = null;
  36.             String fileName;
  37.             try
  38.             {
  39.                 reader = new BufferedReader(new InputStreamReader(System.in));
  40.                 fileName=reader.readLine();
  41.                 reader.close();
  42.                 if (args[0].equals("-u"))
  43.                 {
  44.                     updateLine(fileName,args);
  45.                 }
  46.  
  47.                 else if (args[0].equals("-d"))
  48.                 {
  49.                     deleteLine(fileName,getID(args[1]));
  50.                 }
  51.             }
  52.             catch (Exception e) {
  53.             }
  54.             finally
  55.             {
  56.                 if (reader!=null) {
  57.                     try
  58.                     {
  59.                         reader.close();
  60.                     }
  61.                     catch (IOException e) {}
  62.                 }
  63.             }
  64.         }
  65.     }
  66.  
  67.     public static void deleteLine (String fileName, String idNumber) {
  68.         BufferedReader fileReader = null;
  69.         BufferedWriter bufferedWriter = null;
  70.         String fromFile=null;
  71.         idNumber=getID(idNumber);
  72.         ArrayList<String> lines = new ArrayList<String>();
  73.         try {
  74.             fileReader = new BufferedReader(new FileReader(fileName));
  75.  
  76.             while ((fromFile = fileReader.readLine()) != null) {
  77.                 if ((idNumber.equals(getID(fromFile)))!= true) {
  78.                     lines.add(fromFile);
  79.                     System.out.println(fromFile);
  80.                 }
  81.             }
  82.             bufferedWriter = new BufferedWriter(new FileWriter(fileName));
  83.  
  84.             for (String s : lines) {
  85.                 bufferedWriter.write(s);
  86.                 bufferedWriter.newLine();
  87.             }
  88.             fileReader.close();
  89.             bufferedWriter.close();
  90.         }
  91.         catch (IOException e) {
  92.  
  93.         }
  94.         finally
  95.         {
  96.             if (fileReader!=null) {
  97.                 try {
  98.                     fileReader.close();
  99.                 }
  100.                 catch (IOException e) {}
  101.             }
  102.             if (bufferedWriter!=null) {
  103.                 try {
  104.                     bufferedWriter.close();
  105.                 }
  106.                 catch (IOException e) {}
  107.             }
  108.         }
  109.     }
  110.  
  111.  
  112.     public static void updateLine (String fileName, String[]tempArg) {
  113.         BufferedReader fileReader = null;
  114.         BufferedWriter bufferedWriter = null;
  115.         String fromFile=null;
  116.         String idNumber=getID(tempArg[1]);
  117.         ArrayList<String> lines = new ArrayList<String>();
  118.         try {
  119.             fileReader = new BufferedReader(new FileReader(fileName));
  120.  
  121.             while ((fromFile = fileReader.readLine()) != null) {
  122.                 if ((idNumber.equals(getID(fromFile)))!= true) {
  123.                     lines.add(fromFile);
  124.                 }
  125.                 else if ((idNumber.equals(getID(fromFile)))== true) {
  126.                     lines.add(idNumber
  127.                             +formNewProdName(tempArg[2])
  128.                             +getID(tempArg[3])
  129.                             +formNewQuan(tempArg[4]));
  130.                 }
  131.             }
  132.             bufferedWriter = new BufferedWriter(new FileWriter(fileName));
  133.  
  134.             for (String s : lines) {
  135.                 bufferedWriter.write(s);
  136.                 bufferedWriter.newLine();
  137.             }
  138.             fileReader.close();
  139.             bufferedWriter.close();
  140.         }
  141.         catch (IOException e) {
  142.  
  143.         }
  144.         finally
  145.         {
  146.             if (fileReader!=null) {
  147.                 try {
  148.                     fileReader.close();
  149.                 }
  150.                 catch (IOException e) {}
  151.             }
  152.             if (bufferedWriter!=null) {
  153.                 try {
  154.                     bufferedWriter.close();
  155.                 }
  156.                 catch (IOException e) {}
  157.             }
  158.         }
  159.     }
  160.  
  161.     /**
  162.      * check's parametrs
  163.      */
  164.     public static boolean argsFine (String args) {
  165.         if (args.equals("-u")||args.equals("-d")) {
  166.             return true;
  167.         }
  168.         else {
  169.             return false;
  170.         }
  171.     }
  172.     /**
  173.      *trim ID from args[1]
  174.      * берет args[1] и обрезает до восьми символов
  175.      */
  176.     public static String getID(String input)
  177.     {
  178.         if (input.length() > 8)
  179.         {
  180.             return input.substring(0, 8);
  181.         }
  182.         return String.format("%-8s", input);
  183.     }
  184.  
  185.     public static String formNewQuan(String input)
  186.     {
  187.         if (input.length() > 4)
  188.         {
  189.             return input.substring(0, 4);
  190.         }
  191.         return String.format("%-4s",input);
  192.     }
  193.  
  194.     public static String formNewProdName(String input)
  195.     {
  196.         if (input.length() > 30)
  197.         {
  198.             return input.substring(0, 30);
  199.         }
  200.         return String.format("%-30s", input);
  201.     }
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement