Wrangler de texto
Text-Wrangler App para transformar los datos de CSV según lo especificado por ANTLR4 DSL a medida.
Uso
- Ejecute
mvn package para generar el analizador ANTLR4 - Importar el esquema MySQL en
main/java/resources/schema.sql - Actualice los detalles de la conexión MySQL en
main/java/resources/configuraiton.ini - Comience en App.java para una demostración sobre cómo usar la biblioteca
Transformaciones DSL
- Se proporciona una muestra DSL para transformaciones en
main/java/resources/transformations.dsl - La gramática y el lexer que describen las reglas DSL y la sintaxis se pueden fundar en
srcmainantlr4orgluisaminiwrangler
Gramática regex
- Se admiten los patrones Java Regex, que se pueden usar para omitir datos
- Además, los patrones de azúcar se admiten a través de un patrón mapeado utilizado
Parser de CSV
- ANTLR4 también se usa para analizar CSV
- Se pueden encontrar reglas de análisis CSV de gramática y lexer en
srcmainantlr4orgluisaminiwrangler
Datos de CSV
- La muestra de datos de CSV está en
main/java/resources/orders.csv - No se crean pedidos a partir de esta muestra
- Se omiten los valores de datos que no coinciden con el patrón proporcionado (si es uno)
Suposiciones
- Los datos de CSV tienen una fila de encabezado con nombres de campo
Pruebas
- App.java ejecuta y guarda pedidos para los datos dados y las muestras DSL.
Dependencias
- Mariadb como conductor de JBDC
- ANTLR4 para el procesamiento de DSL y CSV y soporte de análisis
- Junit para pruebas unitarias
Javadoc
- Javadoc está en la carpeta 'DOC', que contiene un uso adicional, supuestos y notas de implementación
Trabajo futuro
- Refactor para abstrae el orden de tipo (detalles dados en el código fuente marcado con // comentarios de TODO), lo que permite reutilizar fácilmente otro tipo de datos
- Cree una utilidad para admitir la creación del esquema de la base de datos desde el esquema DSL o de importación de la base de datos (lo más probable es traer una dependencia como consulta y extenderlo para que se ajuste al propósito)
- Extienda la gramática/lexer DSL para permitir la configuración de formatúas para la representación del objeto objetivo en stdout
- Extienda la gramática/lexer DSL para permitir una construcción de filtro regex que permita a un usuario analizar solo los objetos que coinciden con ese filtro
- Extender para apoyar otros idiomas de DB, por ejemplo, sería bastante interesante apoyar a Redis
- Extender para admitir el mapa <> reducir el procesador para permitir el trabajo paralelo con BigData
- Extenderse para admitir transmisiones reactivas y editores/suscriptores
- Agregue la suite de prueba Junit adecuada con un rico conjunto de ejemplos
- Proporcionar documentación técnica adecuada, como diagrama de clase y diagramas de interacción