Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Input handler #2

Open
wants to merge 42 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
7f16e1e
Внесены небольшие правки
elizachi Feb 22, 2022
3949000
Тип данных, возвращаемых классами-читателями изменен со String на Arr…
elizachi Feb 26, 2022
268a4e7
Добавлена абстракция для класса, хранящего коллекцию.
elizachi Feb 26, 2022
0079174
Переписан функционал класса AddCommand. Теерь класс проверяет коррект…
elizachi Feb 26, 2022
3040eb5
Изменены аргументы, подаваемые в классы команд. Программа упрощена. И…
elizachi Mar 3, 2022
7d11211
Мелкие правки
elizachi Mar 4, 2022
b04ff97
три четыре пять ноль две уа а а а
irazaurus Feb 25, 2022
cc6b903
добавлен комментарий
irazaurus Mar 7, 2022
d7f6a47
новый класс AskInput + парочка методов
irazaurus Mar 7, 2022
79f9a1e
я забыла что там было
irazaurus Mar 7, 2022
ca719e6
тесты хихи
irazaurus Mar 7, 2022
5a7bda9
прописан AskInput и FileInputHandler
irazaurus Mar 7, 2022
a018137
поправлен один моментик
irazaurus Mar 7, 2022
34a0c7b
Поле inputHandler класса AskInput по умолчанию будет consoleInputRead…
elizachi Mar 8, 2022
8cc6c01
Исправлена ошибочка возвращаемого типа в методе askCoordinates(). Теп…
elizachi Mar 8, 2022
1f9a465
Теперь все работает для всех тестов кроме 5
elizachi Mar 10, 2022
cdf23a3
Теперь включение / выключение дружественного интерфейса не зависит от…
elizachi Mar 11, 2022
eb6ef1e
Тип считывания можно менять без экземпляра класса
elizachi Mar 11, 2022
d530f89
Прописан минимальный функционал работы с файлом (execute_script)
elizachi Mar 11, 2022
a7fd799
проверка команды на правильность делегирована классу AskInput из клас…
elizachi Mar 11, 2022
20150fa
Полностью прописаны две команды: add и update. Сделана уже окончатель…
elizachi Mar 12, 2022
9fd041f
Merge pull request #1 from elizachi/ComMan-AskInp
elizachi Mar 12, 2022
3c9bfb8
Команда DeleteCommand переименована в RemoveCommand; Команда удаления…
elizachi Mar 12, 2022
c8706db
переписано чтение с файла
irazaurus Mar 15, 2022
2f97d82
исправлена ошибочка
irazaurus Mar 15, 2022
bf984c6
В классе AskInput прописаны все исключения, касающиеся некорректного …
elizachi Mar 15, 2022
e503f72
Проверка на пустой ввод делегирована из класса ConsoleInputHandler в …
elizachi Mar 15, 2022
ec13a61
Прописаны исключения для несуществующего id. Вывод сообщения об успеш…
elizachi Mar 15, 2022
6fd4763
Merge remote-tracking branch 'origin/input_handler' into input_handler
elizachi Mar 15, 2022
4b888b1
Большая часть исключений класса FileInputHandler делегирована классу …
elizachi Mar 16, 2022
78dafe1
исправлены ошибочки
irazaurus Mar 17, 2022
2adf7bc
добавлена команда help
irazaurus Mar 17, 2022
625977d
добавлены комментарии javadoc
irazaurus Mar 17, 2022
7d76d45
строчку пустую убрала
irazaurus Mar 17, 2022
3379c58
команда head
irazaurus Mar 17, 2022
71b73e1
команда show
irazaurus Mar 17, 2022
2ad7668
команда remove_head
irazaurus Mar 17, 2022
eb12291
команда clear
irazaurus Mar 17, 2022
de303f2
команда info
irazaurus Mar 17, 2022
1ea1aa8
команды добавлены в мейн класс
irazaurus Mar 17, 2022
162220a
команды переписаны и отправлены на тестировку + добавлена парочка в д…
irazaurus Mar 19, 2022
58331f9
переписаны методы toString для вывода элементов коллекции в консоль
irazaurus Mar 20, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions auxiliary/Script
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
add
cat
nyan-cat
5
12
True
True
4
5.123
sadness
McQueen
True
update
1
dog
piesek
2
15
True
False
4
6.22
longing
BrokeCar
False
remove_by_id 1
4 changes: 2 additions & 2 deletions src/auxiliary/Structure → auxiliary/Structure
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ handlers:
FileInputHandler - производит считывание из файла. Наследуется от InputHandler.
InputHandler - абстрактный класс, хранящий в себе большую часть функционала для дочерних классов.

