Buenos días Javier.
Existe otra posibilidad que no comentó Paco en sus correos que creo que
sería la más adecuada de implementar, aparte de que le evitaría tener
que modificar la mayoría de métodos de los datasources.
En la clase org.saig.core.dao.datasource.AbstractDataSource (de la que
heredan el resto de orígenes de datos) está definido el campo
"layerFilter", que permite añadir de manera transparente para el
usuario/programador un filtro a todas las consultas que se realicen
contra la capa. En su caso, el filtro que se debería asociar sería el
siguiente:
AttributeExpression attribute = new AttributeExpressionImpl2("the_geom");
NullFilter nullFilter = factory.createNullFilter();
nullFilter.setNullCheckValue(attribute);
Con esto no sería necesario que modificase el código del
PostgisDataSource, simplemente en el constructor de su clase extendida
establezca el filtro anterior.
Un cordial saludo,
Javier Andres García Galarza escribió:
Muchisimas gracias Francisco por tus tres respuestas... para nuestra
implementacion hemos decidido usar la opcion de modificar el codigo
usando un filtro, este momento he creado una clase que hereda de
PostgisDataSource sobreescribiendo la funcion
getSqlOnlyGeometryForQuery(..)
que es donde creo que debo implementar el filtro para que no cargue
las tuplas con el campo geomtría nulo, como creo un CompareFilter para
lograr una consulta como la siguiente??
where ...AND the_geom IS NOT NULL....
he probado aumentando la condicion solamente añadiendo la condicion
como cadena ala variable " consultaSQL" y funciona, pero cuando se
consulta la tabla de atributos aparece una fila con valores todos en
NULL para la tupla con the_geom = NULL
algo asi
GID NOMBRE
------------------
61 Nombre61
NULL NULL
62 Nombre62
mirando la consola en modo debug, observo que todas las consultas si
contienen la condicion ...AND the_geom IS NOT NULL.... que agrgué.
Muchas gracias por su ayuda, y Saludos!!!
>Hola de nuevo Javier,
>creo que mi respuesta anterior no responde a lo que estabas preguntando.
>Me acabo de dar cuenta de que lo que deseas es evitar que Kosmo cargue
>en memoria los elementos que no son visibles, con la regla de estilo
>sólo se consigue que no se muestren pero siguen estando en memoria.
>
>Te pongo un ejemplo de uso de filtros:
>
>CompareFilter compareFilter = new
>CompareFilterImpl(AbstractFilter.COMPARE_EQUALS);
>compareFilter.addLeftValue(new AttributeExpressionImpl2(attributeName));
>compareFilter.addRightValue(new LiteralExpressionImpl(value));
>
>Espero que esto sí te sirva. Un saludo.
>
>
>Francisco Abato Helguera
Javier Andres Garcia G.
Connect to the next generation of MSN Messenger Get it now!
<http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline>
------------------------------------------------------------------------
_______________________________________________
Kosmo mailing list
[email protected]
http://lists.saig.es/mailman/listinfo/kosmo
--
Sergio Baños Calvo
Jefe de desarrollos
Sistemas Abiertos de Información Geográfica, S.L. (SAIG S.L.)
Tlfno. móvil: 685005960
Tlfno. fijo: (+34) 954788876
E-mail: [EMAIL PROTECTED]
_______________________________________________
Kosmo mailing list
[email protected]
http://lists.saig.es/mailman/listinfo/kosmo