-
Notifications
You must be signed in to change notification settings - Fork 5
Description
Приступать к выполнению после завершения задачи по созданию View и MainController.
Пользователь вводит с консоли строку вида commandName|param1|param2|…|paramN, где commandName – название команды, paramN – параметры необходимые для выполнения команды.
Контроллер (MainController) хранит в себе все команды, с которыми может работать приложение, и после каждого ввода пробегает по этому списку, запуская на выполнение необходимую команду. Для этого скорей всего придется переписать логику метода run() в классе MainController. Если введенная строка не соответствует ни одному из известных шаблонов команд, тогда в консоль выводим сообщение о том, что команда не найдена.
-
В пакете controller создать пакет command, где будут находиться классы всех команд. Каждый класс-команда должен содержать в себе поле
final String template = «шаблон команды». -
Создать интерфейс
Command, который должен содержать следующие методы:boolean canProcess(String command)Метод на вход принимает введенную пользователем строку и возвращаетtrue, если реализующий этот интерфейс класс может обработать указанную команду, иначеfalse. Проще говоря, если команда соответствует шаблону, тогдаtrue.void process(String command). В этом методе описывается логика поведения команды. На вход приходит введенная пользователем строка.
-
Команда exit (без параметров):
- создать класс
Exitреализующий интерфейсCommand. boolean canProcess(String command)-> проверяет соответствует ли введенная пользователем строка шаблону команды exit.void process(String command)-> выводит в консоль сообщение о завершении работы и закрывает приложение.- команда может выполняться без подключения к базе данных
- все последующие команды реализуют интерфейс
Commandи создаются аналогично
- создать класс
-
Команда help (без параметров):
- выводит в консоль все возможные команды и их параметры.
- команда может выполняться без подключения к базе данных.
-
Команда list (без параметров):
- выводит в консоль список всех существующих в базе данных таблиц в виде
[table1, table2, … , tableN] - команда НЕ МОЖЕТ выполняться без подключения к базе данных
- выводит в консоль список всех существующих в базе данных таблиц в виде
-
Команда find (параметр tableName):
- выводит в консоль содержимое таблицы tableName в виде
===========================
| field1 | field2 |… | fieldN |
===========================
| value1 | value2 |… | valueN1 |
| value3 | value4 |… | valueN2 |
| value5 | value6 |… | valueN3 | - команда НЕ МОЖЕТ выполняться без подключения к базе данных.
- выводит в консоль содержимое таблицы tableName в виде
-
Неподдерживаемая команда:
- создать класс
Unsupportedреализующий интерфейсCommand. boolean canProcess(String command)->всегда возвращаетtrue.void process(String command)-> выводит в консоль сообщение о том, что введенная команда не существует.
- создать класс
-
Команда connect(параметры ->
databaseName|userName|password)- производит подключение к базе данных
-
Обработать ситуацию когда пользователь попытается выполнить команду для которой обязательно требуется подключение к базе данных, для этого создать класс-команду
IsConnectреализующий интерфейсCommand. МетодisProcessвозвращаетtrueесли коннект с базой данных НЕ установлен, иначеfalse -
Все команды покрыть тестами
Для тех кому скучно :)
- Команда insert (параметры ->
tableName|field1=value1|field2=value2|…|fieldN=valueN)- вставляет в таблицу
tabelNameданныеfield1=value1|field2=value2|…|fieldN=valueN - команда НЕ МОЖЕТ выполняться без подключения к базе данных.
- вставляет в таблицу
- Команда delete (параметры ->
tabelName|field1=value1)- удаляет из таблицы
tabelNameданные, гдеfield1=value1 - команда НЕ МОЖЕТ выполняться без подключения к базе данных
- удаляет из таблицы
- Команда update(параметры ->
tableName|field1=value1| field2=value2)- обновляет данные в таблицы
tabelName. В полеfield1записывается значениеvalue1, гдеfield2=value2 - команда НЕ МОЖЕТ выполняться без подключения к базе данных
- обновляет данные в таблицы
- Команда select(параметры ->
tableName|field1,field2,...,fieldN| key=value)- выбирает данные полей
field1,field2,...,fieldNиз таблицыtablName, где полеkeyпринимает значениеvalue1. - команда НЕ МОЖЕТ выполняться без подключения к базе данных
- выбирает данные полей