Mucho por aprender en Tecnologia JAVA.......

Recorrer un Listado de Objetos en Java

| martes, 25 de diciembre de 2012

Supongamos que tenemos un Listado de Objetos "Cuentas" y necesitamos iterarlo para extraer sus valores y efectuar una serie de operaciones, aqui tenemos las formas de hacerlo: Primero importamos las siguientes clases:
import java.util.Iterator; //Importo la interfaz Iterator para iterar el arrayList
import java.util.ArrayList; //Importo la clase ArrayList para poder usar la lista

Una forma de recorrer el Listado es :
ArrayList listaCuentas = new ArrayList(); //Creo el ArrayList;

Iterator iterador = listaCuentas.listIterator(); //Le solicito a la lista que me devuelva un iterador con todos los el elementos contenidos en ella

//Mientras que el iterador tenga un proximo elemento
while( iterador.hasNext() ) {
       Cuenta b = (Cuenta) iterador,next();
}
La Segunda forma es:
for ( Iterator iterador = listaCuentas.listIterator(); iterador.hasNext(); ) {
      Cuenta b = (Cuenta) iterador.next();
}
Como verán en esta ultima forma en la primer parte de la estructura for defino e inicializo la variable de control, en este caso el iterador, en la segunda parte defino la condición de corte del bucle, y como incremento de la variable no necesito, ya que no se va incrementando el iterador ni nada por el estilo, simplemente dentro del for pido sus elementos. Aqui les muestro un ejemplo cuando se requiere eliminar un elemento del listado que estamos recorriendo:
List lDetDocumentos = null;
lDetDocumentos = documentosDao.obtenerDetalleDocCobro(254362);

if(lDetDocumentos.size()>0){
   Iterator iterador = lDetDocumentos.listIterator(); 
   while( iterador.hasNext() ) {
    DetalleDocCobro b = (DetalleDocCobro) iterador.next();
    System.out.println(b.codigo);
   //si es necesario lo borramos con:
          //iterador.remove();
   }
}

Convertir una fecha String a un objeto java.sql.Date

| sábado, 22 de diciembre de 2012
Si se requiere convertir una fecha en formato String del tipo por ejemplo "2003/01/10" a un objeto tipo Date para enviarlo como parametro a una sentencia SQL o Stored Procedure/Function se puede usar lo siguiente
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class MainClass {

  public static void main(String[] args) throws ParseException {
    try {
      SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
      String date = "2003/01/10";
      java.util.Date utilDate = formatter.parse(date);
      java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
      System.out.println("date:" + date);
      System.out.println("sqlDate:" + sqlDate);
    } catch (ParseException e) {
      System.out.println(e.toString());
      e.printStackTrace();
    }

  }

}

Convertir un Date en un String en formato dd/MM/yyyy

|
Si tenemos un valor del tipo Date y lo queremos convertir en una fecha, por ejemplo, en el formato "dd/MM/yyyy" , simplemente hay que hacer:
java.util.Date date = new java.util.Date(); 
java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("dd/MM/yyyy");
String fecha = sdf.format(date);
Con la clase SimpleDateFormat, podemos dar el formato que deseemos a las fechas. Si por ejemplo quisiésemos poner la fecha en formato anglosajón, simplemente habría que cambiar la línea donde usamos el constructor por lo siguiente:
java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy/MM/dd");

Cambiar formato miles en Ireport

|
Cuando presentamos reportes hechos en iReport el algunos casos debemos mostrar datos numéricos o flotantes con varios puntos decimales para ellos ingresamos en el campo "Pattern" aquel patrón que convierta este en los decimales que necesitemos, tal como "#,#00.00". 

Sin embargo cuando compilamos el reporte y lanzamos desde Java su llamado nos muestra en un formato distinto al configurado con la propiedad "Pattern".Por ejemplo si deseamos mostrar el siguiente monto 1.000,24 al ejecutar el reporte nos mostraría lo siguiente 1,000.24 

Esto tiene que ver con el idioma que se haya configurado o enviado desde Java, sino enviamos ningún parámetro de idioma dese Java se tomara el por defecto el cual es US.

La solución es agregar un parámetro mas desde Java tal como sigue:

parametros.put("REPORT_LOCALE", new Locale("es", "ES"));

