Разработать веб-сервис на базе сервлета, реализующий управление коллекцией объектов, и клиентское веб-приложение, предоставляющее интерфейс к разработанному веб-сервису. В коллекции необходимо хранить объекты класса City, описание которого приведено ниже:.
public class City {
private Long id; //Поле не может быть null, Значение поля должно быть больше 0, Значение этого поля должно быть уникальным, Значение этого поля должно генерироваться автоматически
private String name; //Поле не может быть null, Строка не может быть пустой
private Coordinates coordinates; //Поле не может быть null
private java.time.ZonedDateTime creationDate; //Поле не может быть null, Значение этого поля должно генерироваться автоматически
private float area; //Значение поля должно быть больше 0
private int population; //Значение поля должно быть больше 0
private int metersAboveSeaLevel;
private Double timezone; //Значение поля должно быть больше -13, Максимальное значение поля: 15
private Government government; //Поле не может быть null
private StandardOfLiving standardOfLiving; //Поле может быть null
private Human governor; //Поле может быть null
}
public class Coordinates {
private Integer x; //Значение поля должно быть больше -60, Поле не может быть null
private Long y; //Максимальное значение поля: 498, Поле не может быть null
}
public class Human {
private double height; //Значение поля должно быть больше 0
private java.time.LocalDateTime birthday;
}
public enum Government {
CORPORATOCRACY,
PUPPET_STATE,
NOOCRACY,
TELLUROCRACY;
}
public enum StandardOfLiving {
ULTRA_HIGH,
HIGH,
MEDIUM,
LOW;
}
-
Веб-сервис должен удовлетворять следующим требованиям:
• API, реализуемый сервисом, должен соответствовать рекомендациям подхода RESTful.
• Необходимо реализовать следующий базовый набор операций с объектами коллекции: добавление нового элемента, получение элемента по ИД, обновление элемента, удаление элемента, получение массива элементов.
• Операция, выполняемая над объектом коллекции, должна определяться методом HTTP-запроса.
• Операция получения массива элементов должна поддерживать возможность сортировки и фильтрации по любой комбинации полей класса, а также возможность постраничного вывода результатов выборки с указанием размера и порядкового номера выводимой страницы.
• Все параметры, необходимые для выполнения операции, должны передаваться в URL запроса.
• Данные коллекции, которыми управляет веб-сервис, должны храниться в реляционной базе данных.
• Информация об объектах коллекции должна передаваться в формате xml.
• В случае передачи сервису данных, нарушающих заданные на уровне класса ограничения целостности, сервис должен возвращать код ответа http, соответствующий произошедшей ошибке.
• Веб-сервис должен быть "упакован" в веб-приложение, которое необходимо развернуть на сервере приложений WildFly.
-
Помимо базового набора, веб-сервис должен поддерживать следующие операции над объектами коллекции:
• Вернуть массив объектов, значение поля name которых содержит заданную подстроку.
• Вернуть массив объектов, значение поля metersAboveSeaLevel которых больше заданного.
• Вернуть массив уникальных значений поля metersAboveSeaLevel по всем объектам.
Эти операции должны размещаться на отдельных URL.
-
Помимо базового набора, веб-сервис должен поддерживать следующие операции над объектами коллекции:
• Клиентское приложение может быть написано на любом веб-фреймворке, который можно запустить на сервере helios.
• Клиентское приложение должно обеспечить полный набор возможностей по управлению объектами коллекции, предоставляемых веб-сервисом -- включая сортировку, фильтрацию и постраничный вывод.
• Клиентское приложение должно преобразовывать передаваемые сервисом данные в человеко-читаемый вид -- параграф текста, таблицу и т.д.
• Клиентское приложение должно информировать пользователя об ошибках, возникающих на стороне сервиса, в частности, о том, что сервису были отправлены невалиданые данные.