source: tol/TolJava/TOLJava-Ejemplos/src/com/hcarralero/toljava/ejemplos/Ejemplo08.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: 5.8 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, TOLMachineException, TOLDate y TOLDateException.
5import com.hcarralero.toljava.TOLMachine;
6import com.hcarralero.toljava.TOLMachineException;
7import com.hcarralero.toljava.TOLDate;
8import com.hcarralero.toljava.TOLDateException;
9import java.util.Calendar;
10import java.util.Date;
11
12/**
13 * 8vo Ejemplo de TOLJava para Consola:
14 *  1) Se crea una instancia de TOLMachine.
15 *  2) Se ejecuta una sentencia TOL para definir el TimeSet ts1.
16 *  3) Se procesa el resultado.
17 *  4) Se muestran los mensajes devueltos por el intéprete de TOL.
18 *  5) Se obtiene la primera fecha de ts1 y se muestra por pantalla.
19 *  6) Se obtiene la última fecha de ts1 y se muestra por pantalla.
20 *
21 * @author Humberto Andrés Carralero López (hcarralero@gmail.com)
22 * @version 1.0
23 * @see com.hcarralero.toljava.TOLMachine, com.hcarralero.toljava.TOLMachineException,
24 *      com.hcarralero.toljava.TOLReal, com.hcarralero.toljava.TOLCode.
25 */
26public class Ejemplo08 {
27
28    /**
29     * @param args los argumenetos de la línea de comandos.
30     */
31    public static void main(String[] args) {
32        //Se crea una instancia de la clase TOLMachine.
33        TOLMachine tm= new TOLMachine();
34        //En una cadena se almacena el código TOL que se ejecutará; en este caso
35        //el código es para definir un TimeSet que representa a "todos los lunes del año 2011"
36        String code= "TimeSet ts1= WD(1)*Y(2011);";
37        //Se invoca el intérprete de TOL para ejecutar el código pasado por parámetro.
38        //El resultado es un arreglo de cadenas Object.
39        Object res[]= tm.execute(code);
40        System.out.println();
41        if (res==null) {
42            //Si el resultado es nulo, entonces se ha producido un error en el acceso a TOL.
43            System.out.println("ERROR ACCEDIENDO A TOL->execute");
44        } else {
45            //Se ha logrado acceder al intérprete y ejecutar el código.
46            int ne= 0;
47            try {
48                //La primera cadena representa el número de errores detectado por el Intérprete de TOL.
49                ne= Integer.parseInt((String)res[0]);
50                if (ne>0) {
51                    //El intérprete de TOL reportó al menos un error.
52                    System.out.println("Se ha(n) detectado "+ne+" error(es)");
53                } else {
54                    //El intérprete de TOL no reportó errores.
55                    System.out.println("No se han detectado errores");
56                }
57                //Los siguientes objetos que conforman la respuesta del intérprete pueden ser:
58                //Warnings, Errores o mensajes generados por el código TOL ejecutado.
59                //Para procesar los mensajes generados debe comprender el formato de
60                //estos mensajes. (Consulte la documentación de TOL).
61                for (int i= 1; i<res.length; ++i) {
62                    //Cada objeto es una cadena
63                    String strRes= (String)res[i];
64                    //Se obtiene la longitud de la cadena.
65                    int l= strRes.length();
66                    if (strRes.charAt(0)=='<'&&strRes.charAt(2)=='>'&&(strRes.charAt(1)=='E'||strRes.charAt(1)=='W')&&l>=7) {
67                        //En este caso el mensaje es un 'W'arning o un 'E'rror.
68                        System.out.println("\t"+strRes.substring(3, l-5));
69                    } else {
70                        //En este caso es un mensaje común.
71                        System.out.println("\t"+strRes);
72                    }
73                }
74                //Se crea una variable calendario usado para posteriormente imprimir las fechas del TimeSet
75                Calendar cal= Calendar.getInstance();
76                //Para obtener la fecha inicial usaremos una fecha que sabemos es anterior a la primera fecha del TimeSet
77                TOLDate f1= new TOLDate(2010, 12, 31);
78                //Se obtiene la primera fecha del TimeSet buscando el sucesor de una fecha del año anterior
79                TOLDate fini= tm.getTimeSetNextDate("ts1", f1);
80                //Se establece en el calendario la fecha obtenida para su impresión
81                cal.set(fini.getYear(), fini.getMonth()-1, fini.getDay(), fini.getHour(), fini.getMinute(), (int)fini.getSecond());
82                //Se imprime la primera fecha del TimeSet
83                System.out.println("Fecha Inicial==> ["+new Date(cal.getTimeInMillis()).toString()+"]");
84                //Para obtener la fecha final usaremos una fecha que sabemos es posterior a la última fecha del TimeSet
85                TOLDate f2= new TOLDate(2012, 1, 1);
86                //Se obtiene la última fecha del TimeSet buscando el antecesor de una fecha del año siguiente
87                TOLDate ffin= tm.getTimeSetPrevDate("ts1", f2);
88                //Se establece en el calendario la fecha obtenida para su impresión
89                cal.set(ffin.getYear(), ffin.getMonth()-1, ffin.getDay(), ffin.getHour(), ffin.getMinute(), (int)ffin.getSecond());
90                //Se imprime la primera fecha del TimeSet
91                System.out.println("Fecha Final==> ["+new Date(cal.getTimeInMillis()).toString()+"]");
92            } catch (NumberFormatException ex) {
93                //Algo inusual (ERROR INTERNO DE TOLJava) ha ocurrido.
94                System.out.println("ERROR DE ACCESO AL NÚMERO DE ERRORES");
95            } catch (TOLMachineException ex) {
96                //Algún error ha ocurrido en el acceso a la variable f.
97                System.out.println("ERROR accediendo al TimeSet ts1: "+ex.getMessage());
98            } catch (TOLDateException ex) {
99                //Algún error ha ocurrido en el manejo de la variable de fecha (date).
100                System.out.println("ERROR accediendo al TimeSet ts1: "+ex.getMessage());
101            }
102        }
103    }
104}
Note: See TracBrowser for help on using the repository browser.