martes, 16 de marzo de 2010

Mejores prácticas al programar en Java

Aquí les dejo una presentación sobre las mejores prácticas al programar en Java.
Les sugiero que tomen apunten de estos tips, pues me di cuenta que aveces también caemos en lo erróneo.

Vía | JavaCurioSities

lunes, 15 de marzo de 2010

Leer Excel con Java

Para leer los datos de un hoja de cálculo, sólo nos es necesario:
-Jar JXL(Descargalo aquí).
-1 Hoja de calculo de Ejemplo
-Y el siguiente código.
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
/**
 * @author JocLuis
 */
public class NewClass {
    public static void main(String[] args) throws IOException, BiffException {
        //ruta de la hoja del calculo 
        Workbook workbook = Workbook.getWorkbook(new File("c://Libro1.xls"));
        Sheet sheet = workbook.getSheet(0);//Elegimos la primera hoja
        Cell celdaCurso = null;//inicializo el objeto que leerá el valor de la celda
        String valorCeldaCurso=null;
        celdaCurso= sheet.getCell(7,1);//celda de la columna 7 y fila 1
        valorCeldaCurso= celdaCurso.getContents();//obteniendo valor
        System.out.println(valorCeldaCurso);
        workbook.close();
    }
}

Y esto será el resultado:


También mira:
Exportar de JSP a Excel

lunes, 8 de marzo de 2010

Instalando OpenESB (GlassFish ESB)

En esta oportunidad, vamos a ver los pasos de como instalar OpenESB, para que posteriormente veamos algunos ejemplos.

OpenESB, un proyecto open source que implementa un motor Enterprise Service Bus (ESB) basado en la especificación Java Business Integration (JBI). Un ESB es una pieza clave en las Arquitecturas Orientadas a Servicios (SOA).

Pre Requisitos:
Se requiere haber instalado JDK, según los apuntes de instalación tengamos en cuenta lo siguiente:

Si tienes JDK 5, debe ser una verión mayor o igual a 1.5.0_14
ó
Si JDK 6, debe ser una verión mayor o igual a 1.6.0_10, excepto 1.6.0_13 y 1.6.0_14 debido a incompatibilidades con los editores visuales de diseño de proyectos.

Si aún no tienes instalado JDK puedes entrar a este link para ver como hacerlo.

Instalación:

Descargamos en la página oficial de OpenESB la última versión aquí https://open-esb.dev.java.net/Downloads.html.
Vemos que hay 2 formas de descargarlo:
Full Install: Esta forma contiene GlassFish y NetBeans con los plugins suficiente para iniciar a realizar trabajos de SOA.
Components only:Esta versión solo contiene el ESB sin GlassFish y Netbeans, los cuales los debes tener ya instalado y con sus plugins para que soporte componentes SOA.

En esta ocación recomiendo descargar la versión Full Install para no tener problemas en la hora de buscar los plugins e integrarlo con el GlassFish.

 

Esperemos que descarge e instalamos.

 

Si pulsamos en el botón Customize veremos más claramente los componentes a instalar: el GlassFish ESB DesignTime, que corresponde con NetBeans 6.7.1 con plugins SOA; y GlassFish ESB Runtime, que es el servidor GlassFish con JBI integrado y configurado.



Luego nos pide la ruta donde instalar y la ruta del JDK, esto es importante validar para poder seguir la instalación.


Luego nos pide una serie de configuraciones para los puertos, estos números de puertos nos proporcionan por default. Podemos cambiarlo si es necesario.


Luego nos proporcinan una interfaz de validación de todo lo que hemos hecho anteriormente.


Instalamos y esperamos.


Última pantalla de finalización de la instalación.

 

Y listo, ahora tenemos OpenESB listo para usarlo en nuestro computador.

Abrimos el GlassFish ESB y escogemos nuevo proyecto en la opción SOA:

Los tipos de proyectos que podremos diseñar e implementar son:

