Приложение считывает все данные из соответствующих CSV-файлов (разделитель – запятая) при старте приложения.
Приложение записывает все данные из оперативной памяти в CSV-файлы при завершении работы приложения.
Во время работы приложения ему запрещено взаимодействовать с файловой системой в другие моменты времени.
Имя файла с исходными данными передаётся приложению с ключом --templates-file
Id,SideA,SideB,SideC
4ae25b32-d794-4560-8a08-5e6d09a19c33,1,2,5
22f9f6c1-82af-4681-b92e-a3510ecee4b5,2,3,5
0c96ea19-fa65-499a-80ad-ea0c86b2a5e0,2,3,4
Имя файла с исходными данными передаётся приложению с ключом --triangles-file
Id,Template,RegistrationDateTime,BorderColor,FillColor,Description
66ade672-2301-4408-9471-8a17aa883d65,4ae25b32-d794-4560-8a08-5e6d09a19c33,2024-08-26T19:01:41.114511727,GREEN,RED,"странные данные, это неправильный треугольник"
a6be5e23-b8d4-4d78-8aa3-1c204d0befc8,22f9f6c1-82af-4681-b92e-a3510ecee4b5,2024-07-10T17:26:41.129567382,RED,GREEN,"точки расположены на отрезке"
baa30333-23d6-4eba-a8ed-7c235adf4228,0c96ea19-fa65-499a-80ad-ea0c86b2a5e0,2024-07-27T00:10:41.129642513,RED,GREEN,"обычный треугольник"
Приложение запускается с помощью системы сборки Gradle, обязательные параметры:
--templates-file – имя файла со списком шаблонов;--triangles-file – имя файла со списком треугольников;--port – порт, по которому доступен веб-сервер. ./gradlew run --args="--templates-file ../sample-data/templates.csv --triangles-file ../sample-data/triangles.csv --port 9000"
Веб-сервер запускается и работает только при получении корректных значений всех параметров. При некорректном значении хотя бы одного параметра приложение выводит соответствующее сообщение об ошибке и завершает работу с ненулевым кодом возврата.
Error: missing option --triangles-file
Error: file not found «abc.csv»
Список упорядочен по возрастанию даты и времени регистрации и id.
| page | integer >= 1 Default: 1 Example: page=1 Номер страницы. Если номер превышает максимально возможный, приложение возвращает пустой список. Если номер передан и не является натуральным числом, приложение возвращает сообщение об ошибке. |
| records-per-page | integer Default: 10 Enum: 5 10 20 50 Example: records-per-page=10 Количество записей на странице. Если количество передано и не входит в указанный набор значений, приложение возвращает сообщение об ошибке. |
[- {
- "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "Description": "обыкновенный треугольник",
- "RegistrationDateTime": "2024-01-01T00:00:00"
}
]| triangle-id required | string <UUID> Example: de42a00f-7f43-4d10-808d-bee47fdeef49 идентификатор треугольника |
{- "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "Template": "4ae25b32-d794-4560-8a08-5e6d09a19c33",
- "SideA": 3,
- "SideB": 4,
- "SideC": 5,
- "RegistrationDateTime": "2024-01-01T00:00:00",
- "BorderColor": "BLACK",
- "FillColor": "BLACK",
- "Description": "обыкновенный треугольник",
- "Area": 6,
- "Type": "Остроугольный"
}Список упорядочен по возрастанию даты и времени регистрации и id.
| border-color required | string Enum: "BLACK" "WHITE" "RED" "GREEN" "BLUE" "YELLOW" "CYAN" "MAGENTA" "SILVER" "GRAY" "MAROON" "OLIVE" "DARKGREEN" "PURPLE" "TEAL" Example: border-color=BLACK Цвет границы треугольника |
| page | integer >= 1 Default: 1 Example: page=1 Номер страницы. Если номер превышает максимально возможный, приложение возвращает пустой список. Если номер передан и не является натуральным числом, приложение возвращает сообщение об ошибке. |
| records-per-page | integer Default: 10 Enum: 5 10 20 50 Example: records-per-page=10 Количество записей на странице. Если количество передано и не входит в указанный набор значений, приложение возвращает сообщение об ошибке. |
[- {
- "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "SideA": 3,
- "SideB": 4,
- "SideC": 5
}
]Обязательно должен быть передан хотя бы один из параметров.
Список упорядочен по возрастанию даты и времени регистрации и id.
| area-min | number <double> Example: area-min=0.0 нижняя граница площади (включительно) |
| area-max | number <double> Example: area-max=6.0 верхняя граница площади (включительно) |
| page | integer >= 1 Default: 1 Example: page=1 Номер страницы. Если номер превышает максимально возможный, приложение возвращает пустой список. Если номер передан и не является натуральным числом, приложение возвращает сообщение об ошибке. |
| records-per-page | integer Default: 10 Enum: 5 10 20 50 Example: records-per-page=10 Количество записей на странице. Если количество передано и не входит в указанный набор значений, приложение возвращает сообщение об ошибке. |
[- {
- "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "SideA": 3,
- "SideB": 4,
- "SideC": 5
}
]В выдаче присутствуют только те цвета и типы треугольника, которые есть в списке данных.
Списки упорядочены лексикографически по возрастанию значения поля Color или Type соответственно.
| by required | any Enum: "color" "type" "color,type" Example: by=color,type Тип запрашиваемой статистики.
|
[ ]| template-id required | string <UUID> Example: 4ae25b32-d794-4560-8a08-5e6d09a19c33 идентификатор шаблона |
{- "Id": "4ae25b32-d794-4560-8a08-5e6d09a19c33",
- "SideA": 3,
- "SideB": 4,
- "SideC": 5,
- "Area": 6,
- "Type": "Остроугольный"
}| Id | string <UUID> Уникальный идентификатор шаблона треугольника |
| SideA | integer >= 1 Длина первой стороны (натуральное число) |
| SideB | integer >= 1 Длина второй стороны (натуральное число) |
| SideC | integer >= 1 Длина третьей стороны (натуральное число) |
| Area | number or null (Площадь треугольника) Вычисляемое поле, отсутствует в файле с данными. |
| Type | string (Тип треугольника) Enum: "Некорректный" "Отрезок" "Остроугольный" "Прямоугольный" "Тупоугольный" Вычисляемое поле, отсутствует в файле с данными
|
{- "Id": "4ae25b32-d794-4560-8a08-5e6d09a19c33",
- "SideA": 3,
- "SideB": 4,
- "SideC": 5,
- "Area": 6,
- "Type": "Остроугольный"
}| Id | string <UUID> Уникальный идентификатор треугольника |
| Template | string <UUID> Шаблон треугольника (соответствует |
| RegistrationDateTime | string <date-time> Дата и время регистрации в системе |
| BorderColor | string (Color) Enum: "BLACK" "WHITE" "RED" "GREEN" "BLUE" "YELLOW" "CYAN" "MAGENTA" "SILVER" "GRAY" "MAROON" "OLIVE" "DARKGREEN" "PURPLE" "TEAL" Цвет границы из списка цветов |
| FillColor | string (Color) Enum: "BLACK" "WHITE" "RED" "GREEN" "BLUE" "YELLOW" "CYAN" "MAGENTA" "SILVER" "GRAY" "MAROON" "OLIVE" "DARKGREEN" "PURPLE" "TEAL" Цвет заливки из списка цветов |
| Description | string Описание треугольника |
{- "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "Template": "4ae25b32-d794-4560-8a08-5e6d09a19c33",
- "RegistrationDateTime": "2024-01-01T00:00:00",
- "BorderColor": "BLACK",
- "FillColor": "BLACK",
- "Description": "обыкновенный треугольник"
}