Hola Gustavo,
 
Hace unas semanas (o meses?) envie a esta lista mi conclusion sobre lo que
parecia ser un problema sin solucion.
 
Era una situacion muy parecida a la tuya, yo necesitaba que una coleccion
persistente estuviera ordenada. Luego de dar muchas vueltas con distintos
tipos de colecciones me di cuenta de que estaba cometiendo un error (al
menos en mi opinion).
 
Le estaba pidiendo a mi coleccion dos servicios: 1) soportar la persistencia
y 2) mantener un orden. La segunda responsabilidad estaba fuera de lugar
porque era una cuestion de logica de negocio (como sucende en tu caso). Me
di cuenta cuando pense que para una futura necesidad podia necesitar otro
orden distinto.
 
Lo que yo hice fue dejar la coleccion privada (lo cual hago usualmente) y
agregar un metodo o propiedad que me devolvia la coleccion ordenada por
algun criterio. Este metodo devolvia un array a partir de una coleccion que
ordenaba en memoria. Podes ver el codigo si encontras aquel post.
 
Vos podrias ir por el mismo camino o preguntarte si realmente necesitas
exponer la coleccion. Por ahi podes arreglarte con un metodo que devuelva el
proximo elemento encapsulando la logica de prioidad en ese metodo.
 
Este enfoque, en mi opinion, te da varias ventajas: a) no complicas la
persistencia, b) encapsulas la logica de prioridad, c) publicas menos
elementos de tu clase, d) si necesitaras otra logica de priridad en otro
momento no tenes mas que generar otro metodo.
 
Saludos
  
 <blocked::mailto:[EMAIL PROTECTED]> Buscamos desarrolladores .NET
Carlos Peix
[EMAIL PROTECTED] <blocked::mailto:[EMAIL PROTECTED]> 
tel: 4257-4622
cel: 15-4406-7571
 
  _____  

De: [email protected]
[mailto:[EMAIL PROTECTED] En nombre de Gustavo Ringel
Enviado el: Sábado, 21 de Junio de 2008 11:59 a.m.
Para: nhibernate-hispano
Asunto: [NHibernate-Hispano] <list> para cola ordenada con prioridades


Hi. Hoy en dia en mi aplicacion manejo una lista ordenada de objetos a ser
chequeados por estacion de trabajo.
Esta lista de objetos funciona LIFO, pero si llega un elemento de alta
prioridad y no hay otros objetos de alta prioridad en la lista el nuevo
objeto tiene que pasar a ser el primero de la lista.
 
hoy en dia para manejarlo en lo que hago es llevar la lista con posiciones
0, 1, 2, ... etc y si llega un objeto con prioridad minima le asigno
min(posicion) - 1, permito posiciones negativas y asi en algun momento puedo
tener -2, -1, 0, 1, 2, etc, en la lista.
 
bueno, hasta hoy en dia hacia esto con un bag...el cual por un lado me
permite insercion rapida en la lista, pero estoy obligado a hacer un sort
para recibirla como quiero.
 
Pense entonces una vez entendido el concepto usar un <list> ahora el
problema que tengo es que si inserto en el list en la posicion 0, me va a
hacer un update a todos los elementos subsecuentes para atrasarlos en la
lista...si tengo 70 o 80 objetos que es el maximo son 70 u 80 updates.
 
Contra eso sigue ganando mi algoritmo anterior + sort...el cual es bastante
menos costoso que 80 updates...
 
Pero si alguien tuviera idea de como setear al principio del list sin que
nhibernate actualice todos los objetos podria manejar el orden de la lista
sin agregar sort lo cual tiene algunas ventajas...
 
Ideas? Objeciones? 
 
Gustavo.




--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

Responder a