Advertisement
jaVer404

level18.lesson10.bonus02(pre Beta)_01

Jan 29th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.33 KB | None | 0 0
  1. package com.javarush.test.level18.lesson10.bonus02;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.FileReader;
  5. import java.io.InputStreamReader;
  6.  
  7. /* Прайсы
  8. CrUD для таблицы внутри файла
  9. Считать с консоли имя файла для операций CrUD
  10. Программа запускается со следующим набором параметров:
  11. -c productName price quantity
  12.  
  13. Значения параметров:
  14. где id - 8 символов
  15. productName - название товара, 30 chars (60 bytes)
  16. price - цена, 8 символов
  17. quantity - количество, 4 символа
  18. -c  - добавляет товар с заданными параметрами в конец файла,
  19. генерирует id самостоятельно,
  20. инкрементируя максимальный id, найденный в файле
  21.  
  22. В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
  23. id productName price quantity
  24. Данные дополнены пробелами до их длины
  25.  
  26. Пример:
  27. 19846   Шорты пляжные синие           159.00  12
  28. 198478  Шорты пляжные черные с рисунко173.00  17
  29. 19847983Куртка для сноубордистов, разм10173.991234
  30. */
  31. public class Solution {
  32.     public static void main(String[] args) throws Exception {
  33.  
  34.  
  35.  
  36.         if(matchRules(args)){
  37.             /*If true MAGIC HAPPENS HERE*/
  38.             BufferedReader reader = null;
  39.             BufferedReader fileRader = null;
  40.             try
  41.             {
  42.                 reader = new BufferedReader(new InputStreamReader(System.in));
  43.                 fileRader = new BufferedReader(new FileReader(reader.readLine()));
  44.  
  45.  
  46.             }
  47.             catch (Exception e) {}
  48.             finally
  49.             {
  50.                 reader.close();
  51.                 fileRader.close();
  52.             }
  53.  
  54.         }
  55.     }
  56.  
  57.     /**
  58.      * Проверяем значение (число/не число)*/
  59.     public static boolean isNumber(String some) {
  60.         try {
  61.             Double.parseDouble(some);
  62.             return true;
  63.         }
  64.         catch (Exception e) {
  65.             return false;
  66.         }
  67.     }
  68.     /**    Программа запускается со следующим набором параметров:
  69.      * !!!!Тогда с другими запускатся не должна
  70.      -c productName price quantity
  71.      !!! должно быть не меньше 4 параметров
  72.      !!! первый параметр должен быть "-c"
  73.      !!!последние два должны быть номерами
  74.      */
  75.     public static boolean matchRules (String[]param) {
  76.         if(/*List of Rules*/
  77.                 param[0].equals("-c")
  78.              && param.length>=4
  79.              && isNumber(param[(param.length)-1])
  80.              && isNumber(param[(param.length)-2])) {
  81.             return true;
  82.         }
  83.         else
  84.             return false;
  85.     }
  86.     /**
  87.      * Возращает строку в 30 знаков в длину
  88.      * даже если там изначально было 3
  89.      * ----------------------------------*/
  90.     public static String formNewProdName (String input){
  91.         if (input.length()>30) {
  92.             return input.substring(0,30);
  93.         }
  94.  
  95.         return String.format("%-30s",input);
  96.     }
  97.     /**
  98.      * Возвращает цену в 8 знаков
  99.      * даже если там было 3 зн.
  100.      * */
  101.     public static String formNewPrice (String input){
  102.         if (input.length()>8) {
  103.             return input.substring(0,8);
  104.         }
  105.  
  106.         return String.format("%-8s",input);
  107.     }
  108.     /**
  109.      * Возращает строку в 4 знака в длину
  110.      * даже если там изначально было 380880
  111.      * ----------------------------------*/
  112.     public static String formNewQuan (String input){
  113.         if (input.length()>4) {
  114.             return input.substring(0,4);
  115.         }
  116.  
  117.         return String.format("%-4s",input);
  118.     }
  119.     /**
  120.      * Берет как аргумент FileReader
  121.      * Читает строчка за строчкой
  122.      *  0. Проверяет длину строчки (не меньше 8+30+8+4=50 знаков)
  123.      *  1. В строчке substring(0,8) и проверяет номер или не номер
  124.      *  2. Если номер не найден вообще возвращает 1
  125.      *  3. Если номер найден сравнивает его с max
  126.      *  4. Возвращает max
  127.      * */
  128.     public static int returnNextID (BufferedReader someFileName) {
  129.         String parseLine = "";
  130.         int max = 1;
  131.         int temp = 0;
  132.         try
  133.         {
  134.             while ((parseLine = someFileName.readLine())!=null) {
  135.                 if (parseLine.length()<50) {
  136.                 }
  137.                 else if (isNumber(parseLine = parseLine.substring(0,8))) {
  138.                     temp = Integer.parseInt(parseLine);
  139.                     if (temp>max) {
  140.                         max=temp;
  141.                     }
  142.                 }
  143.             }
  144.         }
  145.         catch (Exception e) {
  146.  
  147.         }
  148.         return 0;
  149.     }
  150.  
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement