[Gvsig_desarrolladores] Llamar a un script python desde java y recuperar el valor devuelto

Joaquin Jose del Cerro Murciano jjdelcerro en gvsig.org
Mie Nov 9 09:38:17 CET 2016


El 8 de noviembre de 2016, 21:23, Francisco Puga <fpuga en icarto.es> escribió:

> Hola,
>
> Me preguntaba si es posible llamar desde una extensión escrita en Java a
> un script en python y recuperar el valor devuelto
>
> Por ejemplo tengo un script tipo:
>
> def points_to_polygon(point_list):
>     polygon = do_things_with_the_points(point_list)
>     return polygon
>
> y en java algo del tipo:
>
> List<IGeometry> pointList = null;
> IGeometry polygon = Script.points_to_polygon(pointList)
>
> Hola Francisco,
asi sin pensar mucho.

ScriptingManager manager = ScriptingLocator.getManager();
ScriptingScript script = manager.getScript(script_file);
Object x = script.run();

Hecha un vistazo a:

http://downloads.gvsig.org/download/gvsig-desktop-testing/dists/2.3.0/javadocs/html/org/gvsig/scripting/ScriptingScript.html

Y veras que tienes un run sin parametros, otro con, y un invokeFunction que
te permiten
invocar al main (en caso del run) o a las funciones que quieras del script
y recoger los
valores de vuelta.

Tambien tienes la posibilidad de devolver un objeto cuya clase esta
definida en python
y usar luego invokeMethod para invocar a metodos de este.

Y puedes hacer que el script devuelba un objeto que implemente un interface
de java (o
una clase java directamente) y entonces seria transparente acceder a este
una vez
recuperado con run/invokeMethod.

Tambien puedes incluir tus scripts en el plugin de java, si que estas
haciendo un
plugin mixto con codigo java y scripts y asi va todo en un solo paquete.
Si miras en la instalacion de gvSIG el plugin de
"org.gvsig.app.mainplugin", veras que
tienes una carpete "scripting/scripts". Si creas esa carpeta en tu plugin
aparecera
en la pestaña de sistema en el editor de scripts y se incluira
automaticamente
en la ruta de busquedas de scripts.

Ups!
se me olvidaba, tendras que añadir la dependencia en el config.xml de tu
plugin con
el plugin de scripting, añadir al pom de tu proyecto dependencias con

        <dependency>
            <groupId>org.gvsig</groupId>
            <artifactId>org.gvsig.scripting.lib.api</artifactId>
            <scope>compile</scope>
        </dependency>

y en el pom padre de tu proyecto en el dependencies management algo como:

            <dependency>
                <groupId>org.gvsig</groupId>
                <artifactId>org.gvsig.scripting</artifactId>
                <version>Aqui-la-version-que-toque</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

La version tendras que mirarla en la instalacion de gvSIG contra la que
quieras compilar, por ejemplo mirando la del jar:


gvSIG/extensiones/org.gvsig.scripting.app.mainplugin/lib/org.gvsig.scripting.lib.api-2.3.31.jar

Seria la 2.3.31
(la que he puesto es la del jar que tengo en este momento en mi equipo, lo
mejor es que uses la que tengas en la misma version de gvsig contra la que
estes compilando tu plugin)

Ya cuantas si tienes problemas.

Un saludo
Joaquin



> Gracias.
>
> --
> Francisco Puga
> iCarto | Innovación, Cooperación, Cartografía y Territorio S.L.
> http://www.icarto.es/
>
> c/ Rafael Alberti nº 13 – 1º D
> 15008 A Coruña
> Galicia (Spain)
> +34 881927808
>
> Este correo electrónico contiene información estrictamente confidencial y
> es de uso exclusivo del destinatario, quedando prohibida a cualquier otra
> persona su revelación, copia, distribución, o el ejercicio de cualquier
> acción relativa a su contenido. Si ha recibido este mensaje por error, por
> favor conteste a su remitente mediante correo electrónico y proceda a
> borrarlo de su sistema.
>
> Sus datos personales serán tratados de forma confidencial y no serán
> cedidos a terceros ajenos a ICARTO. En cualquier caso, podrá ejercer los
> derecho de oposición, acceso, rectificación y cancelación de acuerdo con lo
> establecido en la Ley Orgánica 15/99, de 13 de diciembre, de Protección de
> Datos de Carácter Personal dirigiéndose a Innovación, Cooperación,
> Cartografía e Territorio, SL. (ICARTO) en la dirección postal a C/ Rafael
> Alberti, nº 13, 1ºD, 15.008 – (A Coruña).
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
>


-- 
--------------------------------------
Joaquin Jose del Cerro Murciano
Development and software arquitecture manager at gvSIG Team
jjdelcerro en gvsig.com
jjdelcerro en gvsig.org
gvSIG Association
www.gvsig.com
www.gvsig.org
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20161109/7043cf11/attachment.html>


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