human_being - папка, хранящая в себе класс элементов коллекции.
human_being:
source - папка, хранящая в себе класс элементов коллекции.
source:
Car - мини-класс, используемый в поле класса HumanBeing.
Coordinates - мини-класс, используемый в поле класса HumanBeing.
HumanBeing - класс, описывающий элемент коллекции humanCollection.
Expand Down
79 changes: 79 additions & 0 deletions auxiliary/Tests
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
Формат ввода команд:
COMMAND
<name>
<sountrackName>
<minutesOfWaiting>
<impactSpeed>
<realHero>
<hasToothpick> //может быть null
<x> <y>
<mood> //может быть null
<carName> //может быть null
<cool>

Тест 1:
add
cat
nyan-cat
5
12
True
True
4
5.123
sadness
McQueen
True

Тест 2:
update
1
dog
piesek
2
15
True
False
4
6.22
longing
BrokeCar
False

Тест 3:
add
cat
nyan-cat
5
12
True
True
4
5.123
sadness
McQueen
True

Тест 4:
add
cat ffkg dflkdf dflkvmf
nyan-cat
5 ffff fffff fffffff
12 55555 44444 3333
True fvmdv
True vfkdmkmvffdfvfdvfdvdvdvfdvd
4 5.123 kdk mkmfkmdfmdm
sadness d iodjvodmvkmdmvk
McQueen True kvd

Тест 5:
add rfrjtnj ufdyj c.lf ddtle ,e,e,e,e,e
cat ffkg dflkdf dflkvmf
nyan-cat
5 ffff fffff fffffff
12 55555 44444 3333
True fvmdv
True vfkdmkmvffdfvfdvfdvdvdvfdvd
4 5.123 kdk mkmfkmdfmdm
sadness d iodjvodmvkmdmvk
McQueen True kvd
18 changes: 0 additions & 18 deletions src/auxiliary/Tests

This file was deleted.

25 changes: 12 additions & 13 deletions src/commands/AddCommand.java
Original file line number Diff line number Diff line change
@@ -1,30 +1,29 @@
package commands;

import dao.ArrayDequeDAO;
import human_being.HumanBeing;
import dao.DAO;
import handlers.InputHandler;
import service.FormedManager;
import source.HumanBeing;

