План 3
- Провести исследовательскую работу по
log4j
- Переписать логику приложения с использованием
log4j
(R3.1 && R3.2) - Создать объект
DBWrapper
(R3.9)- Создать метод
getUser(login): User
Находит пользователя в коллекции и возвращает весь объект - Создать метод
getPermissions(login): List<Permission>
- Создать метод
addActivity(activity)
- Создать метод
- Переписать классы
Authentication
,Authorization
иAccounting
для работы сDBWrapper
Они должны приниматьDBWrapper
в конструкторе и использовать его для получения данных в методах - Провести исследовательскую работу по
h2
- В
DBWrapper
создать методdbExists(): Boolean
- В
DBWrapper
создать методы для инициализации базы данныхconnect(url, login, pass)
- подключается к существующей базе данныхinit(users, permissions)
- создаёт таблицу пользователей и разрешений, переносит туда данные из коллекций и сохраняет полученную базу данных в рабочей директории (R3.5 && R3.6)
- В бизнес логику добавить проверку на существование базы данных с помощью
dbExists()
- Если она существует вызвать
connect()
, необходимые параметры получить с помощьюSystem.getenv()
(R3.11) - Иначе
init()
- Если она существует вызвать
- Провести исследовательскую работу по
PreparedStatement
- Модифицировать методы
DBWrapper
для работы с базой данных (R3.3) Доступ к базе данных должен осуществляться черезPreparedStatement
(R3.7 && R3.8) - Добавить индескс в БД (R3.4)
- Удостовериться что существующий код удовлетворяет принципам SOLID, при необходимости переписать (R3.10)
Схема данных
Пользователи
| id | login | salt | hash | | — | ———- | ————————————– | —————————————————————- | | 0 | vasya | iYqHUi2<2zPhrGIL8]?p8m;bteA?ETaT | dc6a8709e9fc8de1acea34fdc98c842911686ca0c2a0b12127c512a5ed7ab382 | | 1 | admin | olMMIDct3GkrY:?Xp1WDJOPTw2IY0a[ | c6d6ced902fe90f039f168837f7ce3d313df040e071281317fc6781a60cac2bc | | 2 | q | TtVaKT?vkBlIrtbChI72yef7iWkLxkw4 | 50bba7d209a17a3c36a3df151276d233ca868bf3b518165a6510b8e8c0bc2b7a | | 3 | abcdefghij | TtVaKT?nUMXGQvmro8b5;AX7dLpwS_A4L;RH^_ | 2c06d373cd2549c31d8c1758daaa7773a8b905e32eb430f566c4c391827db121 |
Разрешения
Внешний ключ - login | id | res | role | login | | —- | —– | ——- | —– | | 0 | A | READ | vasya | | 1 | A.B.C | WRITE | vasya | | 2 | A.B | EXECUTE | admin | | 3 | A | READ | admin | | 4 | A.B | WRITE | admin | | 5 | A.B.C | READ | admin | | 6 | B | EXECUTE | q | | 7 | A.A.A | EXECUTE | vasya |
Активность
Внешний ключ - login | id | login | res | role | ds | de | vol | | —- | —– | — | —- | — | — | — | | | | | | | | |
Исследовательские задачи
Log4j
(1 час)- Разобраться как работать с
log4j
(Документация) (1 час)- Как подключить библиотеку к проекту?
- Как вывести сообщение в файл?
- Как вывести ошибку и стек?
- Для проведения исследования мы прочитаем официальную документацию по
log4j
- В результате исследовательской задачи мы научимся использовать библиотеку
log4j
и подключим её к проекту
- Разобраться как работать с
h2
- Разобраться как работать с
h2
(Сайт) (2 часа)- Как подключить базу данных к программе?
- Как отправлять запросы базе данных?
- Для проведения исследования мы прочитаем официальную документацию по
h2
- В результате исследовательской задачи мы научимся использовать базу данных
h2
и подключим её к проекту
- Разобраться как работать с
PreparedStatement
- Ознакомиться с
PreparedStatement
(Документация) (20 мин.)- Что это такое?
- Как использовать их для создания запросов к БД?
- Для проведения исследования мы прочитаем официальную документацию по
PreparedStatement
- В результате исследовательской задачи мы научимся использовать класс
PreparedStatement
- Ознакомиться с
Оценка времени
| Пункт плана | Оценка времени | Фактическое время | Итого | | :———: | ————– | :—————- | —– | | 1. | 20 | | | | 2. | 20 | | | | 3. | 15 | | | | 3.1. | 5 | | | | 3.2. | 5 | | | | 3.3. | 5 | | | | 4. | 15 | | | | 5. | 20 | | | | 6. | 10 | | | | 7. | 30 | | | | 7.1. | 15 | | | | 7.2. | 15 | | | | 8. | 5 | | | | 9. | 20 | | | | 10. | 20 | | | | 11. | 10 | | | | 12. | 15 | | |