Crosstab con ICEfaces

Ú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.
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.

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:

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.