Text
Application Text-Wrangler pour transformer les données CSV telles que spécifiées par ANTLR4 DSL sur mesure.
Usage
- Exécutez
mvn package pour générer l'analyseur Antlr4 - Importez le schéma MySQL dans
main/java/resources/schema.sql - Mettez à jour les détails de la connexion MySQL dans
main/java/resources/configuraiton.ini - Commencez sur app.java pour une démonstration sur la façon d'utiliser la bibliothèque
Transformations dsl
- Un échantillon de DSL pour les transformations est fourni dans
main/java/resources/transformations.dsl - La grammaire et le lexer décrivant les règles et la syntaxe DSL peuvent être fondées dans
srcmainantlr4orgluisaminiwrangler
Grammaire regex
- Les modèles Java Regex sont pris en charge, qui peuvent être utilisés pour sauter des données
- De plus, les modèles de sucre sont soutenus par un modèle cartographié Util
Analyseur de CSV
- Antlr4 est également utilisé pour l'analyse du CSV
- Une grammaire et des règles de l'analyse CSV de la grammaire peuvent être trouvées dans
srcmainantlr4orgluisaminiwrangler
Données CSV
- L'échantillon de données CSV est en
main/java/resources/orders.csv - Aucune commande n'est créée à partir de cet échantillon
- Les valeurs de données qui ne correspondent pas au modèle fourni (si un) sont ignorés
Hypothèses
- Les données CSV ont une ligne d'en-tête avec des noms de champ
Tests
- App.java exécute et enregistre les commandes pour les données données et les échantillons DSL.
Dépendances
- Mariadb en tant que pilote JBDC
- ANTLR4 pour le traitement DSL et CSV et le support d'analyse
- Junit pour les tests unitaires
Javadoc
- Javadoc est sous le dossier «Doc», contenant une utilisation supplémentaire, des hypothèses et des notes de mise en œuvre
Travail futur
- Refactor afin de résumer l'ordre de type (détails donnés dans le code source marqué avec // commentaires de todo), ce qui permet de réutiliser facilement un autre type de données
- Créez un utilitaire pour prendre en charge la création de schéma de base de données à partir du DSL ou du schéma d'importation à partir de la base de données (la plupart pour apporter une dépendance telle que QueryDSL et l'étendre pour s'adapter à l'objectif)
- Étendre la grammaire DSL / Lexer pour permettre la configuration des formateurs pour la représentation de l'objet cible dans STDOUT
- Étendre la grammaire DSL / Lexer pour permettre une construction regex du filtre qui permet à un utilisateur d'analyser uniquement les objets qui correspondent à ce filtre
- Étendre pour soutenir d'autres langues DB, par exemple, il serait assez intéressant de soutenir Redis
- Étendre pour soutenir la carte <> Réduire le processeur afin de permettre au parallèle de travailler avec BigData
- Étendre pour soutenir les flux réactifs et l'éditeur / abonnés
- Ajouter une suite de test Junit appropriée avec un ensemble riche d'exemples
- Fournir une documentation technique appropriée, comme le diagramme de classe et les diagrammes d'interaction