Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.javarush.test.level18.lesson10.bonus02;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.InputStreamReader;
- /* Прайсы
- 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
- */
- public class Solution {
- public static void main(String[] args) throws Exception {
- if(matchRules(args)){
- /*If true MAGIC HAPPENS HERE*/
- BufferedReader reader = null;
- BufferedReader fileRader = null;
- try
- {
- reader = new BufferedReader(new InputStreamReader(System.in));
- fileRader = new BufferedReader(new FileReader(reader.readLine()));
- }
- catch (Exception e) {}
- finally
- {
- reader.close();
- fileRader.close();
- }
- }
- }
- /**
- * Проверяем значение (число/не число)*/
- public static boolean isNumber(String some) {
- try {
- Double.parseDouble(some);
- return true;
- }
- catch (Exception e) {
- return false;
- }
- }
- /** Программа запускается со следующим набором параметров:
- * !!!!Тогда с другими запускатся не должна
- -c productName price quantity
- !!! должно быть не меньше 4 параметров
- !!! первый параметр должен быть "-c"
- !!!последние два должны быть номерами
- */
- public static boolean matchRules (String[]param) {
- if(/*List of Rules*/
- param[0].equals("-c")
- && param.length>=4
- && isNumber(param[(param.length)-1])
- && isNumber(param[(param.length)-2])) {
- return true;
- }
- else
- return false;
- }
- /**
- * Возращает строку в 30 знаков в длину
- * даже если там изначально было 3
- * ----------------------------------*/
- public static String formNewProdName (String input){
- if (input.length()>30) {
- return input.substring(0,30);
- }
- return String.format("%-30s",input);
- }
- /**
- * Возвращает цену в 8 знаков
- * даже если там было 3 зн.
- * */
- public static String formNewPrice (String input){
- if (input.length()>8) {
- return input.substring(0,8);
- }
- return String.format("%-8s",input);
- }
- /**
- * Возращает строку в 4 знака в длину
- * даже если там изначально было 380880
- * ----------------------------------*/
- public static String formNewQuan (String input){
- if (input.length()>4) {
- return input.substring(0,4);
- }
- return String.format("%-4s",input);
- }
- /**
- * Берет как аргумент FileReader
- * Читает строчка за строчкой
- * 0. Проверяет длину строчки (не меньше 8+30+8+4=50 знаков)
- * 1. В строчке substring(0,8) и проверяет номер или не номер
- * 2. Если номер не найден вообще возвращает 1
- * 3. Если номер найден сравнивает его с max
- * 4. Возвращает max
- * */
- public static int returnNextID (BufferedReader someFileName) {
- String parseLine = "";
- int max = 1;
- int temp = 0;
- try
- {
- while ((parseLine = someFileName.readLine())!=null) {
- if (parseLine.length()<50) {
- }
- else if (isNumber(parseLine = parseLine.substring(0,8))) {
- temp = Integer.parseInt(parseLine);
- if (temp>max) {
- max=temp;
- }
- }
- }
- }
- catch (Exception e) {
- }
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement