[Gvsig_desarrolladores] Añadir campos a un shape y rellenar registros

Ruth Sos Del Diego rsosdeldiego en googlemail.com
Mie Dic 7 23:27:04 CET 2011


Hola de nuevo,

Como he comentado esta mañana necesito crear nuevos campos en una tabla de
un shape de mi vista.

Adjunto un código nuevo que me crea un campo nuevo y luego me abre la
tabla. La tabla me la abre, pero el campo no me lo crea. Alguien puede
decirme qué es lo que está mal???

Gracias de nuevo,

Ruth
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20111207/94b53431/attachment.htm 
------------ próxima parte ------------
package com.iver.cit.gvsig.mypluginbrazilselect;

import java.sql.Types;

import javax.swing.JOptionPane;

import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
import com.hardcode.gdbms.engine.values.ValueFactory;
import com.iver.andami.PluginServices;
import com.iver.andami.messages.NotificationManager;
import com.iver.andami.plugins.Extension;
import com.iver.andami.ui.mdiManager.IWindow;
import com.iver.cit.gvsig.ProjectExtension;
import com.iver.cit.gvsig.fmap.MapControl;
import com.iver.cit.gvsig.fmap.drivers.FieldDescription;
import com.iver.cit.gvsig.fmap.edition.EditableAdapter;
import com.iver.cit.gvsig.fmap.edition.IWriteable;
import com.iver.cit.gvsig.fmap.edition.IWriter;
import com.iver.cit.gvsig.fmap.edition.VectorialEditableAdapter;
import com.iver.cit.gvsig.fmap.layers.FLayer;
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
import com.iver.cit.gvsig.fmap.layers.ReadableVectorial;
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
import com.iver.cit.gvsig.fmap.layers.layerOperations.AlphanumericData;
import com.iver.cit.gvsig.project.ProjectFactory;
import com.iver.cit.gvsig.project.documents.table.ProjectTable;
import com.iver.cit.gvsig.project.documents.table.ProjectTableFactory;
import com.iver.cit.gvsig.project.documents.table.gui.Table;
import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
import com.iver.cit.gvsig.project.documents.view.gui.IView;

public class SelectThemenan extends Extension {
	
	
	public boolean isEnabled() {
		IWindow w = PluginServices.getMDIManager().getActiveWindow();
		
		if (w instanceof IView)
		{
			MapControl mapCtrl = ((IView) w).getMapControl();
			
			
			FLayer lyrEpic = mapCtrl.getMapContext().getLayers().getLayer("EPIC_an");
			if (lyrEpic != null) // the button will be enabled only if there exists EPIC_an in the view.
				return true;
		}
		return false;
	}
	

	/**
	 * 
	 */
	public boolean isVisible() {
		com.iver.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager().getActiveWindow();

		if (f == null) {
			return false;
		}

		return (f instanceof BaseView);
	}

	/**
	 * 
	 */
	public void execute(String s) {
		BaseView vista = (BaseView) PluginServices.getMDIManager().getActiveWindow();
		FLayer proPoints = vista.getModel().getMapContext().getLayers().getLayer("PROFILEPOINTS");
		
        
		

		try {
			
				if (proPoints instanceof AlphanumericData) {
					AlphanumericData co = (AlphanumericData) proPoints;

					//SelectableDataSource dataSource;
					//dataSource = co.getRecordset();

					ProjectExtension ext = (ProjectExtension) PluginServices.getExtension(ProjectExtension.class);

					ProjectTable projectTable = ext.getProject().getTable(co);
					//EditableAdapter ea=null;
			        
					EditableAdapter ea= new EditableAdapter(); 
			         
					ReadableVectorial rv=((FLyrVect)proPoints).getSource();
					Table t = new Table();
					
					
					//-----------------CREA UN CAMPO NUEVO
					
					  if (ea instanceof IWriteable)
		                 {
		                     IWriteable w = (IWriteable) ea;
		                     IWriter writer = w.getWriter();
		                     if (writer == null)
		                     {
		                         NotificationManager.addError("No existe driver de escritura para la tabla" + getModel().getName(), new  EditionException());  
		                        		 

		
		                     }
		                     else
		                     {
		                        
		                        FieldDescription newField = new FieldDescription();
		                     	newField.setDefaultValue(ValueFactory.createValue("default"));
		                     	newField.setFieldName("prueba");
		                     	newField.setFieldType(Types.VARCHAR);
		                     	newField.setFieldLength(20);

		                         t.addColumn(newField);
		                         
		                        
		                    }
		                 } 
									
					//----------------ABRE LA TABLA
					if (rv instanceof VectorialEditableAdapter){
						ea=(EditableAdapter)((FLyrVect)proPoints).getSource();
					}else{
						ea=new EditableAdapter();
						SelectableDataSource sds=((FLyrVect)proPoints).getRecordset();
						ea.setOriginalDataSource(sds);
					}

					if (projectTable == null) {
						projectTable = ProjectFactory.createTable(PluginServices.getText(this, "Tabla_de_Atributos") + ": " + proPoints.getName(),
								ea);
						projectTable.setProjectDocumentFactory(new ProjectTableFactory());
						projectTable.setAssociatedTable(co);
						ext.getProject().addDocument(projectTable);
						projectTable.setModel(ea);
					}
					
		        	
					
					t.setModel(projectTable);
					if (ea.isEditing())
						ea.getCommandRecord().addCommandListener(t);
					t.getModel().setModified(true);
					PluginServices.getMDIManager().addWindow(t);
					 
				}
			
		} catch (ReadDriverException e) {
            NotificationManager.addError(PluginServices.getText(this,"No_se_pudo_obtener_la_tabla_de_la_capa"), e);
        }
	}

	/**
	 * 
	 */
	public void initialize() {
		
	}

	
}


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