[Gvsig_desarrolladores] Re: Crear Tabla

Jaime Traver revartj en gmail.com
Mie Jul 18 10:42:04 CEST 2007


Hola David, llevas razón, se me ha colado al escribir el correo, pero en el
programa no tiene ese fallo, ya que eso fue al transcribirlo yo.

De todas formas Gracias.

Saludos

El día 18/07/07, DAVID OLIVEROS ESCRIBANO <David.Oliveros en alu.uclm.es>
escribió:
>
>
> Hola,
> He visto tu código y puede que sea un error tipográfico. Pones
> 'crearCapaDataSoruce' en vez de 'crearCapaDataSource'
> En el programa principal llamas así:
> crearCapaDataSoruce(); //--> Aqui es donde da el problema
>
> Él método era:
>
> public void crearCapaDataSource()
>
> ---------- Original Message ----------------------------------
> From: "Jaime Traver" <revartj en gmail.com>
> Reply-To: Lista de Desarrolladores de gvSIG <
> gvsig_desarrolladores en runas.cap.gva.es>
> Date:  Wed, 18 Jul 2007 00:33:12 +0200
>
> >Hola Vicente:
> >   Sí, haber, yo creo las tablas como hemos visto anteriormente, y
> >justamente despues de crearlas, paso a utilizarlas, es decir, la creo y
> >obtengo la tabla para leer sus datos. Te pongo el codigo de la clase para
> >crear la tabla, despues la llamadas a estos metodos y por ultimo el
> metodo
> >que utiliza la tabla justamente despues de crearla, que es donde se
> produce
> >el error. Creo que es debido a que projectTable no tiene consciencia de
> que
> >esa tabla ya esta disponible, sin embargo si yo por un lado creo las
> tablas
> >y por otro utilizo el metodo por el cual obtengo ese error, el problema
> no
> >existiria, pero en mi caso no es posible hacerlo asi, por ello querria
> saber
> >como actualizar el projectTable, para que tenga constacia de que la tabla
> >está ahi y puede ser utilizada.
> >
> >
> >CLASE CREAR TABLAS :
> >
> >public class CrearTablas {
> >    DBFDriver driver = new DBFDriver();
> >
> >    DataSourceFactory dsf;
> >    DataSource dataSource = null;
> >    SelectableDataSource sds;
> >    EditableAdapter auxea;
> >
> >    DefaultRow row;
> >    String nameProject;
> >    ProjectTable projectTables;
> >
> >    private long[] orderIndexes = null;
> >    private long[] orderIndexesInverted = null;
> >    protected boolean updating = false;
> >    protected javax.swing.JTable table = null;
> >
> >
> >    public CrearTablas(String nameProject, String nameFic,String[]
> >Campos,int [] fieldTypes ){
> >        this.nameProject=nameProject;
> >        dsf = LayerFactory.getDataSourceFactory();
> >        dsf.createFileDataSource(driver.getName(), nameProject,
> >"/home/revartj/Desktop/"+nameFic+".dbf", Campos, fieldTypes);
> >        try {
> >            dataSource = dsf.createRandomDataSource(nameProject,
> >DataSourceFactory.AUTOMATIC_OPENING);
> >            dataSource.setDataSourceFactory(dsf);
> >            sds = new SelectableDataSource(dataSource);
> >            auxea = new EditableAdapter();
> >            auxea.setOriginalDataSource(sds);
> >        } catch (DriverLoadException e) {
> >            // TODO Auto-generated catch block
> >            e.printStackTrace();
> >        } catch (NoSuchTableException e) {
> >            // TODO Auto-generated catch block
> >            e.printStackTrace();
> >        } catch (DriverException e) {
> >            // TODO Auto-generated catch block
> >            e.printStackTrace();
> >        }
> >    }
> >    public void AniadirRow(Value[] valor){
> >        row = new DefaultRow(valor);
> >        try {
> >            auxea.addRow(row, "description", EditionEvent.ALPHANUMERIC);
> >
> >        } catch (DriverIOException e) {
> >            // TODO Auto-generated catch block
> >            e.printStackTrace();
> >        } catch (IOException e) {
> >            // TODO Auto-generated catch block
> >            e.printStackTrace();
> >        }
> >    }
> >    public void AniadirTablaProject(){
> >        try {
> >            projectTables = ProjectFactory.createTable
> (nameProject,auxea);
> >            ProjectExtension ext =
> >(ProjectExtension)PluginServices.getExtension(ProjectExtension.class);
> >            ext.getProject().addDocument(projectTables);
> >            writeFile();
> >        } catch (DriverLoadException e) {
> >            // TODO Auto-generated catch block
> >            e.printStackTrace();
> >        } catch (EditionException e) {
> >            // TODO Auto-generated catch block
> >            e.printStackTrace();
> >        } catch (DriverException e) {
> >            // TODO Auto-generated catch block
> >            e.printStackTrace();
> >        }
> >
> >    }
> >    private void writeFile() throws EditionException,
> >    DriverLoadException, DriverException{
> >                IEditableSource ies = projectTables.getModelo();
> >                IWriteable w = (IWriteable) ies;
> >                IWriter writer = w.getWriter();
> >                ITableDefinition tableDef = ies.getTableDefinition();
> >                writer.initialize(tableDef);
> >                ies.stopEdition(writer,EditionEvent.ALPHANUMERIC);
> >                auxea.getSelection().clear();
> >                //refresh();
> >           }
> >}
> >
> >PROGRAMA PRINCIPAL:
> >
> >    Ahora en mi programa principal, hago las siguientes operaciones:
> >
> >            String[] Campos= {"AA","BB","CC","DD","EE","FF"};
> >            int [] fieldTypes={12,12,12,12,12,12};
> >
> >            CrearTablas Tabla = new
> >CrearTablas("nombre","directorio",Campos,fieldTypes);
> >            while (condicion){
> >                  valor= inicializo valor con los valores oportunos
> >                  Tabla.AniadirRow(valor);
> >            }
> >            //Tabla perfectamente creada, ahora la añado al proyecto
> >            Tabla.AniadirTablaProject();
> >            crearCapaDataSoruce(); //--> Aqui es donde da el problema
> >
> >
> >METODO QUE ES LLAMADO DESDE EL PROGRAMA PRINCIPAL Y QUE PERTENECE A LA
> >MISMAS CLASE:
> >
> >    public void crearCapaDataSource() {
> >
> >        ProjectTable projectTable = getProjectTable("Georreferenciado");
> >        try {
> >
> >            DataSource ds = null;
> >            ds=projectTable.getModelo().getRecordset(); -->
> >java.lang.NullPointerException
> >            int xFieldIndex = 0;
> >            int yFieldIndex = 0;
> >
> >            xFieldIndex = ds.getFieldIndexByName("EE");
> >            yFieldIndex = ds.getFieldIndexByName("FF");
> >            AddEventThemeDriver addEventThemeDriver = new
> >AddEventThemeDriver();
> >            addEventThemeDriver.setData(ds, xFieldIndex, yFieldIndex);
> >            FLayer capa = null;
> >            capa = LayerFactory.createLayer("Georreferenciado",
> >addEventThemeDriver, mapControl.getMapContext().getProjection());
> >            capa.addLayerListener(new AddEventThemListener());
> >            projectTable.setAssociatedTable((AlphanumericData)capa);
> >            mapControl.getMapContext().getLayers().addLayer(capa);
> >        } catch (com.hardcode.gdbms.engine.data.driver.DriverExceptione1) {
> >            NotificationManager.addError(e1);
> >        } catch (DriverLoadException e) {
> >            NotificationManager.addError(e);
> >        }
> >
> >    }
> >
> >
> >Un Saludo
> >
> >El día 17/07/07, Vicente Caballero Navarro <vicente.caballero en iver.es>
> >escribió:
> >>
> >>  Hola Jaime.
> >>
> >> ¿Puedes pasar la traza de la excepción que te salta sin el método *
> >> refresh()*?
> >>
> >> Jaime Traver escribió:
> >>
> >> Hola a todos, el metodo refresh al cual me referia yo, era este:
> >>
> >>
> >>     public void refresh() {
> >>         int row= table.getSelectedRow();
> >>         int column=table.getSelectedColumn();
> >>         if (row!=-1 && column!=-1 && table.getEditorComponent()!=null){
> >>             Value[] values=getValueRow(row);
> >>             JTextField jtf=(JTextField)table.getEditorComponent();
> >>             jtf.setText(values[column].toString());
> >>         }
> >>         updating = true;
> >>         ((DataSourceDataModel)
> >> getTable().getModel()).fireTableDataChanged();
> >>
> >>         updating = false;
> >>         updateSelection();
> >>         PluginServices.getMainFrame().enableControls();
> >>
> >>     }
> >>
> >> No se si es el mismo que tu me indicabas, es que estoy teniendo muchos
> >> problemas para poder adaptarlo. Supongo que este me todo actualizara
> las
> >> tablas disponibles que hay en ProjectTables, por que al principio lo
> estaba
> >> omitiendo y al intentar coger las tablas que había creado, me saltaba
> una
> >> excepcion, indicando nullpointerexception, por lo que supongo que al no
> >> tener actualizadas las tablas en el proyecto, otros modulos de la misma
> >> extensión no pueden encontrar las tablas hasta que no se haga un
> refresh,
> >> corregirme si me equivoco. También querria que me indicasen, si el
> código
> >> que les expongo se trata del refresh que me actualiza el projectTables.
> >>
> >> Un Saludo
> >>
> >>  2007/7/16, Vicente Caballero Navarro < vicente.caballero en iver.es>:
> >> >
> >> > Hola Jaime.
> >> > Si, supongo que con *refresh()* te funcionará, se me ha colado *
> >> > refreshControls()* porque he cogido código de la clase Table de
> gvSIG.
> >> >
> >> > Jaime Traver escribió:
> >> >
> >> > Hola Vicente, el código de la función *refreshControls(), *no me la
> has
> >> > ajuntado, o es la misma que refresh.
> >> >
> >> > Un Saludo, Gracias por todo.
> >> >
> >> > 2007/7/16, Vicente Caballero Navarro <vicente.caballero en iver.es>:
> >> > >
> >> > > Hola Jaime.
> >> > > Te hace falta un trozo de código que envié a la lista unos correos
> >> > > atrás:
> >> > >
> >> > > *public void save(){
> >> > >         if (auxea instanceof IWriteable) {
> >> > >                      IWriteable w = (IWriteable) auxea;
> >> > >                      IWriter writer = w.getWriter();
> >> > >                      if (writer == null) {
> >> > >                          NotificationManager.addError("No existe
> >> > > driver de escritura para la tabla"
> >> > >                                  + auxea.getName(), new
> >> > > EditionException());
> >> > >                      }  else {
> >> > >                          ITableDefinition tableDef =
> >> > > auxea.getTableDefinition();
> >> > >                         writer.initialize(tableDef);
> >> > >                          auxea.stopEdition(writer,
> >> > > EditionEvent.ALPHANUMERIC);
> >> > >                          auxea.getSelection().clear();
> >> > >                          refreshControls();
> >> > >                      }
> >> > >        }
> >> > > }*
> >> > >
> >> > > Jaime Traver escribió:
> >> > >
> >> > > Hola de nuevo, ya he conseguido añadir los registros, el problema
> que
> >> > > tengo ahora es que los registros no son guardados en el fichero que
> creo,
> >> > > les muestro la clase que he creado para crear la tabla, para ver si
> me
> >> > > podeis indicar que es lo que falta para que esos registros sean
> guardados en
> >> > > el fichero.
> >> > >
> >> > > public class CrearTablas {
> >> > >     DBFDriver driver = new DBFDriver();
> >> > >
> >> > >     DataSourceFactory dsf;
> >> > >     DataSource dataSource = null;
> >> > >     SelectableDataSource sds;
> >> > >     EditableAdapter auxea;
> >> > >
> >> > >     DefaultRow row;
> >> > >     String nameProject;
> >> > >     ProjectTable projectTables;
> >> > >
> >> > >
> >> > >     public CrearTablas(String nameProject, String nameFic,String[]
> >> > > Campos,int [] fieldTypes ){
> >> > >         this.nameProject=nameProject;
> >> > >         dsf = LayerFactory.getDataSourceFactory();
> >> > >         dsf.createFileDataSource(driver.getName(), nameProject,
> >> > > "/home/revartj/Desktop/"+nameFic+".dbf", Campos, fieldTypes);
> >> > >         try {
> >> > >             dataSource = dsf.createRandomDataSource(nameProject,
> >> > > DataSourceFactory.AUTOMATIC_OPENING );
> >> > >             dataSource.setDataSourceFactory(dsf);
> >> > >             sds = new SelectableDataSource(dataSource);
> >> > >             auxea = new EditableAdapter();
> >> > >             auxea.setOriginalDataSource (sds);
> >> > >         } catch (DriverLoadException e) {
> >> > >             // TODO Auto-generated catch block
> >> > >             e.printStackTrace();
> >> > >         } catch (NoSuchTableException e) {
> >> > >             // TODO Auto-generated catch block
> >> > >             e.printStackTrace();
> >> > >         } catch (DriverException e) {
> >> > >             // TODO Auto-generated catch block
> >> > >             e.printStackTrace();
> >> > >         }
> >> > >     }
> >> > >     public void AniadirRow(Value[] valor){
> >> > >         row = new DefaultRow(valor);
> >> > >         try {
> >> > >             auxea.addRow(row, "description",
> EditionEvent.ALPHANUMERIC
> >> > > );
> >> > >
> >> > >         } catch (DriverIOException e) {
> >> > >             // TODO Auto-generated catch block
> >> > >             e.printStackTrace();
> >> > >         } catch (IOException e) {
> >> > >             // TODO Auto-generated catch block
> >> > >             e.printStackTrace();
> >> > >         }
> >> > >     }
> >> > >     public void AniadirTablaProject(){
> >> > >         try {
> >> > >             projectTables = ProjectFactory.createTable
> >> > > (nameProject,auxea);
> >> > >         } catch (DriverException e) {
> >> > >             // TODO Auto-generated catch block
> >> > >             e.printStackTrace();
> >> > >         }
> >> > >         ProjectExtension ext =
> >> > > (ProjectExtension)PluginServices.getExtension(
> ProjectExtension.class
> >> > > );
> >> > >         ext.getProject().addDocument(projectTables);
> >> > >
> >> > >     }
> >> > >
> >> > > }
> >> > >
> >> > > Un Saludo
> >> > >
> >> > >
> >> > >  ------------------------------
> >> > >
> >> > > _______________________________________________
> >> > > gvSIG_desarrolladores mailing list
> >> > >
> >> > >
> >> > > gvSIG_desarrolladores en runas.cap.gva
> .eshttp://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >> > >
> >> > >
> >> > >  --
> >> > > Vicente Caballero Navarro
> >> > > Grupo desarrollo gvSIG.
> >> > > IVER TI S.A.
> >> > > C/ Lérida, 20
> >> > > 46005-Valencia
> >> > > Tlf.+34963354983
> >> > >
> >> > >
> >> > > www.iver.eswww.gvsig.com
> >> > >
> >> > >
> >> > > _______________________________________________
> >> > > gvSIG_desarrolladores mailing list
> >> > > gvSIG_desarrolladores en runas.cap.gva.es
> >> > > http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >> > >
> >> > >
> >> > ------------------------------
> >> >
> >> > _______________________________________________
> >> > gvSIG_desarrolladores mailing list
> >> > gvSIG_desarrolladores en runas.cap.gva.es
> >> > http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >> >
> >> >
> >> > --
> >> > Vicente Caballero Navarro
> >> > Grupo desarrollo gvSIG.
> >> > IVER TI S.A.
> >> > C/ Lérida, 20
> >> > 46005-Valencia
> >> > Tlf.+34963354983
> >> >
> >> > www.iver.eswww.gvsig.com
> >> >
> >> >
> >> > _______________________________________________
> >> > gvSIG_desarrolladores mailing list
> >> > gvSIG_desarrolladores en runas.cap.gva.es
> >> > http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >> >
> >> >
> >> ------------------------------
> >>
> >> _______________________________________________
> >> gvSIG_desarrolladores mailing list
> >> gvSIG_desarrolladores en runas.cap.gva
> .eshttp://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >>
> >>
> >> --
> >> Vicente Caballero Navarro
> >> Grupo desarrollo gvSIG.
> >> IVER TI S.A.
> >> C/ Lérida, 20
> >> 46005-Valencia
> >> Tlf.+34963354983
> >> www.iver.eswww.gvsig.com
> >>
> >>
> >> _______________________________________________
> >> gvSIG_desarrolladores mailing list
> >> gvSIG_desarrolladores en runas.cap.gva.es
> >> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >>
> >>
> >
> >
> >
>
>
>
>
> ___________________________________________________
> Enviado a través de http://alumnos.uclm.es/webmail
>
>
>
>
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20070718/9a4ee079/attachment-0001.htm


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