Por varias razones he tenido que procesar un fichero en CSV sencillo y para ello me aproveche de ciertas facilidades de Groovy. A continuación pongo el código utilizado.
Código de la clase de dominio que almacena:
[groovy]
class Pais {
def descripcion
}
[/groovy]
Código del procesado:
[groovy]
def pathTemporal = System.getProperty("java.io.tmpdir")
def pathFichero = pathTemporal + ‘/pais.csv’
def fich = new File (pathFichero)
def array = fich.readBytes()
def cadena = new String (array)
def lista = cadena.replace(‘\n’,’#’).tokenize(‘#’)
def patron = []
def primera = true
lista.each {linea->
def lineaProcesada = linea.tokenize(‘;’)
if (primera == true) {
patron = lineaProcesada
primera = false
} else {
def mapa = [:]
def valores = lineaProcesada
def i = 0
patron.each{clave->
if ((clave?.trim()?.size() > 0) || (valores[i]?.trim()?.size() > 0)) {
mapa."$clave" = valores[i]
i++
}
}
def temp = new Pais (mapa)
}
}
[/groovy]