Text Wrangler
Text-Wrangler-App zur Transformation von CSV-Daten, wie durch maßgeschneiderte Antlr4 DSL angegeben.
Verwendung
- Führen Sie
mvn package aus, um den Antlr4 -Parser zu generieren - Importieren Sie das MySQL -Schema in
main/java/resources/schema.sql - Aktualisieren Sie die MySQL -Verbindungsdetails in
main/java/resources/configuraiton.ini - Beginnen Sie mit App.java, um eine Demonstration zur Verwendung der Bibliothek zu demonstrieren
Transformationen DSL
- Eine Probe DSL für Transformationen ist in
main/java/resources/transformations.dsl bereitgestellt. - Die Grammatik und der Lexer
srcmainantlr4orgluisaminiwrangler die die DSL -Regeln und die Syntax beschreiben
Regex -Grammatik
- Java Regex -Muster werden unterstützt, mit deren Daten überspringen können
- Darüber hinaus werden Zuckermuster durch einen zugeordneten Muster -Util unterstützt
CSV -Parser
- Antlr4 wird auch zum Parsen von CSV verwendet
- Eine Grammatik- und Lexer -Desciving -CSV -Parsing -Regeln finden Sie in
srcmainantlr4orgluisaminiwrangler
CSV -Daten
- CSV -Datenprobe befindet sich in
main/java/resources/orders.csv - Aus diesem Beispiel werden keine Bestellungen erstellt
- Datenwerte, die nicht mit dem bereitgestellten Muster übereinstimmen (falls einer), werden übersprungen
Annahmen
- CSV -Daten haben eine Header -Zeile mit Feldnamen
Tests
- App.java läuft und speichert Bestellungen für die angegebenen Daten und DSL -Beispiele.
Abhängigkeiten
- Mariadb als JBDC -Fahrer
- ANTLR4 für DSL- und CSV -Verarbeitung und Parsenunterstützung
- Junit für Unit -Tests
Javadoc
- Javadoc befindet sich unter dem Ordner "DOC", der zusätzliche Nutzung, Annahmen und Implementierungsnotizen enthält
Zukünftige Arbeit
- Refactor, um die Typ -Bestellung (Details im Quellcode mit // Todo -Kommentaren angegeben) abstrahieren zu können.
- Erstellen Sie ein Dienstprogramm zur Unterstützung des Datenbankschemaserstellers aus dem DSL- oder Importschema aus der Datenbank (am meisten, um eine Abhängigkeit wie QueryDSL einzubringen und es so zu erweitern, dass es den Zweck entspricht).
- Erweitern Sie die DSL -Grammatik/die DSL
- Erweitern Sie die DSL -Grammatik/das Lexer, damit ein Filter Regex -Konstrukt, mit dem ein Benutzer nur die Objekte analysieren kann, die mit diesem Filter übereinstimmen, analysieren
- Erweitern Sie, um andere DB -Sprachen zu unterstützen. Zum Beispiel wäre es sehr interessant, Redis zu unterstützen
- Erweitern Sie, um MAP <> Prozessor zu reduzieren, um die parallele Arbeit mit BigData zu ermöglichen
- Erweitern Sie, um reaktive Streams und Verlag/Abonnenten zu unterstützen
- Fügen Sie die richtige JUNIT -Testsuite mit einer Vielzahl von Beispielen hinzu
- Bereitstellung ordnungsgemäße technische Dokumentation wie Klassendiagramm und Interaktionsdiagramme