-
Заменил метод
PrintReport
в классеProgram
на несколько мини классов-билдеров (DataRowBuilder
,HeaderRowBuilder
,RowTemplateBuilder
), класс-директор для билдеров (RowBuilderDirector
) и глобальный класс-билдер (ReportBuilder
), который агрегирует все возвращаемые значения мини-билдеров. Таким образом удалось добиться более прозрачного и настраиваемого вывода репорта на консоль. -
Реализовал паттерн
ChainOfResponsibility
. Для этого расширил функционалReportService
'ов и написал класс-клиентExtensionHandler
, который соединяет в цепочку конкретные хендлеры. Заменил вызов методовGetReportService
иCreateReport
в классеProgram
, вызовом методаCreateReport
нового классаExtensionHandler
. Таким образом облегчил дальнейшее внедрение обработки новых расширений файлов -
Выполнил пожелания пользователей и сделал возможность убирать из отчёта столбцы «Объём упаковки», «Масса упаковки», «Стоимость», «Количество» за это отвечают агрументы запуска "
-withoutVolume
", "-withoutWeigth
", "-withoutCost
", "-withoutCount
" -
Выполнил пожелание пользователей, когда указан один из флагов «
withIndex
», «withTotalVolume
» «withTotalWeight
», но не указан «data
» - выводится жёлтым цветом "WARNING"