Composite Application. En un proyecto de este tipo simplemente añadimos otros proyectos SOA y de servicios web. Cada proyecto incluido se denomina componente o módulo, y son desplegados juntos en el contenedor JBI. Su interacción en runtime implementará una funcionalidad de negocio de SOA.
BPEL Module. Los procesos de negocio que involucran varios servicios web u otros recursos pueden modelarse gráficamente y luego ejecutarse a través de un módulo BPEL. Su capacidad y propósito son mucho más limitados que un BPM, su finalidad es la orquestación de servicios para realizar composición de éstos, práctica esencial en SOA.
XSLT Module. Una de las capacidades de un ESB es la transformación de los mensajes XML que se enrutan a través del Bus. Las transformaciones de un tipo de XML a otro se realizan mediante XSLT, y este módulo nos permite hacerlo.
Data Mashup Module. Consiste en combinar varias fuentes de datos (hojas de cálculo, ficheros, bases de datos, servicios, etc) y presentarlo al servicio consumidor en un formato normalizado, como si fuese un único recurso (e.g., como tablas de base de datos). El ESB hace las tareas de composición de los datos y gestiona sus orígenes, de manera transparente al consumidor que únicamente se centra en su lógica sobre ellos.

Bueno pronto haremos un ejemplo de como utilizar este producto.

sábado, 6 de marzo de 2010

Exportar de JSP a Excel (Table to Excel Java)

Una Forma rápida y fácil de obtener un excel a partir de un jsp puede ser de la siguiente manera:
Sólo agregando en la cabecera del documento

    response.setContentType ("application/vnd.ms-excel");
    response.setHeader ("Content-Disposition", "attachment;filename=\"report.xls\"");



Podemos comprenderlo mejor con el siguiente Ejemplo.


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

    pageEncoding="ISO-8859-1"%>

<%

    response.setContentType ("application/vnd.ms-excel"); //Tipo de fichero.

response.setHeader ("Content-Disposition", "attachment;filename=\"report.xls\"");

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

</head>

<body>

<TABLE border="1">

<TR>

<TH>CICLO</TH>

<TH>CODIGO</TH>

<TH>APELLIDOS Y NOMBRES</TH>

</TR>

<TR>

 <TD>1</TD>

   <TD>12233</TD>

   <TD>JocLuis</TD>

</TR>



</TABLE>

</body>

</html>

viernes, 5 de marzo de 2010

Comprobar una expresión XPath online

Si quieres comprobar al extraer valores de tu elemento que contenga cualquier esquema XML puedes hacerlo en XPath Expression Testbed .

La página te permite subir tu propio esquema y probar en online expresiones, como también te permite hacer ejemplos con un esquema de prueba, que mostramos acontinuación:

<?value="2"?> 
<parent name="data" > 
   <child id="1"  name="alpha" >Some Text</child> 
   <child id="2"  name="beta" > 
      <grandchild id="2.1"  name="beta-alpha" ></grandchild> 
      <grandchild id="2.2"  name="beta-beta" ></grandchild> 
   </child> 
   <pet name="tigger"  type="cat" > 
      <data> 
         <birthday month="sept"  day="19" ></birthday> 
         <food name="Acme Cat Food" ></food> 
      </data> 
   </pet> 
   <pet name="Fido"  type="dog" > 
      <description> 
         Large dog! 
      </description> 
      <data> 
         <birthday month="feb"  day="3" ></birthday> 
         <food name="Acme Dog Food" ></food> 
      </data> 
   </pet> 
   <rogue name="is this real?" > 
      <data> 
         Hates dogs! 
      </data> 
   </rogue> 
   <child id="3"  name="gamma"  mark="yes" > 
      <!-- A comment --> 
      <description> 
         Likes all animals - especially dogs! 
      </description> 
      <grandchild id="3.1"  name="gamma-alpha" > 
         <[CDATA[ Some non-parsable character data ]]> 
      </grandchild> 
      <grandchild id="3.2"  name="gamma-beta" ></grandchild> 
   </child> 
</parent> 



El cual podemos hacer las siguiente operaciones:

-Acceder a un valor del NAME del CHILD con ID=1.
Bueno esto se escribirá de la siguiente manera:
/parent/child[@id='1']/@name
Como muestra la imagen siguiente.

-Para recorrer por ejemplo todos los CHILD solo ponemos entre corchetes el número de campos.
Para /parent/child[1]/@name el Resultado es alpha.
Para /parent/child[2]/@name el Resultado es beta.

Y así sucesivamente, el cual lo podemos idear con un simple While.