gvSIG bugs #536

Error to export shapefile

Added by Leticia Riestra about 12 years ago. Updated about 12 years ago.

Status:Closed% Done:

0%

Priority:UrgentSpent time:-
Assignee:Juan Lucas Domínguez
Category:-
Target version:-
Severity: Add-on version:
gvSIG version:2.0.0 Add-on build:
gvSIG build:2045 Add-on resolve version:
Operative System: Add-on resolve build:
Keywords: Proyecto:
Has patch:No Hito:
Add-on name:Unknown

Description

<English>
When I export a layer to shapefile, the next exception appears:
org.gvsig.fmap.dal.feature.exception.DataExportException: Can't export to DynClass name: SHPNewStoreParameters; Fields: [geometryType = 9]s.
at org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore.export(DefaultFeatureStore.java:1258)
at es.udc.lbd.giseiel.editing.ExportMapTo.saveToShp(ExportMapTo.java:446)
at es.udc.lbd.giseiel.editing.ExportMapTo.saveToShp(ExportMapTo.java:215)
at es.udc.lbd.giseiel.editing.ExportMapTo.execute(ExportMapTo.java:156)
at org.gvsig.andami.plugins.ExtensionDecorator.execute(ExtensionDecorator.java:94)
at
Caused by: java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at org.gvsig.fmap.dal.feature.impl.DefaultFeatureType$DelegatedIterator.next(DefaultFeatureType.java:337)
at org.gvsig.fmap.dal.store.shp.SHPStoreProvider.addGeometryColumn(SHPStoreProvider.java:212)
at org.gvsig.fmap.dal.store.shp.SHPFilesystemServerProvider.create(SHPFilesystemServerProvider.java:162)

This occurs in project libFMap_dalfile in the class SHPStoreProvider.
The method is addGeometryColumn(EditableFeatureType fType) (line 212) and the problem 'seems' because it is a concurrently accessed (by the iterator and deletion) to the list "ftype"

I don't know the solution

<Español>
Al exportar una capa a shp salta la siguiente excepción:
org.gvsig.fmap.dal.feature.exception.DataExportException: Can't export to DynClass name: SHPNewStoreParameters; Fields: [geometryType = 9]s.
at org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore.export(DefaultFeatureStore.java:1258)
at es.udc.lbd.giseiel.editing.ExportMapTo.saveToShp(ExportMapTo.java:446)
at es.udc.lbd.giseiel.editing.ExportMapTo.saveToShp(ExportMapTo.java:215)
at es.udc.lbd.giseiel.editing.ExportMapTo.execute(ExportMapTo.java:156)
at org.gvsig.andami.plugins.ExtensionDecorator.execute(ExtensionDecorator.java:94)
at
Caused by: java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at org.gvsig.fmap.dal.feature.impl.DefaultFeatureType$DelegatedIterator.next(DefaultFeatureType.java:337)
at org.gvsig.fmap.dal.store.shp.SHPStoreProvider.addGeometryColumn(SHPStoreProvider.java:212)
at org.gvsig.fmap.dal.store.shp.SHPFilesystemServerProvider.create(SHPFilesystemServerProvider.java:162)

Esto se produce en el proyecto libFMap_dalfile dentro de la clase SHPStoreProvider .
El método es addGeometryColumn(EditableFeatureType fType) línea 212 y el problema ‘parece’ que es porque se accede de forma concurrente (mediante el iterador y el borrado) a la lista “fType”

No se cual puede ser la solución

History

#1 Updated by Cesar Ordiñana about 12 years ago

Hola Leticia.

¿Podrías pasarnos algo de código para ver cómo se está haciendo la exportación?

En cualquier caso, por si te sirve de ayuda, tienes el proyecto org.gvsig.exportto, cuyo API (org.gvsig.exportto.lib.api) quizás te facilite realizar la exportación.

#2 Updated by Leticia Riestra about 12 years ago

Hola

Es vuestro código el que falla
Proyecto libFMap_dalfile dentro de la clase SHPStoreProvider en el método es addGeometryColumn(EditableFeatureType fType) línea 212

