Saltar al contenido

www. La Mandarina Mecánica .es

…ahora con internet los niños se te educan solos… Homer Simpson…

Archivo

Categoría: Java

INTRODUCCIÓN:

En Java, a la hora de crear documentos PDF, existen múltiples librerias que nos ayudan a generarlos, en este articulo vamos a hablar sobre la librería ITEXT.

ITEXT a parte de ser una buena librería para generar PDFs tiene la ventaja de que se integra facilmente con SPRING a la hora de desarrollar aplicaciones Web.

Los datos pueden ser escritos a un fichero o, por ejemplo, desde un servlet a un navegador web.

CARACTERÍSTICAS PRINCIPALES:

- Generación de documentos PDF (parrafos, tablas, imágenes, encabezados y pies de pagina…)

- Generar documentos dinámicos a partir de archivos XML o bases de datos

- Agregar marcadores de libros, números de página, marcas de agua, etc

- Split, concatenar, y manipular las páginas PDF

- Automatizar el llenado de formularios PDF

- Agregar firma digital a un archivo PDF

continúe leyendo…

Os dejo tres ejemplos para poder conectarnos desde Java con Oracle, con JDBC y ODBC.
JDBC es la interfaz que proporciona Java para la conexión a bases de datos. Son un conjunto de clases e interfaces que se utilizan para comunicarnos con la BD.
Para poder conectar Java con ORACLE lo primero que necesitamos es la implementación de JDBC para ORACLE. Esta implementación se encuentra en el archivo Classes12.jar que podemos encontrar en el siguiente directorio del servidor de Oracle.
%ORACLE_HOME%\jdbc\lib
Necesitamos añadir el controlador en el Classpath, o incluirlo como .jar.

Conectando con Oracle por JDBC (THIN y OCI).
Tenemos dos tipos de conexión JDBC, Thin y OCI ,
Para utilizar Thin necesitamos saber el host, el puerto, y el SID de la BBDD.

public void classcon3(){           
  try { 
          Class.forName(”oracle.jdbc.driver.OracleDriver”);
  } catch (ClassNotFoundException ex) {            
        ex.printStackTrace();                
  }
}             
public void classcadena3(){                      
  try{
    String urll;
    urll = “jdbc:oracle:thin:@nombre_host:1521:SID_10G”;
Connection conexion=DriverManager.getConnection(urll,”user90″,”pass90″);
Statement stmt = conexion.createStatement();              
ResultSet rset = stmt.executeQuery(”select * from errores”);

while(rset.next()){                
System.out.println(rset.getString(2) );
}
} catch(SQLException s){                         
s.printStackTrace();  
} }

Para utilizar OCI tenemos que tener instalado Oracle 10g client, usaremos el 10g driver para hacer la conexión. Con OCI solo necesitaremos saber el nombre de la BBDD para conectar.

continúe leyendo…

He encontrado esta herramienta (freeware), Java Decompiler, con la que puedes obtener el código fuente de un .class.
Soporta todos los ‘jdk’ desde 1.1.8 hasta 1.6.0, y es muy fácil de usar.
Esta es la página del Autor, desde la que os podéis bajar el JDecompiler.

jdecompiler

Imagina que en función de un parámetro tuvieses que ejecutar una clase u otra, lo primero que se nos viene a la cabeza es hacer un IF-ELSE tantas veces como valores diferentes pueda tener el parametro y dentro de cada IF crear una instancia de la clase correspondiente, si por ejemplo el parámetro pudiese tomar 100 valores diferentes quedaría un IF inmenso y poco legible. Ejemplo1 (con 5 tareas usando IF-ELSE): continúe leyendo…

Hace poco os hablamos de la realidad aumentada en videojuegos, y pusimos Invizimals para PSP como ejemplo. Nintendo no se ha hecho esperar, y ha presentado en NDSi un impresionante juego en reales 3D, Rittai Kakushi e Attakoreda. Mediante la tecnología Head Tracking, esto es, seguimiento de la cabeza que esta delante de la cámara, la imagen gira y nos muestra las imágenes como si estuviéramos mirando dentro de una caja, de manera que según la perspectiva podemos encontrar la solución al acertijo. El resultado es prometedor:

YouTube Preview Image

