[Gvsig_desarrolladores] Tablas - gvsig
maro1 en alu.um.es
maro1 en alu.um.es
Mar Nov 20 20:41:31 CET 2007
Hola buenos día,
Te adjunto el fichero con el código.
También lo pego en el correo por si hubiese problemas con ficheros adjuntos
- código -
package com.iver.cit.gvsig.infoMapa.tools;
import java.awt.Cursor;
import java.awt.geom.Point2D;
import java.io.IOException;
import com.hardcode.gdbms.engine.data.DataSource;
import com.hardcode.gdbms.engine.values.Value;
import com.iver.andami.PluginServices;
import com.iver.cit.gvsig.fmap.DriverException;
import com.iver.cit.gvsig.fmap.MapControl;
import com.iver.cit.gvsig.fmap.core.IRow;
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
import com.iver.cit.gvsig.fmap.edition.DefaultRowEdited;
import com.iver.cit.gvsig.fmap.edition.EditionEvent;
import com.iver.cit.gvsig.fmap.edition.IEditableSource;
import com.iver.cit.gvsig.fmap.edition.IRowEdited;
import com.iver.cit.gvsig.fmap.edition.VectorialEditableAdapter;
import com.iver.cit.gvsig.fmap.layers.FBitSet;
import com.iver.cit.gvsig.fmap.layers.FLayers;
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
import com.iver.cit.gvsig.fmap.layers.layerOperations.AlphanumericData;
import com.iver.cit.gvsig.fmap.tools.BehaviorException;
import com.iver.cit.gvsig.fmap.tools.Events.PointEvent;
import com.iver.cit.gvsig.fmap.tools.Listeners.PointListener;
import com.iver.cit.gvsig.infoMapa.panels.ProvinciasPanel;
import com.iver.cit.gvsig.project.documents.view.gui.IView;
public class InfoByPointListener implements PointListener{
private MapControl mapControl = null;
public InfoByPointListener(MapControl mapControl){
this.mapControl = mapControl;
}
public void point(PointEvent event) throws BehaviorException {
//LECTURA DE LOS CAMPOS
IView view = (IView)PluginServices.getMDIManager().getActiveWindow();
FLayers layers = view.getMapControl().getMapContext().getLayers();
FLyrVect lyrparcelas = (FLyrVect)layers.getLayer("parcelas.shp");
Point2D pReal = event.getPoint();
Point2D mapPoint = mapControl.getViewPort().toMapPoint((int)pReal.getX(),
(int) pReal.getY());
double tol = mapControl.getViewPort().toMapDistance(1);
//Obtenemos los campos de la fila seleccionada dela tabla asignada a la
capa cuando el usuario hace click sobre la capa
try {
FBitSet selection = lyrparcelas.queryByPoint(mapPoint,tol);
if (!selection.isEmpty()){
DataSource ds = ((AlphanumericData)lyrparcelas).getRecordset();
ds.start();
// PESTAÑA INFO
int idmunicipio = ds.getFieldIndexByName("MUNICIPIO");
int idparcela = ds.getFieldIndexByName("PARCELA");
int idpoligono = ds.getFieldIndexByName("POLIGONO");
int idrecinto = ds.getFieldIndexByName("RECINTO");
int idfvalidacion = ds.getFieldIndexByName("fvalidaci");
int idarea = ds.getFieldIndexByName("Shape_Area");
//------------------------------------------------------
int idgrupo = ds.getFieldIndexByName("GRUP_CULT");
int idcultivo= ds.getFieldIndexByName("CULTIV");
int idvariedad = ds.getFieldIndexByName("VARIED");
int idriego = ds.getFieldIndexByName("SISTEMARIE");
int idmetodo = ds.getFieldIndexByName("METODOCULT");
int idedad = ds.getFieldIndexByName("EDADCULT");
int idfuente = ds.getFieldIndexByName("Fuente");
int idnota = ds.getFieldIndexByName("NOTA");
int idbalsa =ds.getFieldIndexByName("BALSA");
Value strmunicipio = ds.getFieldValue(selection.nextSetBit(0),
idmunicipio);
Value strparcela = ds.getFieldValue(selection.nextSetBit(0),
idparcela);
Value strpoligono = ds.getFieldValue(selection.nextSetBit(0),
idpoligono);
Value strrecinto = ds.getFieldValue(selection.nextSetBit(0),
idrecinto);
Value strfvalidacion = ds.getFieldValue(selection.nextSetBit(0),
idfvalidacion);
Value strgrupo = ds.getFieldValue(selection.nextSetBit(0), idgrupo);
Value strcultivo = ds.getFieldValue(selection.nextSetBit(0),
idcultivo);
Value strvariedad = ds.getFieldValue(selection.nextSetBit(0),
idvariedad);
Value strsistriego = ds.getFieldValue(selection.nextSetBit(0),
idriego);
Value strmtdcultivo = ds.getFieldValue(selection.nextSetBit(0),
idmetodo);
Value stredad = ds.getFieldValue(selection.nextSetBit(0), idedad);
Value strfuente = ds.getFieldValue(selection.nextSetBit(0),
idfuente);
Value strnota = ds.getFieldValue(selection.nextSetBit(0), idnota);
Value strarea= ds.getFieldValue(selection.nextSetBit(0), idarea);
Value strbalsa = ds.getFieldValue(selection.nextSetBit(0), idbalsa);
ds.stop();
//creamos una ventana de tipo (frame dialog) donde se visualiza una
ventana donde sale la información del punto seleccionado por el usuario en
la capa
//paso como parámetro los campos de la fila seleccionada de la tabla.
ProvinciasPanel panel = new
ProvinciasPanel("Modificar","Cultivos",strparcela.toString(),strmunicipio.toString(),strpoligono.toString(),strrecinto.toString(),strfvalidacion.toString(),strarea.toString(),strgrupo.toString(),strcultivo.toString(),strvariedad.toString(),strsistriego.toString(),strmtdcultivo.toString(),stredad.toString(),strfuente.toString(),strnota.toString(),strbalsa.toString());
PluginServices.getMDIManager().addWindow(panel);
// La ventana que se le muestra al usuario puede modificar los datos, y
cambiarlos ( la ventana contiene cajas de texto y comobox donde el usuario
puede
//modificar la información y poner otra.
//EL CÓDIGO QUE VIENE A CONTINUACIÓN es el que me da problema al compilar
en la línea de código
lyrparcelas=(FLyrVect)table.getModel().getAssociatedTable();
//obtengo los valores modificados de la ventana
Values[]valores panel.obtenerdatosmodificados();
//Aquí con este código tengo que grabar:
int
i=lyrparcelas.getSource().getRecordset().getSelection().nextSetBit(0);
lyrparcelas=(FLyrVect)table.getModel().getAssociatedTable();
IEditableSource ies = (VectorialEditableAdapter)
lyrparcelas.getSource();
IRow feat=null;
try {
feat = ies.getRow(i).getLinkedRow().cloneRow();
} catch (DriverIOException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
Value[] values = feat.getAttributes();
values[selectedIndex] = value;
feat.setAttributes(values);
IRowEdited edRow = new DefaultRowEdited(feat,
IRowEdited.STATUS_MODIFIED, i);
try {
ies.modifyRow(edRow.getIndex(), edRow.getLinkedRow(), "",
EditionEvent.ALPHANUMERIC);
} catch (IOException e) {
e.printStackTrace();
} catch (DriverIOException e) {
e.printStackTrace();
}
}
} catch (DriverException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void pointDoubleClick(PointEvent event) throws BehaviorException {
// TODO Auto-generated method stub
}
public Cursor getCursor() {
// TODO Auto-generated method stub
return null;
}
public boolean cancelDrawing() {
// TODO Auto-generated method stub
return false;
}
}
----- Original Message -----
From: "César Martínez Izquierdo" <cesar.martinez en iver.es>
To: "Lista de Desarrolladores de gvSIG"
<gvsig_desarrolladores en runas.cap.gva.es>
Sent: Tuesday, November 20, 2007 3:52 PM
Subject: Re: [Gvsig_desarrolladores] Tablas - gvsig
> Hola de nuevo,
>
> Seguramente "table" te da error porque es una variable que no has
> declarado.
>
> ¿puedes enviar el código completo de la función que estás haciendo para
> que entendamos mejor lo que quieres hacer? ¿Quieres obtener una vista, o
> su vista asociada? ¿U otra cosa distinta?
>
> Saludos,
>
>
>
> RINCON OLIVA, Mª ARANZAZU escribió:
>>
>> Hola buenos días,
>>
>> Tengo un problema al obtener la tabla asociada a la capa.
>> Me da un error de compilación en la palabra "table".
>> He importado el paquete: import
>> com.iver.cit.gvsig.project.documents.table.*, pero el error de
>> compilación persiste.
>> El código es el siguiente:
>>
>> int
>> i=lyrparcelas.getSource().getRecordset().getSelection().nextSetBit(0);
>> FLyrVect lyrparcelas
>> =(FLyrVect)table.getModel().getAssociatedTable();-->error
>> IEditableSource ies = (VectorialEditableAdapter) lv.getSource();
>>
>>
>>
>> Muchas gracias
>> Un saludo
>>
>
>
> --
> César Martínez Izquierdo
> Equipo de desarrollo gvSIG
> http://www.gvsig.gva.es
>
> IVER T.I.
> C/ Lérida 20
> 46009 Valencia - Spain
> http://www.iver.es
>
>
> Este mensaje y sus archivos son confidenciales. No está permitida su
> reproducción o distribución sin la autorización expresa de "IVER
> Tecnologías de la Información". Si usted no es el destinatario previsto,
> queda desautorizado cualquier uso, acceso o copia de este mensaje. Si ha
> recibido este mensaje por error, por favor bórrelo e infórmenos por esta
> misma vía.
>
> _______________________________________________
> 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 mensaje que no está en formato texto plano...
Nombre : InfoByPointListener.java
Tipo : application/octet-stream
Tamaño : 7364 bytes
Descripción: no disponible
Url : http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20071120/88aed89e/InfoByPointListener-0001.obj
Más información sobre la lista de distribución gvSIG_desarrolladores