Saludos

#3 Updated by Joaquín del Cerro Murciano about 12 years ago

Hola,
no dudamos de que el error este en el codigo de gvSIG, lo que sucede es que normalmente no es suficiente con que nos digan falla y nos pongas el stack del error.

Para abordar la correccion de un error necesitamos que nos den los pasos que hemos de realizar para reproducirlo si no muchas veces nos es imposible de corregir.

De todos modos, comentarte que es preferible que no uses el metodo export del FeatureStore. Como dice su javadoc esta deprecated. Se trata de un metodo que se añadio en un princio al API pensando que podria ser implementado independientemente del tipo de proveedor con el que se estaba trabajando y luego nos dimos cuenta de que eso no era posible, asi que decidimos que para futuras versiones se eliminaria del API pero para la 2.0.0 solo lo dejamos deprecated.

Nota:
Se ha añadido en las factorias de proveedores (antes no existian) informacion que puede ayudar a implementar este metodo con mas fiabilidad, aunque habran cosas que seguiran sin poder hacerse.

El metodo actualmente no se usa en gvSIG y no se esta manteniendo, pero si nos pasas una forma de reproducir el error intentaremos ver que puede estar pasando y arreglarlo. Ya que lo invocas desde codigo que no es de gvSIG, para reproducirlo, tal vez lo mas simple sea construir un TestCase. Puedes ver en

  libFMap_dalfile/src-test/org/gvsig/fmap/dal/store/shp

algunos TestCases que reproducian un error de cara a poder abordar su correccion.

Si te decides a hacerlo y precisas ayuda no dudes en pedirla.

Un saludo
Joaquin

#4 Updated by Leticia Riestra about 12 years ago

Hola
Creo que no me he explicado bien. El problema está, precisamente, en una funcionalidad vuestra. En Herramientas --> Exportar Capas

Cuando cargas una capa, y luego seleccionas esta opción salta la excepción que os comenté antes

Por eso no entiendo vuestro comentario de que el metodo actualmente no se usa en gvSIG. Me supongo que será un bug y se os habrá olvidado actualizar el código,no?

Saludos

#5 Updated by Joaquín del Cerro Murciano about 12 years ago

  • Assignee set to Juan Lucas Domínguez

Leticia Riestra wrote:

Hola
Creo que no me he explicado bien. El problema está, precisamente, en una funcionalidad vuestra. En Herramientas --> Exportar Capas

Cuando cargas una capa, y luego seleccionas esta opción salta la excepción que os comenté antes

Por eso no entiendo vuestro comentario de que el metodo actualmente no se usa en gvSIG. Me supongo que será un bug y se os habrá olvidado actualizar el código,no?

Repasando tickets pendientes he vuelto a pasar por este y no entiendo nada. La traza del stack que pegas dice algo como:

at org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore.export(DefaultFeatureStore.java:1258)
at es.udc.lbd.giseiel.editing.ExportMapTo.saveToShp(ExportMapTo.java:446)
at es.udc.lbd.giseiel.editing.ExportMapTo.saveToShp(ExportMapTo.java:215)
at es.udc.lbd.giseiel.editing.ExportMapTo.execute(ExportMapTo.java:156)

En donde parece que desde codigo de giseiel se invoca al metodo
DefaultFeatureStore.export, que es el que te comentamos que no
funciona.

De todos modos le echaremos un vistazo a la herramienta exportar
a shape que va con gvSIG de base.

Saludos

#6 Updated by Leticia Riestra about 12 years ago

Hola
Este ticket ya está obsoleto. De hecho, tengo creado uno nuevo (582) en el que estamos intentando utilizar vuestro código
Digo intentando porque hemos detectado un fallo, lo hemos solucionado y os hemos propuesto la solución pero hemos detectado otro (esta vez sin encontrar la solución)

Si ves ese ticket, verás que ese es el bueno

Gracias por todos

pd - puedes cerrar este ticket si lo deseas

#7 Updated by Joaquín del Cerro Murciano about 12 years ago

  • Status changed from New to Closed

Also available in: Atom PDF