source: tol/TolJava/TOLJava-Ejemplos/src/com/hcarralero/toljava/ejemplos/Ejemplo03.java @ 9887b93

1941-docker-image-to-testdevel
Last change on this file since 9887b93 was 9887b93, checked in by Humberto Carralero <hacarralero@…>, 15 years ago

Importing TolJava

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@3900 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 6.7 KB
Line 
1package com.hcarralero.toljava.ejemplos;
2
3//Se deben importar del paquete com.hcarralero.toljava todas las clases a usarse,
4//para este ejemplo se requieren las clases: TOLMachine y TOLVariable.
5import com.hcarralero.toljava.TOLMachine;
6import com.hcarralero.toljava.TOLVariable;
7
8/**
9 * Tercer Ejemplo de TOLJava para Consola:
10 *  1) Se crea una instancia de TOLMachine.
11 *  2) Se ejecuta una sentencia TOL para definir las variables mensaje1 (Text),
12 *     mensaje2 (Text), mensaje3 (Text), num1(Real), b (real) y fnac (Date).
13 *  3) Se procesa el resultado.
14 *  4) Se muestran los mensajes devueltos por el intéprete de TOL.
15 *  5) Se obtiene un arreglo con las varibale de tipo Text (podría ser similar
16 *     para cualquier otro tipo de dato.
17 *  6) Se recorre el arreglo obtenido y se muestra por pantalla.
18 *
19 * @author Humberto Andrés Carralero López (hcarralero@gmail.com)
20 * @version 1.0
21 * @see com.hcarralero.toljava.TOLMachine, com.hcarralero.toljava.TOLVariable
22 */
23public class Ejemplo03 {
24
25    /**
26     * @param args los argumenetos de la línea de comandos.
27     */
28    public static void main(String[] args) {
29        //Se crea una instancia de la clase TOLMachine.
30        TOLMachine tm= new TOLMachine();
31        //En una cadena se almacena el código TOL que se ejecutará; en este caso
32        //el código es para definir las variables mensaje1 (Text),
33        //mensaje2 (Text), mensaje3 (Text), num1(Real), b (real) y fnac (Date).
34        String code= "Text mensaje1= \"Ejecutando el Test #3\";Text mensaje2=\"Hola.\"; Text mensaje3=\"Bienvenido a TOLJava.\"; Real num1= 3.5+7; Real b= 56.9; Date fnac=y1967m02d04";
35        Object res[]= tm.execute(code);
36        //Se invoca el intérprete de TOL para ejecutar el código pasado por parámetro.
37        //El resultado es un arreglo de cadenas.
38        System.out.println();
39        if (res==null) {
40            //Si el resultado es nulo, entonces se ha producido un error en el acceso a TOL.
41            System.out.println("ERROR ACCEDIENDO A TOL->execute");
42        } else {
43            //Se ha logrado acceder al intérprete y ejecutar el código.
44            int ne= 0;
45            try {
46                //La primera cadena representa el número de errores detectado por el Intérprete de TOL.
47                ne= Integer.parseInt((String)res[0]);
48                if (ne>0) {
49                    //El intérprete de TOL reportó al menos un error.
50                    System.out.println("Se ha(n) detectado "+ne+" error(es)");
51                } else {
52                    //El intérprete de TOL no reportó errores.
53                    System.out.println("No se han detectado errores");
54                }
55                //Los siguientes objetos que conforman la respuesta del intérprete pueden ser:
56                //Warnings, Errores o mensajes generados por el código TOL ejecutado.
57                //Para procesar los mensajes generados debe comprender el formato de
58                //estos mensajes. (Consulte la documentación de TOL).
59                for (int i= 1; i<res.length; ++i) {
60                    //Cada objeto es una cadena
61                    String strRes= (String)res[i];
62                    //Se obtiene la longitud de la cadena.
63                    int l= strRes.length();
64                    if (strRes.charAt(0)=='<'&&strRes.charAt(2)=='>'&&(strRes.charAt(1)=='E'||strRes.charAt(1)=='W')&&l>=7) {
65                        //En este caso el mensaje es un 'W'arning o un 'E'rror.
66                        System.out.println("\t"+strRes.substring(3, l-5));
67                    } else {
68                        //En este caso es un mensaje común.
69                        System.out.println("\t"+strRes);
70                    }
71                }
72                //Se obtiene un listado de las variables tipo Text definidas en TOL.
73                TOLVariable vars[]= tm.getTextVariables();
74                if (vars==null) {
75                    //Algo inusual (ERROR INTERNO DE TOLJava) ha ocurrido.
76                    System.out.println("ERROR DE ACCESO AL MÉTODO NATIVO: nativeGetTextVariables");
77                } else {
78                    //Se obtiene el número de variables tipo Text.
79                    int nv= vars.length;
80                    if (nv>0) {
81                        //En este caso se ha definido al menos una variable.
82                        System.out.println("Se han definido "+nv+" variable(s) de tipo Text:");
83                        //Iteramos sobre el arreglo de variables tipo Text definidas.
84                        for (int i= 0; i<nv; ++i) {
85                            //Cada elemento del arreglo es una variable.
86                            TOLVariable var= vars[i];
87                            //Nombre de la variable, se inicializa con un valor "basura".
88                            String name= "NO_NAME";
89                            //Valor de la variable, se inicializa con un valor "basura".
90                            Object value= "NO_VALUE";
91                            //Descripción de la variable, se inicializa a un valor "basura".
92                            String desc= "NO_DESC";
93                            if (var!=null) {
94                                //La variable no es NULA (esto es lo CORRECTO).
95                                if (var.getName()!=null) {
96                                    //Obtenemos el nombre de la variable (NO DEBERÍA SER NULO).
97                                    name= var.getName();
98                                }
99                                if (var.getValue()!=null) {
100                                    //Obtenenos el valor de la variable.
101                                    value= var.getValue();
102                                }
103                                if (var.getDesc()!=null) {
104                                    //Obtenemos la descripción (Pidiera ser vacía.
105                                    desc= var.getDesc();
106                                }
107                            }
108                            //Se imprimen todos los atributos de la variabe: nombre. valor y descripción.
109                            System.out.println("\t["+name+"]==>["+value.toString()+"]==>["+desc+"]");
110                        }
111                    } else {
112                        System.out.println("No se han definido Variables tipo Text");
113                    }
114                }
115                //Para hacer este proceso para otro tipo de variables, sólo debe usar el método adecuado; los
116                //posibles métodos son: getRealVariables(), getComplexVariables(), ...;
117            } catch (NumberFormatException ex) {
118                //Algo inusual (ERROR INTERNO DE TOLJava) ha ocurrido.
119                System.out.println("ERROR DE ACCESO AL NÚMERO DE ERRORES");
120            }
121        }
122    }
123   
124}
Note: See TracBrowser for help on using the repository browser.