/**
* ЗДЕСЬ БУДЕТ ПОЛНАЯ ОБРАБОТКА ВХОДНЫХ ДАННЫХ С ФОРМИРОВАНИЕМ ЭЛЕМЕНТОВ
* Класс команды add. Добавляет новый элемент в коллекцию.
*/
public class AddCommand implements Command {
private final ArrayDequeDAO arrayDequeDAO;
private final DAO arrayDequeDAO;
private final FormedManager manager = new FormedManager();

public AddCommand(ArrayDequeDAO arrayDequeDAO) {
public AddCommand(DAO arrayDequeDAO) {
this.arrayDequeDAO = arrayDequeDAO;
}

/**
* Обработка поступивших паратемтров и добавление их в коллекцию
* @param arguments - все аргументы, нужные для формирования аргумента, в виде строки
* @param reader - экземпляр класса InputHandler который определяет тип считывания
*/
@Override
public void execute(String arguments) {
// Создаю экземпляр класса формирователя
FormedManager manager = new FormedManager();
// Новый экземпляр класса human_being.HumanBeing
HumanBeing newHuman = manager.formed(arguments);
// Добавление экземпляра класса в коллекцию
arrayDequeDAO.add(newHuman);
public void execute(InputHandler reader) {
HumanBeing existedHuman = manager.formed(reader);
arrayDequeDAO.add(existedHuman);
System.out.print("add: Ура Ура! Элемент добавлен в коллекцию!\n");
}
}
30 changes: 30 additions & 0 deletions src/commands/ClearCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package commands;

import dao.DAO;
import handlers.InputHandler;

/**
* Класс команды clear
* Очищает коллекцию
*/
public class ClearCommand implements Command{
private final DAO arrayDequeDAO;

public ClearCommand(DAO arrayDequeDAO){
this.arrayDequeDAO = arrayDequeDAO;
}

@Override
public void execute(InputHandler reader) {
if (arrayDequeDAO.size() != 0) {
for (int i=0; i < arrayDequeDAO.getAvailableId(); i++){
if (arrayDequeDAO.get(i) != null){
arrayDequeDAO.remove(i);
}
}
System.out.print("clear: Коллекция успешно очищена.\n");
} else {
System.err.print("clear: Коллекция и так пуста.\n");
}
}
}
4 changes: 3 additions & 1 deletion src/commands/Command.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package commands;

import handlers.InputHandler;

public interface Command {
void execute(String arguments);
void execute(InputHandler reader);
}
18 changes: 0 additions & 18 deletions src/commands/DeleteCommand.java

This file was deleted.

26 changes: 26 additions & 0 deletions src/commands/HeadCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package commands;

import dao.DAO;
import handlers.InputHandler;


/**
* Класс команды head
* Выводит первый элемент коллекции
*/
public class HeadCommand implements Command{
private final DAO arrayDequeDAO;

public HeadCommand(DAO arrayDequeDAO){
this.arrayDequeDAO = arrayDequeDAO;
}

@Override
public void execute(InputHandler reader) {
if (arrayDequeDAO.size() != 0) {
System.out.print("head: " + arrayDequeDAO.show() +"\n");
} else {
System.err.print("head: Sorry, коллекция пуста.\n");
}
}
}
31 changes: 31 additions & 0 deletions src/commands/HelpCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package commands;

import handlers.InputHandler;

/**
* Класс команды help
* Выводит справку по доступным командам
*/
public class HelpCommand implements Command{

@Override
public void execute(InputHandler reader) {
System.out.print("Доступные команды: \n" +
"help - вывести справку по доступным командам \n" +
"info - вывести в стандартный поток вывода информацию о коллекции (тип, дата инициализации, количество элементов и т.д.) \n" +
"show - вывести в стандартный поток вывода все элементы коллекции в строковом представлении \n" +
"add {element} - добавить новый элемент в коллекцию \n" +
"update id {element} - обновить значение элемента коллекции, id которого равен заданному \n" +
"remove_by_id id - удалить элемент из коллекции по его id \n" +
"clear - очистить коллекцию \n" +
"save - сохранить коллекцию в файл \n" +
"execute_script file_name - считать и исполнить скрипт из указанного файла \n" +
"exit - завершить программу (без сохранения в файл) \n" +
"head - вывести первый элемент коллекции \n" +
"remove_head - вывести первый элемент коллекции и удалить его \n" +
"remove_greater {element} - удалить из коллекции все элементы, превышающие заданный \n" +
"filter_by_minutes_of_waiting minutesOfWaiting - вывести элементы, значение поля minutesOfWaiting которых равно заданному \n" +
"filter_greater_than_impact_speed impactSpeed - вывести элементы, значение поля impactSpeed которых больше заданного \n" +
"print_unique_impact_speed - вывести уникальные значения поля impactSpeed всех элементов в коллекции \n");
}
}
21 changes: 21 additions & 0 deletions src/commands/InfoCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package commands;

import dao.DAO;
import handlers.InputHandler;

/**
* Класс команды info
* Вывести в стандартный поток вывода информацию о коллекции (тип, дата инициализации, количество элементов и т.д.)
*/
public class InfoCommand implements Command {
private final DAO arrayDequeDAO;

public InfoCommand(DAO arrayDequeDAO){
this.arrayDequeDAO = arrayDequeDAO;
}

@Override
public void execute(InputHandler reader) {
System.out.print("info: Коллекция ArrayDeque, создана: " + "..." + "\n" + "Количество элементов: " + arrayDequeDAO.size() + "\n");
}
}
16 changes: 12 additions & 4 deletions src/commands/ReadCommand.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,25 @@
package commands;

import dao.ArrayDequeDAO;
import dao.DAO;
import handlers.InputHandler;

import java.util.ArrayList;

/**
* Класс команды help
* Выводит первый элемент коллекции
*/
public class ReadCommand implements Command {
ArrayDequeDAO arrayDequeDAO;
private final DAO arrayDequeDAO;

public ReadCommand(ArrayDequeDAO arrayDequeDAO) {
public ReadCommand(DAO arrayDequeDAO) {
this.arrayDequeDAO = arrayDequeDAO;
}

@Override
public void execute(String arguments) {
public void execute(InputHandler reader) {
// если айдишка есть то все ок
arrayDequeDAO.read();
//arrayDequeDAO.read();
}
}
28 changes: 28 additions & 0 deletions src/commands/RemoveCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package commands;

import dao.DAO;
import handlers.InputHandler;
import service.AskInput;

/**
* Класс команды remove_by_id
* Удаляет элемент из коллекции по его id
*/
public class RemoveCommand implements Command {
private final DAO arrayDequeDAO;

public RemoveCommand(DAO arrayDequeDAO) {
this.arrayDequeDAO = arrayDequeDAO;
}

@Override
public void execute(InputHandler reader) {
int id = AskInput.askId(reader);
if(arrayDequeDAO.get(id) != null) {
arrayDequeDAO.remove(id);
System.out.print("remove_by_id: Эхб, элемент удалили....\n");
} else {
System.err.print("remove_by_id: Элемента с таким id не нашлось.\n");
}
}
}
Loading