| Lab.Client | ||
| Lab.Domain | ||
| Lab.Server | ||
| .gitignore | ||
| db.xml | ||
| README.md | ||
| uml-client.png | ||
| uml-domain.png | ||
| uml-server.png | ||
Лабораторная работа №7
Выполнил
ФИ: Зинченко Иван
ИСУ: 408657
Вариант: 21210
Доработать программу из лабораторной работы №6 следующим образом:
- Организовать хранение коллекции в реляционной СУБД (PostgresQL). Убрать хранение коллекции в файле.
- Для генерации поля id использовать средства базы данных (sequence).
- Обновлять состояние коллекции в памяти только при успешном добавлении объекта в БД
- Все команды получения данных должны работать с коллекцией в памяти, а не в БД
- Организовать возможность регистрации и авторизации пользователей. У пользователя есть возможность указать пароль.
- Пароли при хранении хэшировать алгоритмом SHA-256
- Запретить выполнение команд не авторизованным пользователям.
- При хранении объектов сохранять информацию о пользователе, который создал этот объект.
- Пользователи должны иметь возможность просмотра всех объектов коллекции, но модифицировать могут только принадлежащие им.
- Для идентификации пользователя отправлять логин и пароль с каждым запросом.
Необходимо реализовать многопоточную обработку запросов.
- Для многопоточного чтения запросов использовать
Cached thread pool - Для многопоточной обработки полученного запроса использовать
Cached thread pool - Для многопоточной отправки ответа использовать
Fixed thread pool - Для синхронизации доступа к коллекции использовать синхронизацию чтения и записи с помощью
java.util.concurrent.locks.ReentrantLock
Реализация
БД
erDiagram
users {
serial id PK
text login
text password "sha256"
}
products {
serial id PK
text name
coorinates coorinates FK
DateTime creation_date
long price
text part_number
long manufacture_cost
int unit_of_measure
persons person FK
}
coordinates {
int x PK
int y PK
}
persons {
text name
text passport_id PK
int color
locations location FK
}
locations {
int x PK
int y PK
text name
}
products }|--|| coordinates : ""
products }|--|| persons : ""
persons }|--|| locations : ""
products_owners {
products product PK,FK
users owner PK,FK
}
products_owners ||--|| products : ""
products_owners }|--|| users : ""
db_info {
int migration_version PK
}