yoLUkAsss / rentauto

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

Auto.reservas debe ser persistido como lista #12

Open aitrusgit opened 9 years ago

aitrusgit commented 9 years ago

Mucho del código de la clase Auto confía en que las Reservas estén ordenadas por cierto criterio.

    def ubicacionParaDia(Date unDia){
        val encontrado = reservas.findLast[ it.fin <= unDia ]
        if(encontrado != null){
            return encontrado.destino
        }else{
            return ubicacionInicial
        }
    }

En memoria, cuando una reserva se agrega al auto este fuerza el criterio de ordenación.

    def agregarReserva(Reserva reserva){
        reserva.validar
        reservas.add(reserva)
        reservas.sortInplaceBy[inicio]
    }

Ustedes necesitan asegurarse que este criterio no se "rompa" cuando persistan en la base. La forma de hacer eso es no usando un bag sino un list para este asunto:

        <bag name="reservas" cascade="save-update" inverse="true">
            <key column="auto" />
            <one-to-many class="ar.edu.unq.epers.model.Reserva" />
        </bag>
aitrusgit commented 9 years ago

Eso si, si mapean la propiedad como <list> van a tener que usar inverse=false

        <list name="reservas" cascade="save-update" inverse="false">
            <key column="auto" />
            <list-index column="orden"></list-index>
            <one-to-many class="ar.edu.unq.epers.model.Reserva" />
        </list>