[Fwd: [Gvsig_desarrolladores] Proyecto fin de carrera - gvSig Extension - Analisis de la RED]

Mario Carrera carrera_marrod en gva.es
Mar Mar 20 13:27:22 CET 2007


Hola Miguel,
adjunto un correo que se envió hace un tiempo a la lista de 
desarrolladores. Por otra parte, en la web de gvSIG también tienes 
disponible un Manual de Scripting, en el apartado Documentación/Manuales.

Un saludo,
           Mario

********************************************************************

Hola, adjunto un poco de documentación relacionada con el tema.

Antes de ponerse a leer, quizá sea un poco necesario explicar cómo está
esto montado.

gvSIG es una PLUGIN sobre un armazón (framework) llamado fwAndami (el
andamio para los amigos) que ofrece un entorno de escritorio para
desarrollar aplicaciones.

Un PLUGIN es cada uno de los directorios que se ven dentro de
gvSIG/extensiones (personalmente pienso que este directorio debería
llamarse plugins porque el uso y a veces abuso de la palabra extensión
confunde al nuevo desarrollador).

Un PLUGIN es el directorio donde se meten EXTENSIONES. Las EXTENSIONES
son clases que extienden Extension y son  lo que recibe los comandos del
fwAndami. La definición de qué extensión recibe qué comando cuando se
pulsa un icono o menú, etc... se hace en los ficheros config.xml del
PLUGIN que contiene esa EXTENSIÓN

Cuando alguien hace lo que se conoce como una "extensión de gvSIG", en
realidad lo que está haciendo es una EXTENSIÓN de fwAndami que tiene
como dependencia previa un PLUGIN de fwAndami llamado gvSIG (que podría
ser cualquier otro) y  puede entonces, o bien crear otro PLUGIN (con lo
que crearía un nuevo directorio dentro de gvSIG/extensiones) con su
EXTENSIÓN o bien incluir su EXTENSIÓN en el PLUGIN gvSIG (con lo que no
necesitaría crear un directorio nuevo). La primera de las opciones es
más recomendable, pues separa la extensión de lo que es el core de gvSIG
con lo que, por ejemplo, tras una actualización no se perdería el
trabajo propio al sobreescribir ficheros.

Bueno, para detalles técnicos de implementación, remítanse a los
archivos adjuntos. Y para preguntas pues a la lista de desarrolladores

********************************************************************







-- 


Mario Carrera Rodríguez
Grupo SIG-CAD / gvSIG
Servicio de Organización e Informática
Conselleria d'Infraestructures i Transport
Generalitat Valenciana
Valencia (España)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20070320/0be93954/nsmail-0001.htm
------------ próxima parte ------------
En Andami, el class loader de cada plugin delega primero en el classloader del sistemaes decir,
 que si se ejecuta desde eclipse buscará por todos los jars que haya en el classpath del proyecto,
 y si se ejecuta desde la linea de comandos, buscará en la variable de entorno CLASSPATH o en el
 argumento -classpath que se pase como parámetro a java.

Si el class loader del sistema no satisface la búsqueda, se buscará en los jars especificados por el config.xml
 del plugin que intenta cargar la clase y si no se encuentra en dichos jars, se buscará en los jars de los plugins de los cuales depende el plugin que intenta cargar la clase.

Por otra parte, FMap tiene un directorio de drivers en los que vas dejando los jars y automáticamente los procesa FMap.
 Sin embargo, FMap no conoce que es usado por Andami, y de hecho, FMap puede ser usado desde otros entornos, por lo que
 no usa directamente el class loader del plugin que tiene la librería fmap.jar en el config.xml. Usa su propio class loader,
 que está definido en el proyecto driver-manager. Este class loader busca en los jars que hay en el mismo directorio del
 driver y de no encontrarla éstos, delega en el classloader padre. El class loader padre, en el caso de gvSIG con Andami
 es el class loader del plugin que accede al driver.

------------ próxima parte ------------
1 Ejecución en segundo plano.

	Es conveniente que la interfaz esté siempre en funcionamiento,
nunca bloqueada, aunque sea sólo para mostrar al usuario que el
programa está procesando. Para ello hay que realizar las tareas
que puedan tomar demasiado tiempo en un thread a parte. La
clase PluginServices proporciona un método estático 
backgroundExecution al cual se le pasa un objeto Runnable, que
es ejecutado en segundo plano, dejando el thread de la interfaz
libre para responder pero con sus eventos bloqueados con el fin
de que la interfaz responda y se redibuje, pero se ignoren los
eventos que produce el usuario mientras se procesa la petición
------------ próxima parte ------------
_______________________________________________
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