You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Скачать все зависимости
ant resolve
# Скомпилировать проект
ant compile
# Создать БД и заполнить тестовыми данными
ant init-db
# Запустить тесты
ant test# Просмотреть содержимое всех таблиц
ant show-db
Команды сборки
Команда
Описание
ant help
Показать список доступных задач
ant resolve
Скачать зависимости через Ivy
ant compile
Скомпилировать исходный код
ant compile-tests
Скомпилировать тесты
ant test
Запустить TestNG-тесты
ant create-db
Создать структуру БД (выполнить schema.sql)
ant init-db
Создать структуру и заполнить тестовыми данными (seed.sql)
ant show-db
Вывести содержимое всех таблиц
ant clear-db
Удалить файлы БД с диска
ant reset-db
Полностью пересоздать БД и заполнить её
ant clean
Удалить каталог сборки
ant clean-all
Удалить сборку и БД
БД создаётся в каталоге data/ в формате HSQLDB (file-mode); при остановке данные автоматически сбрасываются на диск (shutdown=true).
Тесты используют in-memory БД (jdbc:hsqldb:mem:testdb) с автоматическим созданием схемы (hbm2ddl.auto=create).
Архитектура Hibernate-слоя
Entity-классы (хранимые объекты)
Все сущности расположены в пакете ru.msu.cmc.webprac.entities и аннотированы стандартными JPA-аннотациями.
Класс
Таблица
Ключевые связи
CarBrand
car_brands
1 → N с Car
Car
cars
N → 1 с CarBrand, 1 → N с TestDrive
Client
clients
1 → N с Order, 1 → N с TestDrive
Order
orders
N → 1 с Client, N → 1 с Car, 1 → 1 с OrderRequirement
OrderRequirement
order_requirements
1 → 1 с Order (shared PK через @MapsId), N → 1 с CarBrand
Все наследуют GenericDAO<T> с базовыми CRUD-методами: getById, getAll, save, update, delete, deleteById.
Тесты
TestNG-тесты расположены в src/test/java. Для каждого DAO-класса свой тестовый класс.
Тесты работают с in-memory HSQLDB (hibernate-test.cfg.xml).
Покрытие — все нетривиальные методы; для поисковых методов проверяются оба сценария: «найдено» и «не найдено».
Сценарии использования
1. Поиск и просмотр автомобилей
Пользователь открывает главную страницу и переходит в раздел Автомобили.
На странице списка задаёт фильтры: марка/производитель, рег. номер, цена, двигатель (объём, мощность, расход), кол-во дверей/мест, багажник, КПП, топливо, круиз-контроль, встроенные устройства, обивка, цвет, пробег, дата ТО.
Система выводит список подходящих автомобилей.
Пользователь открывает карточку автомобиля — полные характеристики, цена, список клиентов, проходивших тест-драйв.
2. Добавление, редактирование и удаление автомобиля
На странице списка — кнопка «Добавить автомобиль» → форма ввода.
Заполняются рег. номер, марка, все характеристики, цена.
Система сохраняет запись и возвращает к списку или карточке.
Редактирование — через карточку → «Редактировать» → изменение полей → сохранение.
Удаление — «Удалить» в карточке или списке с подтверждением.
3. Управление марками автомобилей
Раздел «Марки автомобилей» — список марок и производителей.
Добавление, редактирование, удаление марки.
При выборе марки — переход к списку автомобилей с предустановленным фильтром.
4. Поиск и просмотр клиентов
Раздел «Клиенты» — поиск по ФИО, телефону, e-mail.
Фильтрация по параметрам заказов: статус, дата, необходимость тест-драйва, привязанный автомобиль, требования к автомобилю из заказа.
Выбор клиента → карточка клиента: контактные данные + история заказов.