Приступать к выполнению после завершения задачи по созданию 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 |
- команда НЕ МОЖЕТ выполняться без подключения к базе данных.
-
Неподдерживаемая команда:
- создать класс
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.
- команда НЕ МОЖЕТ выполняться без подключения к базе данных
Приступать к выполнению после завершения задачи по созданию
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):
===========================
| field1 | field2 |… | fieldN |
===========================
| value1 | value2 |… | valueN1 |
| value3 | value4 |… | valueN2 |
| value5 | value6 |… | valueN3 |
Неподдерживаемая команда:
Unsupportedреализующий интерфейсCommand.boolean canProcess(String command)->всегда возвращаетtrue.void process(String command)-> выводит в консоль сообщение о том, что введенная команда не существует.Команда connect(параметры ->
databaseName|userName|password)Обработать ситуацию когда пользователь попытается выполнить команду для которой обязательно требуется подключение к базе данных, для этого создать класс-команду
IsConnectреализующий интерфейсCommand. МетодisProcessвозвращаетtrueесли коннект с базой данных НЕ установлен, иначеfalseВсе команды покрыть тестами
Для тех кому скучно :)
tableName|field1=value1|field2=value2|…|fieldN=valueN)tabelNameданныеfield1=value1|field2=value2|…|fieldN=valueNtabelName|field1=value1)tabelNameданные, гдеfield1=value1tableName|field1=value1| field2=value2)tabelName. В полеfield1записывается значениеvalue1, гдеfield2=value2tableName|field1,field2,...,fieldN| key=value)field1,field2,...,fieldNиз таблицыtablName, где полеkeyпринимает значениеvalue1.