Si se desea mostra en formato estadounidense con la separacion de miles por puntos enviar lo siguiente:

parametros.put("REPORT_LOCALE", new Locale("en", "US"));

Convertir Proyecto JAVA a un Proyecto WEB en Eclipse

|
En ocasiones tenemos un proyecto realizado en Java y necesitamos convertirlo a un proyecto Web Java manteniendo todo el código desarrollado, pues bien aquí les muestro una manera sencilla de hacer esto: 


Primero: Abrimos el proyecto Java en nuestro Eclipse (estoy usando la versión Helios, en general debe funcionar para cualquier versión).

proyecto java en eclipse
Proyecto Java en Eclipse


Segundo:Damos click derecho sobre el proyecto y seleccionamos sus propiedades.Se muestra una pantalla y seleccionamos "Project Facets" y damos click en el link "convert to faceted form..."

propiedades del proyecto java
Propiedades del Proyecto Java


Seleccionamos "Dynamic Web Module" y "Java"


project facets
Project Facets

Por defecto eclipse generara todos los archivos web (tales como web.xml, WEB-INF,etc) en un folder llamado "WebContent".Si se requiere cambiar la ruta de la carpeta "WebContent", damos click en el link "Further configuration available".

Tercero:  Hecho esto el proyecto java sera convertido a un proyecto web , y se podrá ver el icono de globo de Internet sobre el proyecto.

proyecto web java
Proyecto Web Java

Tiempo de vida por defecto para una sesion en Tomcat

| sábado, 15 de diciembre de 2012
Tiempo de vida por defecto para una sesion en Tomcat

Una de las cosas que se suele olvidar durante el desarrollo de una nueva aplicación web es configurar el tiempo de vida o timeout de la sesión http en el fichero web.xml de la aplicación. Y si esto pasa, ¿habrá timeout o no? Y si lo hay ¿cuánto?

Pues ésto es lo último que he aprendido. En Tomcat existe un fichero web.xml para todos los valores por defecto no fijados en los web.xml de cada aplicación. Se encuentra en la carpeta conf. Si echamos un vistazo por él, encontraremos esto:


<session-config>
   <session-timeout>30</session-timeout>
</session-config>
Así que la respuesta es... 30 minutos! Si queremos modificarlo, añadimos la configuración en el web.xml de nuestra aplicación con el valor deseado, -1 para no tener timeout.

Se puede hacer de 2 maneras:

- Programaticamente:
 
  Cuando crees la session le setteas el tiempo de duración de la siguiente forma:
 
  HttpSession sesion = request.getSession();
  sesion.setMaxInactiveInterval(60);

  el método recibe un entero que es la cantidad de segundos que quieres que dure la sesion. Si le  
  colocas -1 la sesion nunca expirará.

- Declarativamente:

En el web.xml colocas la siguiente etiqueta, y de esta forma configuras el tiempo para todas las sesiones:

<session-config>
   <session-timeout>60</session-timeout>
</session-config>

session time en web.xml
Session Time en Web.xml

Ampliar JVM en Tomcat

|
Ampliar JVM en Tomcat

Si se necesita añadir más memoria para Tomcat en la Máquina Virtual de Java debemos corriendo en Windows se debe hacer lo siguiente:

- Si Tomcat inicia con un .bat:
Añadimos la siguiente linea dentro de catalina.bat

set JAVA_OPTS=%JAVA_OPTS% -Xmx512m -Xms512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m

opcional:
set CATALINA_OPTS=-Xms512m -Xmx512m

- Si Tomcat inicia desde un exe, abrimos tomcatw, que nos facilita la gestión de propiedades y en la pestaña de Java agregamos lo siguiente:
-Xms512m -XX:PermSize=256m

- Si Tomcat esta configurado dentro de Eclipse como un New Server, entonces debemos ir la pestaña Windows - Preferences - Tomcat - JVM Settings y pulsar en el boton ADD de la caja de texto que dice "Append to JVM Paremeters". Agregams lo siguiente:
-Xmx512m -Xms512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m


Amplicar JVM en tomcat 6
Ampliar JVM en Tomcat 6.0

Instalacion Servidor SVN en Windows

| sábado, 26 de mayo de 2012
svn - java para expertos

