Teks Wrangler
Aplikasi Text-Wrangler untuk mengubah data CSV sebagaimana ditentukan oleh Bespoke ANTLR4 DSL.
Penggunaan
- Jalankan
mvn package untuk menghasilkan parser antlr4 - Impor Skema MySQL di
main/java/resources/schema.sql - Perbarui Detail Koneksi MySQL di
main/java/resources/configuraiton.ini - Mulailah di app.java untuk demonstrasi tentang cara menggunakan perpustakaan
Transformasi DSL
- Sampel DSL untuk Transformasi disediakan di
main/java/resources/transformations.dsl - Tata bahasa dan lexer yang menggambarkan aturan dan sintaksis DSL dapat didirikan di
srcmainantlr4orgluisaminiwrangler
Tata Bahasa Regex
- Pola Java Regex didukung, yang dapat digunakan untuk melewatkan data
- Selain itu, pola gula didukung melalui util pola yang dipetakan
Parser CSV
- Antlr4 juga digunakan untuk parsing CSV
- Aturan penguraian tata bahasa dan lexer descriving csv dapat ditemukan di
srcmainantlr4orgluisaminiwrangler
Data CSV
- Sampel Data CSV ada di
main/java/resources/orders.csv - Tidak ada pesanan yang dibuat dari sampel ini
- Nilai data yang tidak cocok dengan pola yang disediakan (jika satu) dilewati
Asumsi
- Data CSV memiliki baris header dengan nama lapangan
Tes
- App.java menjalankan dan menyimpan pesanan untuk data yang diberikan dan sampel DSL.
Dependensi
- Mariadb sebagai pengemudi JBDC
- Antlr4 untuk pemrosesan DSL dan CSV dan dukungan parsing
- Junit untuk tes unit
Javadoc
- Javadoc berada di bawah folder 'Doc', berisi penggunaan tambahan, asumsi dan catatan implementasi
Pekerjaan di masa depan
- Refactor untuk abstrak jenis urutan (detail yang diberikan dalam kode sumber yang ditandai dengan // komentar todo), sehingga memungkinkan untuk dengan mudah menggunakan kembali jenis data lainnya
- Buat utilitas untuk mendukung pembuatan skema database dari DSL atau skema impor dari database (paling mirip untuk membawa ketergantungan seperti querydsl dan memperluasnya agar sesuai dengan tujuan)
- Perpanjang tata bahasa DSL/Lexer untuk memungkinkan pengaturan pengaturan untuk representasi objek target di stdout
- Perpanjang tata bahasa DSL/lexer untuk memungkinkan konstruk regex filter yang memungkinkan pengguna hanya menguraikan objek yang cocok dengan filter itu
- Luas untuk mendukung bahasa DB lainnya, misalnya, akan sangat menarik untuk mendukung Redis
- Luas untuk mendukung peta <> Mengurangi prosesor untuk memungkinkan kerja paralel dengan BigData
- Luas untuk mendukung aliran reaktif dan penerbit/pelanggan
- Tambahkan suite tes jUnit yang tepat dengan serangkaian contoh yang kaya
- Berikan dokumentasi teknis yang tepat, seperti diagram kelas dan diagram interaksi