https://github.com/taker1974/tk-flights
Тестовое задание для старта трудоустройства № 2
https://github.com/taker1974/tk-flights
java streamapi test
Last synced: 10 months ago
JSON representation
Тестовое задание для старта трудоустройства № 2
- Host: GitHub
- URL: https://github.com/taker1974/tk-flights
- Owner: taker1974
- Created: 2025-09-10T09:54:43.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-10T09:56:29.000Z (10 months ago)
- Last Synced: 2025-09-10T13:20:39.297Z (10 months ago)
- Topics: java, streamapi, test
- Language: Java
- Homepage:
- Size: 54.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: ReadMe.md
Awesome Lists containing this project
README
# tk-flights
## О модуле
Тестовое задание для старта трудоустройства № 2.
Условия задания смотри в [Conditions.md](https://github.com/taker1974/tk-flights/blob/main/Conditions.md).
Анализ задания смотри в [Analysis.md](https://github.com/taker1974/tk-flights/blob/main/Analysis.md).
Базовые классы Segment и Flight были доработаны для лучшей тестируемости.
Базовые классы Segment и Flight не дорабатывались на предмет сортировки сегментов, валидации, вычислениях на вставке и т.п. - ставилась задача фильтрации готовых данных.
Фильтры - отдельные классы, реализующие функциональный интерфейс FlightFilter с методом process(..).
process() может принимать произвольные параметры, что позволяет адаптировать логику каждой реализации под специфические задачи.
В реализации фильтров и при их использовании максимально использованы стримы, что позволяет при необходимости распараллелить обработки. (В этой реализации не распараллеливается фильтр по времени на земле, но возможно простая реализация алгоритма на стримах - см. комментарий в коде.)
Весь вывод текста использует slf4j + logback-classic. Смотри logback.xml.
Все новые и изменённые классы покрыты тестами.
Проект документирован javadoc.
## Применяемые технологии
Java 21, openjdk,
Stream API, JUnit, JavaDoc,
Fedora Linux 42, VS Code,
DeepSeek, GigaCode, git.
## Быстрый старт
В корне модуля:
```Bash
$mvn clean package
$java -jar target/tk-flights-1.0.0.jar
```
## Подготовка к развёртыванию на узле
**Требуемое ПО**:
- Java >= 21.
Версии ПО могут быть другими. При разработке используется Java 21.
Нет явных ограничений на использование других версий ПО.
**Java**:
- установить JDK или JRE версии не ниже 21 (разработка ведётся на версии 24: нет явных ограничений на использование других версий Java);
- убедиться в правильности установки, в доступности java, javac, maven (mvn);
- **важно** установить переменную JAVA_HOME (в ~/.bashrc, например):
```Bash
$export JAVA_HOME=/usr/lib/jvm/java-24-openjdk
```
При возникновении сложностей при работе с openjdk-24 можно откатиться на openjdk-21: просто замените во всех pom.xml версии 24 на 21.
## Запуск приложения
Смотри pom.xml. В корне проекта:
```Bash
$mvn clean package
$java -jar target/tk-flights-<ваша.версия.ПО>.jar
```
## Документация
### JavaDoc -> HTML
```Bash
mvn compile javadoc:javadoc
```
## Другое
### Проверка версий зависимостей
Добавьте плагин в pom.xml:
```xml
org.codehaus.mojo
versions-maven-plugin
2.16.2
```
Запустите проверку:
```bash
mvn versions:display-dependency-updates
```
Плагин _versions-maven-plugin_ позволяет обновить версии в pom.xml автоматически:
```bash
mvn versions:use-latest-versions
```
После выполнения проверьте изменения в pom.xml.
**Ограничения**
SNAPSHOT-версии: Плагин _versions-maven-plugin_ игнорирует их по умолчанию.
Используйте флаг -DallowSnapshots=true, чтобы их включить.
Кастомные репозитории: Если артефакт размещен не в Maven Central, убедитесь, что
репозиторий добавлен в pom.xml/settings.xml.