De momento sólo estará disponible en la DSi Ware japonesa, esperemos que pronto esté en occidente.

Quartz es un framework el cual nos permite planificar tareas en Java de una forma muy sencilla, es muy potente ya que, por configuración, nos permite establecer una gran cantidad de parámetros a la hora de planificar una tarea como por ejemplo:

 

- Una tarea que se ejecute indefinidamente con un intervalo de tiempo T entre ejecuciones.

- Una tarea que se ejecute N veces con un intermedio entre tareas T

- Una tareas se ejecute todos los dias a una hora determinada.

- Una tarea que se ejecute semanalmente, mensualmente…

 

Para ello Quartz se basa en tres conceptos:

 

-       Scheduler: Quien se va a encargar de ejecutar las tareas según la forma en que se hayan programado. 

-       Job: La tarea que se va a ejecutar. 

-       Trigger: Indica la forma como se tiene que ejecutar esa tarea (hora inicio, hora fin, periodicidad…). Los trigger pueden ser de dos tipos:

 

o    SimpleTrigger: Nos permite especificar: 

- La hora a la que se va a lanzar la tarea.

- La hora a la que se va a dejar de ejecutar la tarea.

- Cuantas veces se va a ejecutar la tarea (Puede ser indefinidamente).

- Intervalo entre las ejecuciones de la tarea.

 

o    CronTrigger: Nos permite planificar la ejecución de tareas basandonos en fechas (cada día, cada semana…), Nos permite especificar: 

- Segundo.

- Minuto.

- Hora.

- Dia del mes.

- Mes.

- Dia de la semana.

 

Descarga: 

Los links de descarga son estos: 

http://www.quartz-scheduler.org/download/index.html

 

Instalación:

 

Para poder utilizar Quartz hay que añadir al classPath de nuestra aplicación las librerias de Quartz. Para el ejemplo se han utilizado estas librerias: 

- quartz-1.6.6.jar

- commons-logging-api-1.1.jar

En el siguiente ejemplo se planificarán dos tareas, una de ellas utilizando un SimpleTrigger y la otra utilizando un CronTrigger.

Para ello se utilizan tres clases:

   - PlanificadorQuartz.java (Aquí se configura el planificador)
   - Tarea1Quartz.java (tarea a ejecutar planificada con el SimpleTrigger)
   - Tarea2Quartz.java (tarea a ejecutar planificada con el CronTrigger)

A continuación vamos a ver la forma de instanciar las tareas y los trigger que es la unica parte del ejemplo que es un poco más compleja:

Instanciación de los Trigger:
 
 SimpleTrigger:
  
Los objetos SimpleTrigger son instancias de la clase java.org.quartz.SimpleTrigger, sus argumentos son:

- name: Nombre del Trigger.
- group: Grupo al que pertenece el Trigger.
- startTime:  Hora a la que se comienza a ejecutar el Trigger.
- endTime: Hora a la que se deja de ejecutar el Trigger.
- repeatCount: Número de veces que se la tarea, para que se ejecute  indefinidamente se utiliza REPEAT_INDEFINITELY.
- repeatInterval: Tiempo en milisegundos entre cada ejecución de la tarea programada.
 
SimpleTrigger st1=new SimpleTrigger(name, group, startTime, endTime, repeatCount, repeatInterval);
 
Ejemplo1: Un trigger que se lanza una sola vez pasados 10 segundos desde la hora actual.

name = “st1”
group = “g1”
startTime = System.currentTimeMillis() + (10L*1000L)
endTime = null
repeatCount = 0
repeatInterval = 0L

Ejemplo2: Un trigger que se lanza el 20 de Marzo del 2010 a las 9:00 a.m. que se repite 5 veces con un tiempo entre cada ejecucion de 10 seg

Para ello primero hay que obtener en milisegundos esa fecha:

java.util.Calendar cal = new java.util.GregorianCalendar(2007,cal.MARCH, 20);
cal.set(cal.HOUR, 9);
cal.set(cal.MINUTE, 00);
cal.set(cal.SECOND, 0);
cal.set(cal.MILLISECOND, 0);

Data start = cal.getTime();
 
name = “st1”
group = “g1”
startTime = start
endTime = null
repeatCount = 5
repeatInterval = 20L*1000L

 CronTrigger:

Los objetos CronTrigger son instancias de la clase java.org.quartz.CronTrigger, sus argumentos son:

- name: Nombre del Trigger.
- group: Grupo al que pertenece el Trigger.
- Cron-expression: Como hemos visto antes los CronTrigger nos permiten realizar planificaciones basandonos en fechas, para realizar esta planificación hay que utilizar unas exprexiones que definan segundo, minuto, hora, dia mes, mes y dia semana, de una forma entendible por el planificador, esta es la forma:

La Cron-Expresion es un String con este formato:

“segundo  minuto  hora  diaMes  mes  diaSemana”

Donde:
  segundo = valor entre 0 y 59
  minuto = valor entre 0 y 59
  hora = valor entre 0 y 23
  diaMes = valor entre 0 y 31
  mes = valor entre 0 y 11
  diaSemana = valor entre 1 y 7

Caracteres especiales:
  
/ = Indica un incremento, por ejemplo en el campo minuto si se pone 0/1 indica que se lanzará cada minuto
* = Indica que se seleccionan todos los posibles valores, si se usa en el campo mes, se ejecutaria todos los meses, si se usa en el campo diaSemana se ejecutará todos los dias.
L = En el caso de diaMes o diaSemana indica el último día del mes seleccionado o el ultimo día de la semana
? = En el caso de diaMes o diaSemana indica que no se ha seleccionado ningún valor en especial
CronTrigger ct1=new CronTrigger(”name”,”group”,”cron-expression”);

Ejemplo1: Trigger que se lanza cada 5 segundos indefinidamente

 ”0/5 * * * * ?”

Ejemplo2: Trigger que se lanza cada 30 min desde las 9 hasta las 13, es decir
       A las 9:30, 10:30, 11:30, 12:30 y 13:30
 
  ”0  30  9-13  *  *  ?”

Bueno, una vez comentada toda esta parte teórica vamos con el ejemplo:

continúe leyendo…

En muchas aplicaciones Java, es muy frecuente que tengamos la necesidad de ejecutar tareas periódicamente, muchas pueden ser las razones que nos lleven a ello, llamar periódicamente a un script que actualice una BBDD, comprobar periódicamente ciertos datos de la BBDD y dependiendo de sus valores mostrar una alarma al usuario…

Si nos encontramos ante la necesidad de hacer un desarrollo de este tipo, tenemos múltiples opciones para afrontarlo, la solución ‘casera’ es que la propia API de Java nos proporciona utilidades para hacerlo, la otra solución es, como siempre, recurrir a librerías externas al API de Java, en este artículo vamos a utilizar la librería QUARTZ.

Veamos que nos ofrece la API de Java.

La API de Java nos ofrece las clases:

- java.util.Timer
- java.util.TimerTask

Clase Timer

La clase Timer nos permite ejecutar las tareas de una forma programada, cada Timer en realidad es un Thread de Java que ejecuta todas los TimerTask que tenga asignados secuencialmente.

Sus métodos más importantes son:
  Cancel( ): Termina el Timer descartando todas las tareas planificadas.
  Schedule( ): Planifica la tarea a ejecutar (Consultar  API para ver todas las opciones posibles).

Clase TimerTask

La clase TimerTask representa la tarea que se debe ejecutar periódicamente.
Para utilizarla tenemos que construir una clase que extienda de la clase TimerTask y sobreescribir el método run(), dentro de este método irá le código que queremos que se ejecute cuando se lance la tarea.
Sus métodos más importantes son:

  Run( ) : Este método es el que se sobreescribe para que la tarea ejecute nuestro código.
  Cancel( ): Desplanifica esta tarea (no se vuelve a ejecutar) pero no para el Timer que la ejecuta.

Mostrar el código del ejemplo.

continúe leyendo…

Siguiendo con los Juegos en Java, os pongo el código del Busca-Minas todo un clásico.
La verdad que éste me ha parecido bastante fácil de realizar, ideal para ir probando como funcionan las cosas en java.

Os dejo un .zip por que si copias el código, vuestro IDE os transformará las comillas, a comillas raras, que no cómpilan.

Busca-minas (.rar)

Busca Minas JAVA
Busca Minas JAVA

El código….

continúe leyendo…

Navigation »