Muchas veces es necesario tener un sistema que permita mantener un control del codigo fuente que desarrollamos asi como de los diversos documentos, datos importantes como quien, en que momento y que cambios realizo tal persona en tal documento en tal fecha.

Subversion , es un sistema de control de versiones el cual es el reemplazo del antiguo CVS , esta herramienta puede ser gestionada via comandos o visualmente tanto en entornos Windows como GNU/Linux.

Este sistema en conjunto es una solucion con 2 componentes , primero instalaremos el servidor SVN el cual contendra los usuarios , permisos y repositorios para acceder al sistema. En segundo lugar instalaremos el cliente SVN con el cual accederemos via WEB o via ESCRITORIO al servidor.

Para este tutorial necesitaremos las siguientes herramientas:
- Visual SVN Server  (Servidor SVN) 
- Cliente SVN Tortoise            (Cliente SVN)

1.- Instalacion de Visual SVN Server:
      Primero verificamos los requisitos del sistema operativo:
requisitos servidor visual svn
Ejecutamos el archivo descargado:

instalacion visual svn
Aceptamos los terminos:
instalacion servidor svn
Marcamos si deseamos instalar la consola administrativa y ademas en entorno de administracion visual:
instalacion servidor svn
Ingresamos la carpeta donde se creara el repositorio , asi como la seguridad para acceso via WEB, por defecto esta marcado con el puerto 443 (https) , asimismo se puede elegir el metodo para autenticacion ya sea administrado por SVN(usara las cuentas creadas dentro del Servidor SVN) o por Windows (usara las cuentas del sistema):
instalacion servidor svn
Por ultimo le damos en "INSTALL" y esperamos que culmine. Despues abrimos la consola:
instalacion servidor svn
La consola se muestra a continuacion:
instalacion servidor svn
Ahora creamos el repositorio para almacenar el codigo fuente y/o documentos:
instalacion servidor svn
Le pondremos un nombre adecuado y marcaremos que nos cree la estructura por defecto :
instalacion servidor svn
Luego crearemos un usuario para que acceda via web o escritorio al servidor seleccionando lo sgte:
crear usuarios svn
Ponemos una contraseña y nombre de usario:
instalacion servidor svn
Eso seria toda la configuracion.Ahora probaremos la conexion al servidor via WEB a través de HTTPS, colocar en el explorador https://localhost/svn/repoejemplo/. Si es primera vez que la visita probablemente su navegador le diga que es una conexión HTTPS y el certificado no es de confianza, agrégar el sitio y el certificado o en el caso de Internet Explorer 7 o superior seleccione Vaya a este sitio web (no recomendado).Se le solicitara el usuario y contraseña, que creamos en la imagen anterior y podra acceder al sistema:
cliente web svn
En el siguiente tutorial conoceremos como configurar un cliente de Escritorio para acceder al servidor SVN usando Tortoise.

OCJP - Oracle Certified Java Programmer

| domingo, 13 de mayo de 2012
Oracle Certified Java Programmer 1.6
oracle certified professional

Despues de que Oracle comprara a SUN el mapa para las  certicaciones ha variado un poco aqui les detallo cuales son sus respectivas equivalentes asi como los codigos de examen al momento de comprar su voucher en Prometric u otro centro autorizado para tomar el examen.  
Aqui les muestro un esquema de certificaciones antiguas basadas en SUN:
oracle certified professional

Ahora se han modificado a este nuevo esquema:

oracle certified professional
 
Sin embargo se recomienda antes de preparse a un examen ver los pre-requisitos para rendirlo tomando en cuenta la siguiente tabla de equivalencias SUN / Oracle, tanto para la version 5 como para la 6:
oracle certified professional
Si estan decididos y desean certificarse en Java, el voucher para el examen lo pueden adquirir via Prometric.
 

Software para Desarrollo en Java

| martes, 8 de mayo de 2012

Listado de Aplicaciones utiles para el Desarrollo en Java:
- iReport 4.5.1 :  Descargar iReport 4.5.1
- jdk 1.6.0_u32 : Descargar jdk 1.6.0_u32
- jdk 1.5.0.22 :    Descargar jdk 1.5.0.22
- VisualSVN-Server-2.5.5 :    Descargar VisualSVN-Server-2.5.5