[Gvsig_desarrolladores] (sin asunto)

Vidal Toboso vidaltoboso en fomex.es
Jue Abr 12 12:45:11 CEST 2007


Hola Vicente y gracias por la respuesta.
He comprobado en StartEditing que efectivamente isWritable() se utiliza,
pero en el caso de que sea “false” sólo muestra un mensaje de warning
sin parar el inicio de la edición como tú comentabas.
¿Tenéis pensado introducir en un futuro un isEditable() y un
setEditable(boolean b), o algo así (cualquir método que indique que
aunque la fuente de datos sea writable-isWritable()=true- no podamos
modificarla, aunque sí se pueda seguir guardando la versión modificada
en otro formato o en otra fuente), sin tocar el isWritable() que tiene
su sentido, para poder dar permisos de edición sobre la fuente a las
capas desde la programación?, yo creo que sería muy útil, porque muchas
veces se trabaja sobre datos compartidos que están en un servidor y a
los que acceden muchos usuarios y no todos con los mismos permisos. 
Sobre lo de otro usuario de bbdd sólo con permisos de lectura yo también
lo he contemplado, pero no puede ser porque se desea tener sólo un
usuario de bbdd.
Otra opción que había pensado era crear vistas de todas las tablas, ya
que creo que en postgresql no se pueden hacer ni inserts ni updates ni
deletes sobre las vista, y cargar, según los permisos, la vista o la
tabla original.
Sobre el driver de Postgis es cierto que siempre devuelve “true” en
isWritable() y creo que así debe ser tras saber lo que significa
realmente isWritable().
La idea que me propones en la conclusión creo que es la que voy a
adoptar, por lo menos temporalmente. Pero aquí me surge una duda, para
hacer que la extensión StartEditing esté siempre oculta o desactivada
tengo que modificar el isVisible() (o isEnabled(), según sea el caso)
del código fuente poniéndolos a ‘false’ o hay alguna forma de hacerlo
desde la nueva extensión que genere. Es por no tocar el código fuente.
 
Gracias de nuevo y saludos,
 
Vidal Toboso
 
 
-----Mensaje original-----
De: gvsig_desarrolladores-bounces en runas.cap.gva.es
[mailto:gvsig_desarrolladores-bounces en runas.cap.gva.es] En nombre de
Vicente Caballero Navarro
Enviado el: jueves, 12 de abril de 2007 11:11
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] (sin asunto)
 
Hola Vidal.
 
El isWritable() no está pensado para que el usuario lo cambie como el
isVisible(), ya que depende de si existe un writer para su formato,
permisos de escritura, etc...
Sirve para saber si con lo que tenemos es posible escribir. No implica
que hagamos algo como en el caso de setVisible(boolean b), que si
cambiamos el estado de una capa.
Creo que tener un usuario en la base de datos con permisos de lectura
sería la solución razonable para no sobreescribir la capa, no sé si
estaría bien poner otro nivel más de permisos sobre las capas para
permitir escribir pero de todas formas esto no quitaría la posibilidad
de editar una capa.
 
Esta es la teoría pero he mirado el driver que comentas de PostGis y no
tiene en cuenta nada de esto, devuelve un true siempre. 
 
Y por otro lado, gvSIG no limita la posibilidad de entrar en edición
según sea writable ya que te permite después guardar en otro formato.
 
Conclusión: ahora mismo para controlar que capas puedes poner en edición
y cuales no, solo se me ocurre ocultar la extensión StartEditing y poner
una nueva que extienda de ella reimplementado su método isVisible() para
que compruebe si la capa seleccionada es o no la que queremos que se
pueda editar.
 
Un saludo.
 
Vicente Caballero Navarro
Grupo desarrollo gvSIG.
IVER TI S.A.
C/ Salamanca, 50-52
46005-Valencia
Tlf.+34963163400
www.iver.es
www.gvsig.com
----- Original Message ----- 
From: Vidal Toboso <mailto:vidaltoboso en fomex.es>  
To: 'Lista de Desarrolladores de
<mailto:gvsig_desarrolladores en runas.cap.gva.es>  gvSIG' 
Sent: Thursday, April 12, 2007 9:44 AM
Subject: RE: [Gvsig_desarrolladores] (sin asunto)
 
Buenos días a todos
 
Esta claro que lo más recomendable no es modificar el código fuente,
pero ante este caso yo no he encontrado otra solución.
Estoy desarrollando una extensión para validar y autenticar a los
usuarios que se conecten a la base de datos. Es decir, el usuario no
tiene ni idea del password de usuario de bbdd, ya que es algo que
proporciona el servicio web en el que se autentica. 
Para añadir capas al proyecto sí hice lo que comentaba Álvaro de copiar
parte del código fuente y generar mi propia extension (en concreto de la
extensión extJDBC), pero para el caso que nos ocupa de abrir y cargar un
proyecto, la cosa no es tan sencilla, porque se trata de la extensión
Project, que es bastante extensa (guardar archivio, abrir archivo, etc),
aun así no descarto realizarlo.
Así, tuve que modificar la clase DefaultDBDriver.java
(libFMap/src/com.iver.cit.gvsig.fmap.drivers) y crear una clase
JValidationDlg.java, que por coherencia añadí en
(libIverUtiles/src/com.iver.utiles.swing).
 
Por cierto, tengo una duda sobre las layer que cargo: he visto que
FLayer tiene el método isWritable(), al igual que isVisible(), pero
compruebo que no existe setWritable(boolean), y sí setVisible(boolean).
El isWritable(), al ser una FLayer una interfaz, creo que acaba
ejecutando el isWritable() de PostGisDriver.java cuando se trata de un
acceso a base de datos postgresql, que es mi caso, y este suele devolver
“true” o por lo menos lo mismo para todas las capas que tiran de ese
mismo driver, mi pregunta es ¿habría alguna forma de poder especificar
en cada capa, aunque consuman el mismo driver, si es editable o no?
 
Gracias por adelantado y un saludo,
 
Vidal Toboso 
 
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20070412/0f10d4f3/attachment-0001.htm


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