Вот пошаговое описание того, что происходит в программе:
-
Импорт библиотек:
В начале программы импортируются необходимые библиотеки, включая библиотеку Gson, которая используется для работы с JSON.
-
Определение класса Main:
Создается класс
Main
, который содержит методmain
и другие методы для выполнения операций с JSON-файлами. -
Инициализация переменных:
VALUES_MAP
- это хэш-карта, используемая для хранения соответствий идентификаторов и их значений.gson
- объект Gson, используется для преобразования JSON-данных в объекты Java и обратно.
-
Метод
main
:- Создаются три объекта Scanner (
scanTest
,scanValue
,scanReport
), которые используются для ввода путей к файлам тестов, значений и результирующего файла. - Пользователю предлагается ввести путь к файлу с тестами, путь к файлу со значениями и путь, по которому будет сохранен результат.
- Заданный путь к результирующему файлу зависит от операционной системы.
- В блоке
try
начинается обработка файлов и JSON-данных:- Читаются данные из файла с тестами и значений с помощью объектов
FileReader
. - Создается объект
PrintWriter
для записи результата в файлreport.json
. - Создается объект Gson, который будет использоваться для преобразования JSON-данных.
- Данные из файла с значениями (
values.json
) преобразуются в объектValues
. - Значения из
values
добавляются вVALUES_MAP
, где ключ - это идентификатор, а значение - результат. - Данные из файла с тестами (
tests.json
) преобразуются в объектTests
. - Запускается метод
setValues
, который обновляет значения в тестах на основеVALUES_MAP
. - Создается объект Gson с настройкой на красивый вывод и преобразуется обновленный объект
Tests
в JSON-строку. - JSON-строка записывается в результирующий файл
report.json
. - В конце выводится сообщение о успешном сохранении файла.
- Читаются данные из файла с тестами и значений с помощью объектов
- Создаются три объекта Scanner (
-
Метод
setValues
:- Этот метод рекурсивно проходит по всем тестам и их дочерним тестам.
- Если идентификатор теста соответствует ключу в
VALUES_MAP
, значение устанавливается в соответствии сVALUES_MAP
. - Если у теста есть дочерние тесты (
test.getValues() != null
), метод вызывается для каждого из них.
-
Метод
getJsonFile
:- Этот метод используется для чтения содержимого JSON-файла по указанному пути.
- Строки из файла читаются и объединяются в одну строку, которая возвращается как результат.
-
Примечания:
- Программа ожидает, что файлы
tests.json
иvalues.json
находятся в корневой папке проекта. - Пользователю предоставляется возможность указать путь, по которому будет сохранен результат.
- Измените путь к библиотеке Gson в команде запуска, чтобы указать правильное расположение JAR-файла библиотеки.
- Программа ожидает, что файлы
-
Классы для хранения данных из .json файлов по нужным свойствам для формирования файла - report.json Test.java Tests.java Value.java Values.java