[Gvsig_desarrolladores] Usar método export del FeatureStore
Francisco Puga
fpuga en icarto.es
Mar Ago 23 18:13:38 CEST 2016
Ya encontré el problema pero por dar feedback a la lista comento.
Estuve probando cosas y codificando a mi modo el "export" para acabar
dándome cuenta de varias cosas:
* Al abrir el store del shape manager.openStore se inicializa el
defaultFeatureType del store, y si se quiere hacer algo que implique usar
un FeatureType hay que pedírselo al nuevo store, no vale con usar el mismo
que se uso para crearlo anteriormente en los parámetros del manager.newStore
* Si que se puede reciclar un FeatureType de un store existente para crear
un nuevo store
* El StoreProvider de DBF automáticamente a falso el allowNull de los
FeatureAttributeDescriptor del FeatureType. Entiendo que esto se hace
porque los DBF no admiten nulos. En el store.createNewFeature(featureType,
defaultValues) para cada valor por defecto se comprueban las reglas, y como
la Feature original tenía nulos se produce una excepción. Por eso veo que
en ExporttoShapeService en lugar de usarse ese método se emplea:
edit_feat = target.createNewFeature(true);
setNonNulls(featureStore.getDefaultFeatureType(), targetType, feature,
edit_feat);
A este comportamiendo del provider de dbf por un lado le veo lógica. Sin
conocer bien la arquitectura, mi impresión inicial es que los
FeatureAttributeDescriptor implementaban reglas de negocio. Es decir si el
desarrollador quiere crear un atributo que no incluya nulos y validarlos
mediante ese mecanismo está bien, o si en la base de datos se ha seteado a
not null un campo está bien.
Pero que el dbf no admita nulos y controlar eso a través del
FeatureAttributeDescriptor parece más un detalle de implementación que una
regla de negocio. De hecho veo que en el driver de dbf,
DbaseFileWriter.fillBuffer, se hace un chequeo de cuando el valor es nulo y
en caso de serlo se gestiona como el driver estima oportuno (metiendo
cadena vacía, un 0, etc...
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20160823/5dee68a5/attachment.html>
Más información sobre la lista de distribución gvSIG_desarrolladores