Текст Wrangler
Приложение Text-Wrangler для преобразования данных CSV, как указано в Bespoke Antlr4 DSL.
Использование
- Запустите
mvn package , чтобы генерировать анализатор ANTLR4 - Импортировать схему MySQL в
main/java/resources/schema.sql - Обновите данные соединения MySQL в
main/java/resources/configuraiton.ini - Начните на app.java для демонстрации того, как использовать библиотеку
Преобразования DSL
- Образец DSL для преобразований представлен в
main/java/resources/transformations.dsl - Грамматика и Лекер, описывающие правила DSL и синтаксис, могут быть основаны в
srcmainantlr4orgluisaminiwrangler
Грамматика корзины
- Поддерживаются шаблоны режима Java, которые можно использовать для пропуска данных
- Кроме того, схемы сахара поддерживаются с помощью утилита с карт -карт.
CSV Parser
- ANTLR4 также используется для анализа CSV
- Описание грамматики и лексер
srcmainantlr4orgluisaminiwrangler
Данные CSV
- Образец данных CSV находится в
main/java/resources/orders.csv - Из этой выборки не созданы заказы
- Значения данных, которые не соответствуют предоставленной шаблоне (если один) пропущены
Предположения
- Данные CSV имеют строку заголовка с именами поля
Тесты
- App.java запускает и сохраняет заказы для данных данных и образцов DSL.
Зависимости
- MariaDB как водитель JBDC
- ANTLR4 для DSL и CSV -обработки и поддержки диапазона
- Юнит для модульных тестов
Javadoc
- Javadoc находится под папкой «Док», содержащий дополнительное использование, предположения и заметки внедрения
Будущая работа
- Рефактор, чтобы абстрагировать порядок типа (подробности, приведенные в исходном коде, помеченном // Комментарии TODO), что позволяет легко использовать для повторного использования для других типов данных
- Создайте утилиту для поддержки создания схемы базы данных из DSL или схемы импорта из базы данных (наиболее предпочитая, чтобы вызвать зависимость, такую как QueryDsl и расширить ее, чтобы соответствовать цели)
- Расширить грамматику/лексер DSL, чтобы позволить настройку форматеров для представления целевого объекта в stdout
- Расширить грамматику/лексер DSL, чтобы разрешить конструкцию режима фильтра, которая позволяет пользователю анализировать только те объекты, которые соответствуют этим фильтрую
- Например, вы можете поддержать другие языки БД, было бы довольно интересно поддержать Redis
- Расширить, чтобы поддержать карту <> уменьшить процессор, чтобы разрешить параллельную работу с BigData
- Расширение на поддержку реактивных потоков и издателей/подписчиков
- Добавьте правильный набор для испытаний JUNIT с богатым набором примеров
- Предоставьте надлежащую техническую документацию, такую как диаграмма классов и диаграммы взаимодействия