Skip to content

Реализовать основные команды для sqlCMD, используя паттерн «команда» #115

@AVM82

Description

@AVM82

Приступать к выполнению после завершения задачи по созданию View и MainController.

Пользователь вводит с консоли строку вида commandName|param1|param2|…|paramN, где commandName – название команды, paramN – параметры необходимые для выполнения команды.
Контроллер (MainController) хранит в себе все команды, с которыми может работать приложение, и после каждого ввода пробегает по этому списку, запуская на выполнение необходимую команду. Для этого скорей всего придется переписать логику метода run() в классе MainController. Если введенная строка не соответствует ни одному из известных шаблонов команд, тогда в консоль выводим сообщение о том, что команда не найдена.

  1. В пакете controller создать пакет command, где будут находиться классы всех команд. Каждый класс-команда должен содержать в себе поле final String template = «шаблон команды».

  2. Создать интерфейс Command, который должен содержать следующие методы:

    • boolean canProcess(String command) Метод на вход принимает введенную пользователем строку и возвращает true, если реализующий этот интерфейс класс может обработать указанную команду, иначе false. Проще говоря, если команда соответствует шаблону, тогда true.
    • void process(String command). В этом методе описывается логика поведения команды. На вход приходит введенная пользователем строка.
  3. Команда exit (без параметров):

    • создать класс Exit реализующий интерфейс Command.
    • boolean canProcess(String command) -> проверяет соответствует ли введенная пользователем строка шаблону команды exit.
    • void process(String command) -> выводит в консоль сообщение о завершении работы и закрывает приложение.
    • команда может выполняться без подключения к базе данных
    • все последующие команды реализуют интерфейс Command и создаются аналогично
  4. Команда help (без параметров):

    • выводит в консоль все возможные команды и их параметры.
    • команда может выполняться без подключения к базе данных.
  5. Команда list (без параметров):

    • выводит в консоль список всех существующих в базе данных таблиц в виде
      [table1, table2, … , tableN]
    • команда НЕ МОЖЕТ выполняться без подключения к базе данных
  6. Команда find (параметр tableName):

    • выводит в консоль содержимое таблицы tableName в виде
      ===========================
      | field1 | field2 |… | fieldN |
      ===========================
      | value1 | value2 |… | valueN1 |
      | value3 | value4 |… | valueN2 |
      | value5 | value6 |… | valueN3 |
    • команда НЕ МОЖЕТ выполняться без подключения к базе данных.
  7. Неподдерживаемая команда:

    • создать класс Unsupported реализующий интерфейс Command.
    • boolean canProcess(String command) ->всегда возвращает true.
    • void process(String command) -> выводит в консоль сообщение о том, что введенная команда не существует.
  8. Команда connect(параметры -> databaseName|userName|password)

    • производит подключение к базе данных
  9. Обработать ситуацию когда пользователь попытается выполнить команду для которой обязательно требуется подключение к базе данных, для этого создать класс-команду IsConnect реализующий интерфейс Command. Метод isProcess возвращает true если коннект с базой данных НЕ установлен, иначе false

  10. Все команды покрыть тестами


Для тех кому скучно :)

  1. Команда insert (параметры -> tableName|field1=value1|field2=value2|…|fieldN=valueN)
    • вставляет в таблицу tabelName данные field1=value1|field2=value2|…|fieldN=valueN
    • команда НЕ МОЖЕТ выполняться без подключения к базе данных.
  2. Команда delete (параметры -> tabelName|field1=value1)
    • удаляет из таблицы tabelName данные, где field1=value1
    • команда НЕ МОЖЕТ выполняться без подключения к базе данных
  3. Команда update(параметры -> tableName|field1=value1| field2=value2)
    • обновляет данные в таблицы tabelName. В поле field1 записывается значение value1, где field2=value2
    • команда НЕ МОЖЕТ выполняться без подключения к базе данных
  4. Команда select(параметры -> tableName|field1,field2,...,fieldN| key=value)
    • выбирает данные полей field1,field2,...,fieldN из таблицы tablName, где поле key принимает значение value1.
    • команда НЕ МОЖЕТ выполняться без подключения к базе данных

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions