yoLUkAsss / rentauto

Base para todos los TP de la materia
0 stars 0 forks source link

Uso de filter y metodos mas declarativos #14

Open aitrusgit opened 9 years ago

aitrusgit commented 9 years ago

Fijense cuanto mejor queda esto

    def consultaDeReserva(Ubicacion ubicacionInicial, Ubicacion ubicacionFinal, Date fechaInicio, Date fechaFinal, Categoria categoria) {
        SessionManager.runInSession[|
            var List<Auto> autosTotales = new AutoHome().obtenerTodosLosAutosDeCategoria(categoria);
            var List<Auto> autosADevolver = new ArrayList<Auto>();
            for(Auto each : autosTotales){
                if( each.ubicacionParaDia(fechaInicio).equals(ubicacionInicial) && each.estaLibre(fechaInicio,fechaFinal)){
                    autosADevolver.add(each);
                }
            }
            return autosADevolver

        ]
    }

Escrito asi:

    def consultaDeReserva(Ubicacion ubicacionInicial, Ubicacion ubicacionFinal, Date fechaInicio, Date fechaFinal, Categoria categoria) {
        SessionManager.runInSession[|
            var List<Auto> autosTotales = new AutoHome().obtenerTodosLosAutosDeCategoria(categoria);
            autosTotales.filter[ it.ubicacionParaDia(fechaInicio).equals(ubicacionInicial) && it.estaLibre(fechaInicio,fechaFinal)]
        ]
    }

Se entiende a simple vista que si intencion es filtrar la coleccion original. Las estructuras de control (el for en este caso) no ensucia el codigo