[Gvsig_desarrolladores] Re: Crear Tabla

Jorge Piera jorge.piera en iver.es
Jue Jul 12 08:26:18 CEST 2007


Hola.

Es normal que te salte esa excepción, porque el objecto "dataSource" no 
ha sido inicializado. Justo donde has puesto el comentario diciendo que 
te salta esa excepción pon lo siguiente:
 
dataSource = 
LayerFactory.getDataSourceFactory().createRandomDataSource(name,
                                  DataSourceFactory.AUTOMATIC_OPENING);

Lo he probado y funciona: Se crea una tabla vacía con los campos que has 
especificado.

Un saludo.

Jaime Traver wrote:
> Hola de nuevo, como os he comentado mi intención era crear una tabla 
> nueva desde cero, entonces os comento, como creo que puede ser y ya me 
> indicáis si voy por el camino correcto:
>
>             String[] Campos= 
> {"fieldA","fieldB","fieldC","fieldD","fieldE","fieldF"};
>             int [] fieldTypes={12,12,12,12,12,12};
>             DBFDriver driver = new DBFDriver();
>             String name = "Tabla";
>
>             
> LayerFactory.getDataSourceFactory().createFileDataSource(driver.getName(), 
> name, "Archivo", Campos, fieldTypes);
>
>             DataSource dataSource = null;
>             DataSourceFactory dsf = new DataSourceFactory();
>             dsf.createFileDataSource(driver.getName(), name, "jame", 
> Campos, fieldTypes);
>
>             Supongo, que aquí habrá que añadir las tuplas al 
> datasource, y no se como se haría exactamente. Aquí, tal como esta 
> salta una exception indicando java.lang.NullPointerException
>
>             dataSource.setDataSourceFactory(dsf);
>             SelectableDataSource sds = new 
> SelectableDataSource(dataSource);
>             EditableAdapter auxea = new EditableAdapter();
>             auxea.setOriginalDataSource(sds);
>
>             Luego para agregar la tabla al proyecto seria así, como 
> comento Jorge Piera.
>
>             ProjectTable projectTables = ProjectFactory.createTable(name,
>                     auxea);
>
>             ProjectExtension ext = 
> (ProjectExtension)PluginServices.getExtension(ProjectExtension.class );
>             ext.getProject().addDocument(projectTable);
>
> Un Saludo
>
>
> El día 10/07/07, *Vicente Caballero Navarro * 
> <vicente.caballero en iver.es <mailto:vicente.caballero en iver.es>> escribió:
>
>     Hola Jaime.
>     Para cambiar la estructura de la tabla tendrás que introducir en el
>     writer la descripción de la tabla con los datos necesarios de las
>     columnas que quieres introducir:
>     A partir de lo que ha comentado Jorge:
>         A auxea le puedes ir introduciendo registros.
>                     ies.addRow(row,"description",EditionEvent.ALPHANUMERIC);
>
>                       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"
>                                      + getModel().getName(), new
>     EditionException());
>                          }
>                          else
>                          {
>                              tableDef=new TableDefinition();
>                              FieldDescription[] fieldDescriptions=new
>     FieldDescription[3];
>                              fieldDescriptions[0].setFieldName("name1");
>                              fieldDescriptions[0].setFieldType(type);
>                              ...
>                              tableDef.setFieldsDesc(fieldDescriptions);
>                              writer.initialize(tableDef);
>
>
>     auxea.stopEdition(writer,EditionEvent.ALPHANUMERIC);
>                         }
>                      }
>
>     Jorge Piera escribió:
>     > Hola Jaime.
>     >       Para ver una tabla en gvSIG, tienes que crear un objeto de
>     tipo
>     > ProjectTable, asociarle una fuente de datos (desde un dbf en tu
>     caso)
>     > y añadirlo al proyecto. Te adjunto un trozo que código que hace todo
>     > esto:
>     >
>     >        DBFDriver driver = new DBFDriver();
>     >        String name = "my name";
>     >
>     >
>     LayerFactory.getDataSourceFactory().addFileDataSource(driver.getName(),
>     >                name,
>     >               "/home/revartj/Desktop/tabla.dbf");
>     >        DataSource dataSource =
>     > LayerFactory.getDataSourceFactory().createRandomDataSource(name,
>     >                DataSourceFactory.AUTOMATIC_OPENING);
>     >
>     >        SelectableDataSource sds = new
>     SelectableDataSource(dataSource);
>     >        EditableAdapter auxea = new EditableAdapter();
>     >        auxea.setOriginalDataSource(sds);
>     >
>     >        ProjectTable projectTable = ProjectFactory.createTable(name,
>     >                auxea);
>     >
>     >        ProjectExtension ext = (ProjectExtension)
>     > PluginServices.getExtension(ProjectExtension.class);
>     >        ext.getProject().addDocument(projectTable);
>     > Un saludo
>     >
>     > Jaime Traver wrote:
>     >> Hola a todos de nuevo, buscando he encontrado algo pero no se
>     >> exactamente que estoy haciendo mal, porque no me escribe nada en el
>     >> fichero indicado, mi intención es crear una tabla.dbf para guardar
>     >> información obtenida de otro procesos. En teoría, este trozo de
>     >> código, tendría que me crearme únicamente la tabla con los
>     nombre de
>     >> los campos.
>     >>
>     >>             DBFDriver Fic = new DBFDriver();
>     >>             String[] Campos=
>     >> {"fieldA","fieldB","fieldC","fieldD","fieldE","fieldF"};
>     >>             int [] fieldTypes={12,12,12,12,12,12};
>     >>             File f= new
>     >> File("/home/revartj/Desktop/tabla.dbf");
>     >> Fic.open(f);
>     >>             Fic.createSource("1", Campos, fieldTypes);
>     >>             Fic.close();
>     >>
>     >>
>     >> Un Saludo
>     >>
>     ------------------------------------------------------------------------
>     >>
>     >> _______________________________________________
>     >> gvSIG_desarrolladores mailing list
>     >> gvSIG_desarrolladores en runas.cap.gva.es
>     <mailto:gvSIG_desarrolladores en runas.cap.gva.es>
>     >> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>     <http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores>
>     >>
>     >
>     > _______________________________________________
>     > gvSIG_desarrolladores mailing list
>     > gvSIG_desarrolladores en runas.cap.gva.es
>     <mailto:gvSIG_desarrolladores en runas.cap.gva.es>
>     > http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>     >
>     >
>     >
>     Un saludo.
>
>     --
>     Vicente Caballero Navarro
>     Grupo desarrollo gvSIG.
>     IVER TI S.A.
>     C/ Lérida, 20
>     46005-Valencia
>     Tlf.+34963354983
>     www.iver.es <http://www.iver.es>
>     www.gvsig.com <http://www.gvsig.com>
>
>
>     _______________________________________________
>     gvSIG_desarrolladores mailing list
>     gvSIG_desarrolladores en runas.cap.gva.es
>     <mailto:gvSIG_desarrolladores en runas.cap.gva.es>
>     http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>     <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
>   



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