Skip to content

HackuunaMatata/Accounts

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание

Это web-приложение, которое позволяет хранить список пользователей в базе данных, а также хранить дополнительную информацию о пользователях (имя, фамилия, email, телефон, дата рождения и тд). Диалог с пользователем осуществляется через ответы пользователя на вопросы (как анкета). Ответы на вопросы могут быть как текст, так и как выпадающий список. Корректность пользовательского ввода проверяется. Имеются механизмы для администрирования приложения. Приложение узко специализированно. Не реализовано шифрование данных. Не реализованы (и не подразумевается) аутентификация и авторизация. В проекте использовались

  • frameworkes : AngularJS, Hibernate
  • IDE : IntelliJ IDEA Ultimate 2016.1
  • контейнер : Apache Tomcat 9 (TomEE)
  • СУБД : MySQL 5.5

Приложение делится на две части: часть для пользователя и часть администратора.

Часть пользователя

Пользователь имеет следующие возможности:

  • создать учётную запись,
  • редактировать информацию о себе (отвечать на вопросы).

Для создания нового пользователя или редактирования уже существующей информации пользователю необходимо ввести свои имя и фамилию. Реализован механизм, позволяющий в одной базе данных хранить несколько пользователей с одинаковыми именем и фамилией.

Часть администратора

Администратор имеет следующие возможности:

  1. редактировать вопросы, на которые необходимо ответить пользователю
  2. добавлять варианты ответов к вопросам, ответы на которые - выпадающий список (редактор выпадающих списков)
  3. выгружать информацию о нескольких пользователях в файл xls;
  4. получать информацию об изменении данных пользователей по электронной почте (примитивное логгирование).

В редактирование вопросов входит:

  • добавление новых вопросов,
  • редактирование формулировок уже созданных вопросов,
  • установка видимости вопроса пользователю,
  • установка шаблона для проверки корректности пользователем данных.

Важно! Ряд вопросов является обязательными и не изменяемыми администратором. Чтобы иметь возможность их изменять, необходимо в базе данных в таблице QuestionsTable изменить поле cchange с 0 на 1.

Сборка проекта из исходного кода

  1. Создаём пустой проект Maven без использования архетипов.
  2. В файл pom.xml прописываем зависимости. (см. файл pom.xml)
  3. Создаём базу данных Accaunts в СУБД MySQL 5.5. Для этого используем файл CreateTables.sql.
  4. Подключаемся к созданной базе. Справа вкладка Database. Жмём "+". Выбираем MySQL. Вводим параметры и проверяем соединение.
  5. В качестве модулей подключаем к проекту Web и Hibernate. Для этого в настройках проекта File-->Project Structure... (Ctrl+Alt+Shift+S) во вкладке Modules жмем слева сверху на "+". При добавлении Hibernate справа сверху жмём на "+" и добавляем hibernate.cfg.xml. При добавлении Web оставляем всё без изменений. Пункты 6-12 можно пропустить, так как иерархия файлов и основные настройки в xml уже выполнены. Требуется только обратить внимание на пункт 8.
  6. В папочке src/main/java создаём пакеты ru.dao, ru.frontend, ru.backend.
  7. Далее займёмся создание объектов из базы. Слева снизу открываем вкладку Persistence. ПКМ по названию проекта. Выбираем Generate Persistence Mapping-->By Database Schema. Выбираем установленное ранее подключение к БД. Обязательно проверяем, чтобы Package был ru.dao, suffix - Entity. Выбраны prefer primitive types, Show default relationship, Add Session Factory, Generate Column Properties,Generate JPA Annotations(Java5). Выбираем все таблицы и жмём OK.
  8. Редактируем файл hibernate.cfg.xml. Добавляем диалект MySQL, имя пользователя и пароль пользователя, под которым будет работать hibernate. (см. hibernate.cfg.xml)
  9. Правим сгенерированные классы.
    • В классы с PK в @Column добавляем insertable = false, updatable = false;

    • В классы Date-, Int-, Lists-, StrTableEntity в связи в графе @JoinColumn добавляем nullable = false, insertable = false, updatable = false.

    • В классах UsersEntity и QuestionsEntity пытаемся получить

      Hibernate AUTO_INCREMENT

      Таким образом настраивается AUTO_INCREMENT для полей, на которых он задан в БД.

  10. Добавим скаченные Maven'ом зависимости. Настройка проекта (Ctrl+Alt+Shift+S), Artifacts. Добавляем все доступные.
  11. Распределяем классы по пакетам. (см. иерархию)
  12. Проверяем наличие в web.xml тэга welcome-list (см. web.xml).
  13. Настройка запуска. Run-->Edit configurations... Слева сверху жмём "+". Выбираем Tomcat Server-->Local. Помимо настроек добавляем во вкладке Deployment, нажав на "+" справа, артефакты.
  14. Готово.

Иерархия файлов

File tree

Остальное

Остальное описание проекта в файле ReadMe.txt. В этом файле представлены:

  • логика работы приложения
  • последовательность отправки и структура json
  • список некорректностей и недоработок
  • список особенностей, на которые стоит обратить внимание
  • сборка проекта из исходного кода
  • иерархия файлов

About

Work

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 71.7%
  • JavaScript 16.8%
  • HTML 11.5%