See here: http://89.169.150.230/
Реализовать информационную систему, которая позволяет взаимодействовать с объектами класса Dragon, описание которого приведено ниже:
public class Dragon {
private Integer id; //Поле не может быть null, Значение поля должно быть больше 0, Значение этого поля должно быть уникальным, Значение этого поля должно генерироваться автоматически
private String name; //Поле не может быть null, Строка не может быть пустой
private Coordinates coordinates; //Поле не может быть null
private java.time.ZonedDateTime creationDate; //Поле не может быть null, Значение этого поля должно генерироваться автоматически
private DragonCave cave; //Поле не может быть null
private Person killer; //Поле может быть null
private Integer age; //Значение поля должно быть больше 0, Поле не может быть null
private Color color; //Поле не может быть null
private DragonType type; //Поле не может быть null
private DragonCharacter character; //Поле может быть null
private DragonHead head;
}
public class Coordinates {
private float x; //Максимальное значение поля: 187
private double y;
}
public class DragonCave {
private float depth;
private long numberOfTreasures; //Значение поля должно быть больше 0
}
public class Person {
private String name; //Поле не может быть null, Строка не может быть пустой
private Color eyeColor; //Поле не может быть null
private Color hairColor; //Поле может быть null
private Location location; //Поле может быть null
private Double height; //Поле может быть null, Значение поля должно быть больше 0
private double weight; //Значение поля должно быть больше 0
private String passportID; //Значение этого поля должно быть уникальным, Поле не может быть null
}
public class DragonHead {
private float toothCount;
}
public class Location {
private double x;
private Integer y; //Поле не может быть null
private String name; //Длина строки не должна быть больше 416, Поле может быть null
}
public enum Color {
GREEN,
RED,
WHITE,
BROWN;
}
public enum DragonType {
WATER,
UNDERGROUND,
AIR,
FIRE;
}
public enum DragonCharacter {
CUNNING,
WISE,
GOOD,
CHAOTIC_EVIL,
FICKLE;
}- Основное назначение информационной системы - управление объектами, созданными на основе заданного в варианте класса.
- Необходимо, чтобы с помощью системы можно было выполнить следующие операции с объектами: создание нового объекта, получение информации об объекте по ИД, обновление объекта (модификация его атрибутов), удаление объекта. Операции должны осуществляться в отдельных окнах (интерфейсах) приложения.При получении информации об объекте класса должна также выводиться информация о связанных с ним объектах.
- При создании объекта класса необходимо дать пользователю возможность связать новый объект с объектами вспомогательных классов, которые могут быть связаны с созданным объектом и уже есть в системе.
- Выполнение операций по управлению объектами должно осуществляться на серверной части (не на клиенте), изменения должны синхронизироваться с базой данных.
- На главном экране системы должен выводиться список текущих объетов в виде таблицы (каждый атрибут объекта - отдельная колонка в таблице). При отображении таблицы должна использоваться пагинация (если все объекты не помещаются на одном экране).
- Нужно обеспечить возможность фильтровать/сортировать строки таблицы, которые показывают объекты (по значениям любой из строковых колонок). Фильтрация элементов должна производиться только по полному совпадению.
- Переход к обновлению (модификации) объекта должен быть возможен из таблицы с общим списком объектов и из области с визуализацией объекта (при ее реализации).
- При добавлении/удалении/изменении объекта, он должен автоматически появиться/исчезнуть/измениться в интерфейсах у других пользователей, авторизованных в системе.
- Если при удалении объекта с ним связан другой объект, связанные объекты должны быть связаны с другим объектом (по выбору пользователя), а изначальный объект удален.
- Пользователи должны иметь возможность просмотра всех объектов. Для модификации объекта должно открываться отдельное диалоговое окно. При вводе некорректных значений в поля объекта должны появляться информативные сообщения о соответствующих ошибках.
В системе должен быть реализован отдельный пользовательский интерфейс для выполнения специальных операций над объектами:
- Удалить один (любой) объект, значение поля age которого эквивалентно заданному.
- Рассчитать сумму значений поля age для всех объектов.
- Вернуть один (любой) объект, значение поля type которого является максимальным.
- Найти дракона, живущего в самой глубокой пещере.
- Убить указанного дракона.
Представленные операции должны быть реализованы в рамках компонентов бизнес-логики приложения без прямого использования функций и процедур БД.
- Организовать хранение данных об объектах в реляционной СУБД (PostgreSQL). Каждый объект, с которым работает ИС, должен быть сохранен в базе данных.
- Все требования к полям класса (указанные в виде комментариев к описанию классов) должны быть выполнены на уровне ORM и БД.
- Для генерации поля id использовать средства базы данных.
- Для подключения к БД на кафедральном сервере использовать хост pg, имя базы данных - studs, имя пользователя/пароль совпадают с таковыми для подключения к серверу.
При создании системы нужно учитывать следующие особенности организации взаимодействия с пользователем:
- Система должна реагировать на некорректный пользовательский ввод, ограничивая ввод недопустимых значений и информируя пользователей о причине ошибки.
- Переходы между различными логически обособленными частями системы должны осуществляться с помощью меню.
- При добавлении/удалении/изменении объекта, он должен автоматически появиться/исчезнуть/измениться на области у всех других клиентов.
-
В качестве основы для реализации ИС необходимо использовать Spring MVC.
-
Для создания уровня хранения необходимо использовать JPA + Hibernate.
-
Разные уровни приложения должны быть отделены друг от друга, разные логические части ИС должны находиться в отдельных компонентах.