Crosstab con ICEfaces

Una de las cosas que se hace bastante uso en las aplicaciones de gestión es la elaboración de tablas para presentar datos, y entre muchos casos que se me han presentado a veces es necesario generar tablas en la cual tanto las filas como las columnas van creciendo a esta situación se le denomina Crosstab en inglés.

Últimamente en mi trabajo los recientes proyectos los he estado realizando mediante ICEfaces que me ha reducido considerablemente el tiempo desarrollo gracias a su implementación de Ajax y por el lado de los usuarios que obtienen aplicaciones mucho mas parecidas como si fueran de escritorio como están acostumbrados.

Antes que comenzar a desarrollar el proyecto necesitamos tener una base de datos, para este caso utilizare derby que ya esta embebido con Netbeans, así no tengo que obligar a mi lectores instalar ya sea MySQL, PostgreSQL u Oracle.

Mi base de datos le llame crosstab y la estructura de las tablas es la siguiente:

create table producto (
id int not null primary key generated always as identity,
descripcion varchar(20) not null
)

create table periodo (
id int not null primary key generated always as identity,
inicio date not null,
fin date not null
)

create table precio (
id int not null primary key generated always as identity,
valor double not null,
fk_producto int not null,
fk_periodo int not null,
constraint precio_producto foreign key(fk_producto) references producto(id),
constraint precio_periodo foreign key(fk_periodo) references periodo(id)
)


Nota: Es necesario agregarle registros, la aplicación que se desarrollara no tendrá ninguna validación en cuanto si en la tabla se encuentran datos nulos en la tabla Precio. Adjuntare el código fuente del proyecto con el respectivo script SQL de la estructura de la base de datos que puede ser descargado al final de este post.

Pues bien ahora es el momento de echarle mano al desarrollo de la aplicación, en mi caso me gusta crear mis Entity Class como un proyecto de librería de Java para tener separada la lógica del negocio con la interfaz web mi proyecto se llamara JavaCrosstab.

La forma para generar Entity Class con JPA ya fue tratado a anteriormente, así que en el proyecto se agregara nada mas una Clase llamada Control.

Nota: Hay que recordar que habrá que agregar posteriormente las librerías TopLink y derbyClient al Tomcat, por que el proyecto web lo hare con este servidor.

Ahora el ejemplo que desarrollare estará hecho con Facelets, no entrare en detalles como crear un proyecto Facelets ya que esto ya lo he hecho, pues nada mas me centrare en la forma de crear la tabla mediante ICEfaces y JPA.

Pues procedemos a crear un proyecto Web con Netbeans con los frameworks ICEfaces y Facelets llamado WebCrosstab, deberemos agregar el proyecto donde se encuentra nuestros Entity Class creado anteriormente llamado JavaCrosstab luego crear un Managed Bean llamado ConversorDolares, a este Bean deberá tener la siguiente estructura:

Este Managed Bean hereda de la clase "AbstractPageBean" para poder acceder a los métodos "getValue" y obtener el valor de la columna y fila actual cuando se este generando la tabla en la pagina template-client.xhtml.

Ahora editaremos la página template-client.xhtml con el siguiente contenido:


Hecho esto nada mas bastara iniciar la base de datos crosstab de derby en Netbeans, realizar deploy al proyecto WebCrosstab y acceder a la ruta http://localhost:8084/WebCrosstab.


Adjunto el código fuente del proyecto WebCrosstab y la estructura de la base de datos.

Comentarios (6)

6 Response to "Crosstab con ICEfaces"

  1. Anónimo Says:
    jueves, julio 09, 2009

    Q aburrido, en serio no tenes nada mejor q hacer!!!!!!!! jajaja

  2. Anónimo Says:
    jueves, julio 09, 2009

    Y quien es esa tal Yanira Maricela q hasta la direccion tenes ahi a la mano????? no me vayas a estar enganando con otra porq yo soy tu admiradora secreta... me encanta todo lo q escribis... es tan sensual.... jajajaja

  3. markblog says:
    lunes, agosto 03, 2009

    hola....hey felicidades por tu blog ..tenes informacion muy util...

    me podes ayudar con el manejo de una tabla en icefaces... estoy haciendo un proyecto en netbeans 6.5 icefaces 1.8 y glassfish v2 e hibernate 3.5.2....lo que pasa que tengo un ice:datatable que esta vinvulada a una tabla de mi base de datos .. pero apearte de eso necesito otra columna que no esta en esa tabla de la db ....ya agruege esa columna y dentro de ella tengo un inputtext...es decir por cada fila visualizo un inputtext de la columna agregada.....pero necesito el valor de ese inputtext para asociarlo al id de cada fila ....es decir despues de que se ingresen valores en todos lo inputtext quiero guardarlos en un arreglo .....AHI ESTA EL PROBLEMA ....HE REVISADO INFORMACION PERO NADA...ESPERO QUE TU ME PUEDAS DAR ALGUNA IDEA DE COMO NSOLUCIONAR MI PROBLEMA ......

    y otra pregunta cual es mejor HIBERNATE O JPA...????

    GRACIAS..!!

    EXITOS..!!

  4. Daniel Alberto says:
    lunes, agosto 03, 2009

    @ Marlon:

    Hibernate se usa sobre JPA.

    Saludos.

  5. By Emerson says:
    domingo, marzo 06, 2011

    Hola podrias decirme donde encuentro esa interfaz "AbstractPageBean" ?

  6. By Emerson says:
    domingo, marzo 06, 2011

    digo clase