• 0.00

  • 0.00

  • ,

com.javarush.task.task18.task1827

Нынешняя com.javarush.task.task18.task1827
бывшая level18.lesson10.bonus02

Вопросы следующие:
1. Не очень понимаю почему валидатор не принимает решение. С задачей с оговорками (об этом ниже) справляется, вывод отформатирован как надо, потоки закрываются.

Задание:
Прайсы
CrUD для таблицы внутри файла.
Считать с консоли имя файла для операций CrUD.
Программа запускается со следующим набором параметров:
-c productName price quantity

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

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

public class Solution {
    static String fileName;
    final static int idLength = 8;
    final static int productNameLength = 30;
    final static int priceLength = 8;
    final static int quantityLength = 4;
    static ArrayList<String[]> list = new ArrayList<String[]>();

    public static void main(String[] args) throws Exception {
        if (args.length < 1)
        {
            return;
        }
        String param = args[0];

        switch (param)
        {
            case "-c" : {
                setFileName();
                readFile();
                writeFile(args);
                break;
            }
        }
    }

    public static void writeFile(String[] args) throws IOException
    {
        String newProductName = String.format("%-" + productNameLength + "." + productNameLength + "s", args[1]);
        String newPrice = String.format("%-" + priceLength + "s", args[2]);
        String newQuantity = String.format("%-" + quantityLength + "s", args[3]);
        list.add(new String[] {getNextId(), newProductName, newPrice, newQuantity});

        BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
        int end = list.size() - 1;
        for (int i = 0; i < end; i++)
        {
            writer.write(list.get(i)[0]+list.get(i)[1]+list.get(i)[2]+list.get(i)[3]);
            writer.newLine();
        }
        writer.write(list.get(end)[0]+list.get(end)[1]+list.get(end)[2]+list.get(end)[3]);
        writer.close();
    }

    public static void setFileName() throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        fileName = reader.readLine();
        reader.close();
    }

    public static void readFile() throws IOException
    {
        BufferedReader reader = new BufferedReader(new FileReader(fileName));

        while (reader.ready())
        {
            String nextLine = reader.readLine();
            list.add(getProductInfo(nextLine));
        }

        reader.close();
    }

    public static String getNextId() throws IOException
    {
        int maxId = 0;
        for (String[] strings : list)
        {
            int id = Integer.parseInt(strings[0].trim());
            if (id > maxId)
            {
                maxId = id;
            }
        }
        return String.format("%-" + idLength + "s", (maxId + 1));
    }

    public static String getId(String s)
    {
        return s.substring(0, idLength);
    }


    public static String getProductName(String s)
    {
        return s.substring(idLength, idLength + productNameLength);
    }

    public static String getPrice(String s)
    {
        return s.substring(idLength + productNameLength, idLength + productNameLength + priceLength);
    }

    public static String getQuantity(String s)
    {
        return s.substring(idLength + productNameLength + priceLength);
    }

    public static String[] getProductInfo(String s)
    {
        return new String[] {String.valueOf(getId(s)), getProductName(s), getPrice(s), getQuantity(s)};
    }
}
  • ,

com.javarush.task.task18.task1813

Перелопатил форум, посмотрел примеры на GitHub, не могу понять почему валидатор не принимает задание.
Старое название задачки: level18.lesson08.task03

AmigoOutputStream

1 Измени класс AmigoOutputStream так, чтобы он стал Wrapper-ом для класса FileOutputStream. Используй наследование.

2 При вызове метода close() должны выполняться следующая последовательность действий:

2.1 Вызвать метод flush().

2.2 Дописать следующий текст «JavaRush © All rights reserved.«, используй метод getBytes().

2.3 Закрыть поток методом close().

public class AmigoOutputStream extends  FileOutputStream {
    public static String fileName = "C:/tmp/result.txt";
    private FileOutputStream component;

    public AmigoOutputStream(FileOutputStream fileOutputStream) throws FileNotFoundException
    {
        super(fileName);
        this.component = fileOutputStream;
    }

    @Override
    public void write(int b) throws IOException {
        component.write(b);
    }

    @Override
    public void write(byte[] b) throws IOException {
        component.write(b);
    }

    @Override
    public void write(byte[] b, int off, int len) throws IOException {
        component.write(b, off, len);
    }

    @Override
    public FileChannel getChannel() {
        return component.getChannel();
    }

    @Override
    protected void finalize() throws IOException {
        super.finalize();
    }

    @Override
    public void close() throws IOException {
        component.flush();
        component.write("JavaRush © All rights reserved.".getBytes());
        component.close();
    }

    public static void main(String[] args) throws FileNotFoundException {
        new AmigoOutputStream(new FileOutputStream(fileName));
    }

}
  • ,

После обновления появилась ошибка "Задача уже решена".

При решении задач через IDEA (и соответственно, используя плагин), некоторые новые задачки (из добавленных после обновления, про старые ничего сказать не могу — не «перерешивал») при отправке на сервер отзываются сообщением «Задача уже решена».

При этом, что в списке задачек в плагине, что на сайте, указан статус «Доступна». Решал костыльно, используя IDE сайта. При отправке на проверку через веб-интерфейс система срабатывает как надо => проблема в плагине.

Конкретные задачи с которыми были такие проблемы:
com.javarush.task.task05.task0507
com.javarush.task.task06.task0606

Если еще какие-то встречу и будет актуально, список буду дополнять
  • ,

Стоит ли работать в направлении PEGA BPM?

Методом пристального всматривания и использования Google, для себя определил, что это платформа, обладающая большим инструментарием компонентов, и создание приложений сводится в первую очередь к установке и настройке этих компонентов. Написание кода сводится к минимуму, а основная работа связана с конфигурированием.

Поправьте меня если я неправильно понял.
Набор видео на Youtube не внушает доверия, толковых мануалов я не обнаружил, а то что есть ограничивается беглым обзором платформы на очень «грязном» английском.

Стоит ли связывать с этим свою жизнь, если хочется работать именно программистом, а не конфигуратором, вооруженным мышкой? Даст ли какой-то опыт, дополнительный вес вакансии для Java разработчика, время работы с PEGA BPM?

Отпугивает заточка под мышку, минимальное вмешательство в код, отсутствие хороших, свободно доступных мануалов.