[Gvsig_desarrolladores] Problemas edición capa con 1 Feature

Domingo Baeza dbaeza en blom.es
Mie Oct 24 09:33:49 CEST 2007


Buenos días,

Tengo un problema muy extraño con la edición de shapes.

    Mi proyecto consiste en editar shapes(la mayoría de los Shape sólo 
tienen 1 Feature), he desarrollado una extensión, para pedir información 
y obtener en un formulario los datos de la feature, donde los puedo cambiar.
    El proceso es el siguiente:
*           - Paso1. Pongo la capa en edición (Botón derecho sobre la 
capa Comenzar-Edición)*
*           - Paso2. Con la extensión pido la información de cada 
feature, donde aparecen correctamente y la puedo cambiar. En el 
formulario tengo un botón de guardar datos que contiene más o menos el  
siguiente código:
*
*        public void  editar(ArrayList lstDatos){*

        AlphanumericData co = (AlphanumericData) layer;
       
        ProjectExtension ext = (ProjectExtension) 
PluginServices.getExtension(ProjectExtension.class);
        ProjectTable projectTable = ext.getProject().getTable(co);
        EditableAdapter ea=null;
        ReadableVectorial rv=((FLyrVect)layer).getSource();
        if (rv instanceof VectorialEditableAdapter){
            ea=(EditableAdapter)((FLyrVect)layer).getSource();
        }else{
            ea=new EditableAdapter();
           
            SelectableDataSource sds = null;
            try {
                sds = ((FLyrVect)layer).getRecordset();
               
            } catch (DriverException ee) {
                // TODO Auto-generated catch block
                ee.printStackTrace();
            }
            try {
                ea.setOriginalDataSource(sds);
            } catch 
(com.hardcode.gdbms.engine.data.driver.DriverException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           
        }

        if (projectTable == null) {
            try {
                projectTable = 
ProjectFactory.createTable(PluginServices.getText(this, 
"Tabla_de_Atributos") + ": " + layer.getName(),
                        ea);
            } catch 
(com.hardcode.gdbms.engine.data.driver.DriverException e3) {
                // TODO Auto-generated catch block
                e3.printStackTrace();
            }
            projectTable.setAssociatedTable(co);
           
        }
            projectTable.setModel(ea);
            Table t = new Table();
            t.setModel(projectTable);
            DataSourceDataModel dsdm = (DataSourceDataModel)  
t.getTable().getModel();
        
            int nIndice  = Integer.parseInt(oNodo.toString());
           
        
            Iterator i = lstDatos.iterator();
            while (i.hasNext()){
                 ActualizarDatosOT datos = ( ActualizarDatosOT) i.next();
                if (datos.getSCampo().equals("N_AREA")){
                   
                    try {
                        dsdm.setValueAt(new 
Double(rv.getShape(nIndice).toJTSGeometry().getArea()),nIndice,dsdm.findColumn("N_AREA"));
                    } catch (DriverIOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }else {
                    
dsdm.setValueAt(datos.getSValor(),nIndice,dsdm.findColumn(datos.getSCampo()));    

                }

               
            }
           
           
            //Con fireTableDataChanged() digamos que refresca la tabla.
            ((DataSourceDataModel) 
t.getTable().getModel()).fireTableDataChanged();
            //PluginServices.getMainFrame().enableControls();
       
        //Fin del cambio del registro
        
    }
       Después de el código anterior, abro la tabla asociada al shape y 
si que veo que en la tabla están los cambios realizados.


*    - Paso3. Cerrar la edición de la capa. (Botón derecho sobre la capa 
- Terminar Edición)

    *Es ahora cuando la capa tiene más de una feature entonces lo guarda 
bien, pero cuando la capa sólo tiene una feature, realmente guarda los 
cambios, pero no los veo hasta que descargo el Layer y lo vuelvo a cargar.

       ¿Cómo puedo hacer para que los cambios se vean cuando el layer 
sólo tiene una feature?



Un Saludo
Domingo Baeza
Blom SLU.





------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20071024/a34a2122/attachment.htm


Más información sobre la lista de distribución gvSIG_desarrolladores