Skip to content

jane-kirina/list-dept

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 

Repository files navigation

Что было использовано

Intellij IDEA, JDK 1.8, Maven, Tomcat 8.5.61

Postgresql, HikariCP, HTML, CSS, Servlet/JSP/JSTL

Как собрать проект

Файл с настройками для соединения с базой данных: hikari.properties

В resources есть скрипт для создания базы данных с таблицами и готовыми тестовыми запросами для создания департаментов и сотрудников: schema.sql

Функционал сайта

При запуске открывается страница со списком департаментов с функционалом для этого списка(добавить, удалить, редактировать, показать список сотрудников). Возле каждого департамента есть кнопка для перехода на другую страницу со списком сотрудников, со схожим функционалом.

При создание/редактирование департамента и создания сотрудника можно вернутся на главную страницу, список департаментов При редактирование сотрудника можно вернутся на главную страницу, список департаментов, или список сотрудников департамента, к которому принадлежит редактирующий сотрудник

При попытке удалить данные из таблицы появляется сообщение/предупреждение, которое нужно потвердить для удаления данных из БД

При создание/редактирование сотрудника/департамента есть отдельное окно, в котором будут отображаться ошибки при заполнения формы(неверный формат телефона, почта уже существует в БД и т.д.)

Условие тестового задание с комментариями, как было реализовано и почему таким образом

Есть сотрудники и департаменты.
У департамента может быть много сотрудников. А может и не быть.

Реализовано через OneToMany с необязательной связью, с таблицами employee, dept. Сотрудник работает в департаменте, каждый сотрудник существует/работает только в департаменте. Департамент может существовать без сотрудников. Существование сотрудников в департаменте не обязательно.

Есть список департаментов. И есть кнопки "Добавить / Редактировать / Удалить / Список сотрудников".

На сайте, у таблицы департаментов есть столбец с кнопками "Редактировать / Удалить / Список сотрудников" для каждого отдельного департамента. В заголовке столбца есть кнопка добавления департамента.

При нажатии "Список" показываются сотрудники этого департамента с теми же кнопками.

Реализовано так же, как и у списка департаментов. Перед таблицей можно найти ссылку на главную страницу - список департамента.

Список - табличка, страница добавления/редактирования - набор текстфилдов.

Список реализован через таблицу, в коде использован LinkedHashSet. У Department и Employee есть поля, которые уникальны на уровне БД(ключевое слово UNIQUE, id у каждой таблице), повторы невозможны поэтому используем Set вместо List. Используем LinkedHashSet, который поддерживает порядок вставки элементов и имеет быструю скорость/производительность.

Добавление/редактирование реализовано через формы и инпут.

    Технологии:
    1. БД -jdbc

Использован только JDBC для взаимодействия с БД. Реализованы паттерны DAO, DAO Mapper/Decorator(для избежание повторяющего кода). Для создания пула потоков был использован HikariCP. SQL - Postgresql.

    2. Controller – servlet

Использован один общий сервлет, для соответствия паттерна Model-View-Controller. Также реализован шаблон command, в котором реализованы все команды/взаимодействия с сервисом. Каждая команда должна быть реализована через интерфейс ICommand.

3. View – jsp+el+jstl

Страницы сделаны на jsp с jstl, также добавлены минималистичный css для удобства.

4. Валидация данных.

Вначале проверяется на самом сайте пустые ли поля.

В сервере есть класс Validator с методами и регулярными выражениями для проверки данных на валидность

На сервере проверяются следующие поля:

  1. У департамента:

    a. Номер телефона

  2. У сотрудника:

    a. Количество лет работы. Поле должно быть целым числом и быть меньше 100 лет

    b. Почта

    c. День рождения. Возраст сотрудника должен быть минимум 18 лет

На уровне БД имя у департамента и почта проверяется на уникальность(ключевое слово UNIQUE). Если сервер не сможет добавит данные в БД, отобразится список ошибкок на сайте

5. Уникальность имени у департамента и мыла у пользователя.

Данные поля уникальны, на уровне БД(ключевое слово UNIQUE), нет возможности добавить или изменить у имеющей сущности данные поля, при попытки добавить существующие имени/почты возникает предупреждение(ошибка) на страницы.

6. У сотрудника обязательно одно поле - числовое, одно — дата.

Числовое поле - сколько лет работает человек в департаменте, дата - день рождения.

7. Данные после валидации пропадать не должны, даже если они введены неправильно.

После проверки данных на валидность, если они не верны, на текущей странице появляются сообщения об ошибки и введенные пользователем данные. Если данные верны, они заносятся в БД и пользователь возвращается на страницу со списком.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published