- Организовать хранение коллекции в реляционной СУБД (PostgresQL). Убрать хранение коллекции в файле.
- Для генерации поля id использовать средства базы данных (sequence).
- Обновлять состояние коллекции в памяти только при успешном добавлении объекта в БД.
- Все команды получения данных должны работать с коллекцией в памяти, а не в БД.
- Организовать возможность регистрации и авторизации пользователей. У пользователя есть возможность указать пароль.
- Пароли при хранении хэшировать алгоритмом SHA-512.
- Запретить выполнение команд не авторизованным пользователям.
- При хранении объектов сохранять информацию о пользователе, который создал этот объект.
- Пользователи должны иметь возможность просмотра всех объектов коллекции, но модифицировать могут только принадлежащие им.
- Для идентификации пользователя отправлять логин и пароль с каждым запросом.
- Для многопоточного чтения запросов использовать создание нового потока (java.lang.Thread).
- Для многопотчной обработки полученного запроса использовать ForkJoinPool.
- Для многопоточной отправки ответа использовать Fixed thread pool.
- Для синхронизации доступа к коллекции использовать потокобезопасные аналоги коллекции из java.util.concurrent.
- В качестве базы данных использовать PostgreSQL.
- Для подключения к БД на кафедральном сервере использовать хост pg, имя базы данных - studs, имя пользователя/пароль совпадают с таковыми для подключения к серверу.