Skip to content

KrozhDev/taskManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Менеджер задач

Cервер отвечает за менеджмент списка дел.

TODOs

Центральным для логики программы компонентом будет класс Todos. Объект этого класса должен содержать в себе набор задач, добавленных в систему.

Каждая задача представляет собой обычное значение типа String. Например: "Сходить в магазин", "Пойти на пробежку". Все задачи добавленные в менеджер можно считать уникальными, т.е. без повторов.

Изначально объект этого класса не должен содержать никаких задач, но должна быть возможность:

  • добавить их через метод add;
  • удалить через метод remove.

У этого объекта есть возможность получить все актуальные задачи разом через метод getAllTasks - метод возвращает все задачи через пробел в отсортированном лексикографическом (словарном) порядке. Например, если мы добавили задачу "Пробежка", "Акробатика" и "Учёба", то этот метод должен вернуть строку вида Акробатика Пробежка Учёба.

В списке задач не должно быть больше чем 7 задач. Поэтому, при попытке добавления 8й задачи она добавляться не должна.

Сервер

Сервер создаётя и запускается в классе Main. После старта, он в бесконечном цикле принимает подключения и считывает с них одну строку, в которой будет располагаться json вида:

{ "type": "ADD", "task": "Название задачи" }

где type - тип операции (ADD или REMOVE), а task - сама задача.

Таким образом, одна операция соответствует одному запросу (а не один запрос с кучей строк-операций).

Для парсинга входных данных подключения используется библиотека GSon (com.google.code.gson:gson:2.8.9). Предполагается, что на сервер всегда приходят корректные данные.

В ответ на запрос сервер присылает текущее состояние списка задач после совершения операции и в том виде, в котором его возвращает операция getAllTasks (т.е. без всяких json и тп).

Простой сервер
      try (ServerSocket serverSocket = new ServerSocket(8989);) { // стартуем сервер один(!) раз
          while (true) { // в цикле(!) принимаем подключения
              try (
                      Socket socket = serverSocket.accept();
                      BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                      PrintWriter out = new PrintWriter(socket.getOutputStream());
                  ) {
                  // обработка одного подключения
              }
          }
      } catch (IOException e) {
          System.out.println("Не могу стартовать сервер");
          e.printStackTrace();
      }

Клиент

Для демонстрационных целей написан класс клиента.

Добавлена поддержка третьей операции. Она задается json-ом вида { "type": "RESTORE" }. В случае получения такой операции, сервер должен отменить действие последней не-RESTORE-операции. Т.е. после операций

  • { "type": "ADD", "task": "Первая" }
  • { "type": "ADD", "task": "Вторая" }
  • { "type": "REMOVE", "task": "Первая" }
  • { "type": "ADD", "task": "Третья" }
  • { "type": "RESTORE" }
  • { "type": "RESTORE" }

В списке задач в ответ на последнюю операцию должно быть прислано: "Вторая Первая".

About

Server maven application. Task manager

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages