Saya sedang mengembangkan proyek yang akan membaca data tertentu dalam format kepemilikan, mengumpulkannya ke dalam struktur data Groovy terpadu, dan menuliskannya dalam format XML yang rapi (atau, JSON, belum diputuskan). Saya benar-benar pemula di Groovy, tetapi, proyeknya adalah proyek pembuatan Ant, Groovy tampaknya merupakan cara terbaik untuk melakukannya.
Sejauh ini baik-baik saja, saya dapat membaca data, membuat struktur atom, menggabungkannya menggunakan operator >>, dan membuangnya dengan mulus ke XML dengan MarkupBuilder (jauh lebih mudah daripada jika saya melakukannya di Java). Namun, sekarang saya terjebak pada titik ketika saya perlu sedikit memodifikasi struktur yang dikumpulkan, atau melintasinya untuk menyusun beberapa data agregat.
Sebagai ilustrasi, misalkan kita mengumpulkan data sehingga setara dengan:
def inventory = {
car (make: "Subaru", model: "Impreza WRX", year: 2010, color: "Blue") {
feature ("Premium sound")
feature ("Brembo brakes")
bug ("Leaks oil")
bug ("Needs new transmission")
}
car (make: "Jeep", model: "Wrangler", year: 13, awd: true) {
feature ("Soft top")
bug ("Doesn't start")
bug ("Flooded")
}
// blahblahblah
}
dan kami mencoba mencapai hal berikut, misalnya:
- Hapus semua item "bug" (misalkan, kami sedang membuat daftar untuk dipublikasikan di situs web dealer kami). Atau, semua "fitur" (jika itu untuk regu perbaikan pra-penjualan kami).
- Periksa daftarnya dan pastikan semua atribut "tahun" terdiri dari 4 digit
- Hapus semua atribut "awd", pindahkan ke daftar "fitur".
jadi kita berakhir dengan struktur seperti ini:
def inventory = {
car (make: "Subaru", model: "Impreza WRX", year: 2010, color: "Blue") {
feature ("Premium sound")
feature ("Brembo brakes")
}
car (make: "Jeep", model: "Wrangler", year: 2013) {
feature ("AWD")
feature ("Soft top")
}
// blahblahblah
}
Sebenarnya, saya baik-baik saja dengan menelusuri struktur asli dan membuat daftar baru (data saya tidak terlalu besar sehingga memerlukan pengeditan di tempat), tetapi bagaimana cara saya menelusuri struktur ini?
Oh, dan pertanyaan tentang terminologi. Mungkin, saya baru saja mencari kata kunci yang salah di Google... Entitas ini seperti yang didefinisikan dalam kode: apakah disebut "penutupan" juga, atau ada istilah lain untuk itu?