План 7
- Создать
ConnectionProvider
(20 мин.)- Возвращает коннект к БД с нужными URL, логином и паролем
- URL, логин и пароль передаются через переменные среды
- Если переменные среды отсутствуют, берутся значения по умолчанию
- Заинжектить
ConnectionProvider
вDBWrapper
(5 мин.) - Переписать методы
DBWrapper
на работу с провайдером (40 мин.) - Добавить поле
id
в таблицуusers
в БД, сделать его первичным ключом (2 мин.) - Добавить поле
id
в классUser
(1 мин.) - Добавить метод
getUser(id)
вDBWrapper
(25 мин.)- Возвращает
List<User>
- Если
id != 0
список содержит пользователя с указаннымid
- Иначе список содержит всех пользователей
- Возвращает
- Переименовать таблицу
permissions
и объектPermission
наauthorities
иAuthority
соответственно (20 мин.) - В таблице
authorities
заменить полеlogin
на полеuserId
, сделать его внешним ключом и связать с таблицейusers
(2 мин.) - Добавить метод
getAuthority(id)
вDBWrapper
(15 мин.)- Возвращает
List<Authority>
- Если
id != 0
список содержит разрешение с указаннымid
- Иначе список содержит все разрешения
- Возвращает
- Добавить метод
getAuthorityByUser(userId)
вDBWrapper
(15 мин.)- Возвращает
List<Authority>
с разрешениями пользователя с указаннымuserId
- Возвращает
- В класс
Activity
добавить полеid
(1 мин.) - В классе
Activity
заменить поляuser
,res
иrole
на полеauthority
(1 мин.) - Добавить метод
getActivity(id)
вDBWrapper
(10 мин.)- Возвращает
List<Activity>
- Если
id != 0
список содержит действия с указаннымid
- Иначе список содержит все действия
- Возвращает
- Добавить метод
getActivityByAuthority(authorityId)
вDBWrapper
(10 мин.)- Возвращает
List<Activity>
с действиями с указанным разрешением
- Возвращает
- Создать
GSONProvider
(10 мин.)- Возвращает
GsonBuilder().excludeFieldsWithoutExposeAnnotation().create()
- Возвращает
- Заинжектить
GSONProvider
в классыUserServlet
,AuthorityServlet
иActivityServlet
(5 мин.) - Заинжектить
DBWrapper
в классыUserServlet
,AuthorityServlet
иActivityServlet
(90 мин.) - Реализовать метод
UserServlet.service()
(20 мин.)- Создать переменную
userList
- Если в запросе присутствует
id
:userList = DBWrapper.getUser(id)
- Иначе
userList = DBWrapper.getUser(0)
- Сериализовать
userList
и вернуть полученный json- Для получения сериализатора использовать
GSONProvider
- Для получения сериализатора использовать
- Создать переменную
- Реализовать метод
AuthorityServlet.service()
(20 мин.)- Создать переменную
authorityList
- Если в запросе присутствует
id
:authorityList = DBWrapper.getAuthority(id)
- Если в запросе присутствует
userId
:authorityList = DBWrapper.getAuthorityByUser(userId)
- Иначе
authorityList = DBWrapper.getAuthority(0)
- Сериализовать
authorityList
и вернуть полученный json- Для получения сериализатора использовать
GSONProvider
- Для получения сериализатора использовать
- Создать переменную
- Реализовать метод
ActivityServlet.service()
(20 мин.)- Создать переменную
activityList
- Если в запросе присутствует
id
:activityList = DBWrapper.getActivity(id)
- Если в запросе присутствует
authorityId
:activityList = DBWrapper.ActivityByAuthority(authorityId)
- Иначе
activityList = DBWrapper.getActivity(0)
- Сериализовать
activityList
и вернуть полученный json- Для получения сериализатора использовать
GSONProvider
- Для получения сериализатора использовать
- Создать переменную
- В классе
User
добавить аннотацию@Expose
для всех полей кромеsalt
иhash
(5 мин.) - В классе
Authority
добавить аннотацию@Expose
для всех полей кромеuser
(5 мин.) - В классе
Activity
добавить аннотацию@Expose
для всех полей кромеauthority
(5 мин.)
Оценка времени
| Пункт плана | Оценка времени | Фактическое время | | ———– | ————– | —————– | | 1. | 20 мин. | | | 2. | 5 мин. | | | 3. | 40 мин. | | | 4. | 2 мин. | | | 5. | 1 мин. | | | 6. | 25 мин. | | | 7. | 20 мин. | | | 8. | 2 мин. | | | 9. | 15 мин. | | | 10. | 15 мин. | | | 11. | 1 мин. | | | 12. | 1 мин. | | | 13. | 10 мин. | | | 14. | 10 мин. | | | 15. | 10 мин. | | | 16. | 5 мин. | | | 17. | 90 мин. | | | 18. | 20 мин. | | | 19. | 20 мин. | | | 20. | 20 мин. | | | 21. | 5 мин. | | | 22. | 5 мин. | | | 23. | 5 мин. | |