Основная бизнес-логика проекта представляет собой консольное приложение, которое выполняет следующие действия:
- Чтение файла (поддерживаемые форматы txt/json/xml) и парсинг из этих файлов математических выражений. Есть на выбор 2 механизма для парсинга:
-
- с помощью сведения выражения к постфиксной форме записи и подсчету значения по правилам постфиксной формы записи (сложность выражения: сложение, вычитание, умножение, деление и поддержка скобок);
-
- с помощью библиотеки exp4j (сложность выражения: любая).
- Запись вычисленных математических выражений в файл (поддерживаемые форматы txt/json/xml).
- Архивация файла (поддерживаемые форматы zip/rar/jar).
- Извлечение из архива файла (поддерживаемые форматы zip/rar/jar).
- Шифрование/расшифрование файла (алгоритм AES).
Для каждого пункта написаны Unit-Тесты с помощью библиотеки JUnit (в папке src/test 49 тестов).
Примечания:
- Конвертация файла в определенный формат (txt/json/xml или zip/rar/jar) реализована шаблоном проектирования Builder.
- Для работы с JSON расширением используется Maven-библиотека Jackson.
- Для работы с XML расширением используется технология Streaming API for XML (StAX).
- Для работы с ZIP, RAR, JAR расширениями используются стандартные Java-утилиты.
- Примеры структуры файлов для парсинга находятся в папке examples.
- Вложенность любая (например архивация + архивация + шифрование + архивация).
Директория ExamProjectWebUI.
Вся логика поддерживается стандартным консольным интерфейсом. Для его активации необходимо в качестве запускаемой конфигурации установить файл src/main/java/exam/project/cli/Main.java.
Работа выполняется с файлами, лежащими в основной директории проекта.
Директория ExamProjectGraphicUI.
Вся логика поддерживается Desktop-интерфейсом. Интерфейс реализован при помощи библиотеки JavaFX. Спектр возможностей шире чем у CLI, так как при нажатии на кнопку "Choose File" пользователю предлагается выбрать файл из любой директории на компьютере. Результат сохраняется в ту же директорию, в которой находился исходный файл.
Ниже представлен внешний вид GUI:
Директория ExamProjectWebUI.
Вся логика поддерживается Web-интерфейсом. Реализован WebUI с помощью технологии Spring Model-View-Controller на основе Tomcat 9.0 (используемое ядро находится в папке server).
- BackEnd-часть реализована с помощью Spring Framework и архитектуры REST (поддерживаются GET-запросы для получения инфорации об элементе меню и POST-запросы для выгрузки файлов на сервер).
- FrontEnd-часть реализована с помощью HTML & немного CSS.
Спектр возможностей шире чем у GUI, так как пользователь может выбрать для загрузки на сервер файл из любой директории и также скачать файл-результат в любую директорию.
Для функционала WebUI, в частности MVC, написаны Unit-Тесты с помощью библиотеки JUnit + MockMVC (Mock Framework) (Файл MVCTests.java, 12 тестов).
Ниже GIF, демонстрирующее работу WebUI:

