Ing. Pablo Almeida Haro Msc.

ICEFACES

ICEFACES USANDO JPA Y SQL NATIVOS

*Ingresar a Netbeans

*Crear un nuevo proyecto:  file /new/Project/web aplication

*Colocar el nombre del proyecto y ubicación

 

*Especificar el servidor, la versión de JEE y la ruta de arranque

 

*Seleccionar el framework a utilizar, para nuestro caso icefaces

 

 

*El ide desplegará la página de inicio (welcomeICEfaces.xhtml).

 

*El presente ejemplo funciona utilizando JPA como capa de persistencia. Para configurarla seguimos los siguientes pasos: click derecho sobre el proyecto/new/other/persistence/persistence_unit. Ingresamos los siguientes campos y colocamos click en finish:

 

*Editar la página welcomeICEfaces.xhtml  con el código necesario para presentar un formulario con los campos código y nombre con sus respectivas etiquetas como sigue a continuación:

<?xml version='1.0' encoding='UTF-8' ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"

      xmlns:ui="http://java.sun.com/jsf/facelets"

      xmlns:f="http://java.sun.com/jsf/core"

      xmlns:h="http://java.sun.com/jsf/html"

        xmlns:icecore="http://www.icefaces.org/icefaces/core"

       xmlns:ace="http://www.icefaces.org/icefaces/components"

       xmlns:ice="http://www.icesoft.com/icefaces/component"

       >

    <h:head>

        <title>ICEfaces 2</title>

        <link rel="stylesheet" type="text/css" href="./xmlhttp/css/rime/rime.css"/>

    </h:head>

    <h:body>

        <div id="header">

           <!--

           <ui:include src="/header.xhtml" >

                <ui:param name="param_name" value="param_value" />

           </ui:include>

           -->

        </div>

         <div id="content">

             <ice:form id="form">

                <ice:outputText value="CLIENTES"/>

                <br></br><br></br>

                <ice:outputText value="Código:"/>

                <ice:inputText id="codigo" value="#{cliente.codigo}" />

                <br></br>

                <ice:outputText value="Nombre:"/>

                <ice:inputText id="nombre" value="#{cliente.nombre}"/>

                <br></br><br></br>

                <ice:commandButton id="insertar" value="Insertar" action="#{cliente.insertar}">  </ice:commandButton>

                <ice:commandButton id="eliminar" value="Eliminar" action="#{cliente.eliminar}" > </ice:commandButton>

                <ice:commandButton id="modificar" value="Modificar" action="#{cliente.modificar}"> </ice:commandButton>

                <ice:commandButton id="buscar" value="Buscar" action="#{cliente.buscar}"> </ice:commandButton>

                <br></br><br></br>

                <ice:outputText value="#{cliente.mensaje}"/>

               

           </ice:form>

 

         </div>

    </h:body>

</html>

*Crear un paquete: click derecho sobre source package/new java package

*Colocar el nombre del paquete

 

 

*Dentro del paquete crear un javabean: click derecho sobre el paquete/new/java class

*Colocar el nombre de la clase y el paquete donde se alojará

 

 

*Editar el código de la clase como sigue a continuación:

package pkg_icefaces_crud;

 

import java.util.List;

import javax.faces.bean.SessionScoped;

import javax.faces.bean.ManagedBean;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

import javax.persistence.Query;

 

@ManagedBean()

@SessionScoped

public class cliente

{   public String codigo="";

    public String nombre="";

    public String mensaje="";

    EntityManagerFactory factory=Persistence.createEntityManagerFactory("prj_icefaces_crudPU2");

    EntityManager em1=factory.createEntityManager();

 

    public cliente ()

    {

    }

    public String getcodigo() {

        return codigo;

    }

    public void setcodigo(String as_codigo) {

        this.codigo = as_codigo;

    }

    public String getnombre() {

        return nombre;

    }

    public void setnombre(String as_nombre) {

        this.nombre = as_nombre;

    }

    public String getmensaje() {

        return mensaje;

    }

    public void setmensaje(String as_mensaje) {

        this.mensaje = as_mensaje;

    }

    public void insertar()

    {

       String sql ="insert into cliente (codigo,nombre) values ('"+codigo+"'"+","+"'"+nombre+"')";

       em1.getTransaction().begin();

       Query qe=em1.createNativeQuery(sql);

       try

       {

           qe.executeUpdate();

           em1.getTransaction().commit();

           mensaje="Se insertó satisfactoriamente";

        }

       catch (Exception ex)

       {    em1.getTransaction().rollback();

            mensaje="No se pudo insertar";

       }

 

    }

    public void eliminar()

    {

       String sql ="delete from  cliente where codigo='"+codigo+"'";

       em1.getTransaction().begin();

       Query qe=em1.createNativeQuery(sql);

 

       int li_filas= qe.executeUpdate();

       if (li_filas>=1)

       {

           em1.getTransaction().commit();

           mensaje="Se eliminó satisfactoriamente";

       }

        else

       {

           em1.getTransaction().rollback();

           mensaje="No se pudo eliminar";

       }

    }

    public void modificar()

    {

       String sql ="update cliente set nombre='"+nombre+"' where codigo='"+codigo+"'";

       em1.getTransaction().begin();

       Query qe=em1.createNativeQuery(sql);

 

       int li_filas=qe.executeUpdate();

       if (li_filas>=1)

       {

           em1.getTransaction().commit();

           mensaje="Se actualizó satisfactoriamente";

        }

        else

        {

            em1.getTransaction().rollback();

            mensaje="No se pudo modificar";

         }

 

    }

    public void buscar()

    {         

       String sql ="select * from cliente where codigo="+"'"+codigo+"'";

       Query qe=em1.createNativeQuery(sql);

       List l1=qe.getResultList();

       if (l1.size()>=1)

        {

            Object [] ar_objeto=(Object [])(l1.get(0));

            String ls_nombre=ar_objeto[1].toString();

            nombre=ls_nombre;

            mensaje="";

        }

        else

        {

            mensaje="No se encontró el cliente";

        }

 

    }

}

*Una vez que el código se encuentra completo, click derecho sobre el proyecto/run. Se presentará el siguiente resultado:

 

 

 

ICEFACES USANDO CACHEDROWSETS Y PERSISTENCIA PROPIA

 

 

CREACION DEL POOL DE CONEXIONES

*Como requisito: crear  la base de datos y la tabla cliente  en la ficha prestaciones/databases. Se puede crear la tabla dentro de la base de datos sample

*Crear el pool de conexiones: Ingresar al administrador del servidor glassfish, en netbeans/ficha services(prestaciones), click derecho sobre el servidor glassfish/view admin console

*Ingresar el usuario y clave del servidor (solo si no ingresa por defecto)

*En el árbol navegar hacia recursos/jdbc/conjuntos de conexiones/click en nuevo. Ingresar la información que sigue a continuación

*Colocar click en siguiente

*Ingresar los parámetros de conexión como sigue a continuación:

*Click en finalizar

*Click en el nuevo conjunto de conexión/click en sondeo

*Crear el recurso jdbc: En el árbol, navegar hacia recursos/jdbc/recursos jdbc/click en nuevo

*Anotar el nombre JNDI. Este será utilizado más adelante en la codificación

 

 

 

 

 

 

 

Colocar click en guardar

CREACION DEL PROYECTO WEB

*En netbeans, seleccionar  file/new/Project/java web/ web application

 

*Ingresar el nombre del proyecto y ubicación

*Seleccionar el servidor, versión de java y dirección de arranque

*Seleccionar el framework icefaces

*En el archivo welcomeicefaces.xhtml colocar el código como sigue a continuación:

<?xml version='1.0' encoding='UTF-8' ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"

                xmlns:ui="http://java.sun.com/jsf/facelets"

                xmlns:f="http://java.sun.com/jsf/core"

                xmlns:h="http://java.sun.com/jsf/html"

        xmlns:icecore="http://www.icefaces.org/icefaces/core"

       xmlns:ace="http://www.icefaces.org/icefaces/components"

       xmlns:ice="http://www.icesoft.com/icefaces/component"

       >

    <h:head>

        <title>ICEfaces 2</title>

        <link rel="stylesheet" type="text/css" href="./xmlhttp/css/rime/rime.css"/>

    </h:head>

    <h:body>

        <f:view>

            <ice:form id="form"  partialSubmit="true">

                <ice:outputText value="CLIENTES"/>

                <br></br><br></br>

                <ice:outputText id="cod" value="Código:"/>

                <ice:inputText id="codigo" value="#{cliente.codigo}" />

                <br></br>

                <ice:outputText id="nom" value="Nombre:"/>

                <ice:inputText id="nombre" value="#{cliente.nombre}"/>

                <br></br><br></br>

                <ice:commandButton actionListener="#{cliente.insertar}" id="insertar" value="Insertar"  partialSubmit="true">  </ice:commandButton>

                <ice:commandButton id="eliminar" value="Eliminar" action="#{cliente.eliminar}" partialSubmit="true"> </ice:commandButton >

                <ice:commandButton id="modificar" value="Modificar" action="#{cliente.modificar}" partialSubmit="true"> </ice:commandButton>

                <ice:commandButton id="buscar" value="Buscar" actionListener="#{cliente.buscar}" partialSubmit="true"> </ice:commandButton>

                <br></br><br></br>

                <ice:outputText id="mensaje" value="#{cliente.mensaje}" />

 

                <ice:dataTable id="dataTable1"  value="#{cliente.icrs_cliente}" var="currentRow">

              <ice:column id="column1">

                  <ice:outputText id="outputText1" value="#{currentRow['codigo']}"/>

                  <f:facet name="header">

                      <ice:outputText id="outputText2" value="CODIGO"/>

                  </f:facet>

              </ice:column>

              <ice:column id="column2">

                  <ice:outputText id="outputText3" value="#{currentRow['nombre']}"/>

                  <f:facet name="header">

                         <ice:outputText id="outputText4" value="NOMBRE"/>

                  </f:facet>

              </ice:column>

             </ice:dataTable>

           </ice:form>

</f:view>

    </h:body>

     <h:outputStylesheet library="org.icefaces.component.skins" name="rime.css" />

</html>

*Creación de una capa de persistencia propia: click derecho en source package/new/java class

*Colocar el código que sigue a continuación:

package pkg_ice_cached;

 

import com.sun.rowset.CachedRowSetImpl;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;

import javax.sql.rowset.CachedRowSet;

 

 

public class persistencia_cliente {

    String is_error="";

 

    public CachedRowSet recuperar_cachedrowset (String as_sql)

    {   CachedRowSetImpl lcrs_1;

        try

        {   lcrs_1=new CachedRowSetImpl();

            lcrs_1.setDataSourceName("pool_icefaces");

            lcrs_1.setCommand( as_sql);

            lcrs_1.execute();

           // lcrs_1.close();

        }

        catch (Exception asex_1)

        {

            is_error=asex_1.getMessage();

            return null;

        }

       

        return lcrs_1;

    }

}

*Creación del backing bean: click derecho en source package/new/java class

*Colocar el código como sigue a continuación

package pkg_ice_cached;

 

import com.icesoft.faces.component.ext.HtmlDataTable;

import com.icesoft.faces.component.ext.HtmlOutputText;

import javax.faces.bean.SessionScoped;

import javax.faces.bean.ManagedBean;

import javax.sql.rowset.CachedRowSet;

 

@ManagedBean()

@SessionScoped

public class cliente

{   public String codigo="";

    public String nombre="";

    public String mensaje="";

    CachedRowSet icrs_cliente;

    HtmlDataTable idt_cliente=new HtmlDataTable();

    persistencia_cliente ipc_cliente=new persistencia_cliente();

 

    public HtmlDataTable getIdt_cliente() {

 

            return idt_cliente;

 

    }

 

    public void setIdt_cliente(HtmlDataTable adt_cliente) {

        this.idt_cliente = adt_cliente;

    }

    public CachedRowSet getIcrs_cliente() {

        return icrs_cliente;

    }

 

    public void setIcrs_cliente(CachedRowSet acrs_cliente) {

        this.icrs_cliente = acrs_cliente;

    }

 

    public cliente ()    {

        icrs_cliente=ipc_cliente.recuperar_cachedrowset("select * from cliente");

 

    }

    public String getcodigo() {

        return codigo;

    }

    public void setcodigo(String as_codigo) {

        this.codigo = as_codigo;

    }

    public String getnombre() {

        return nombre;

    }

    public void setnombre(String as_nombre) {

        this.nombre = as_nombre;

    }

    public String getmensaje() {

        return mensaje;

    }

//    public void setmensaje(String as_mensaje) {

//        this.mensaje = as_mensaje;

//    }

    public void insertar() 

    {

      mensaje=" "; 

      try

       {

           icrs_cliente.moveToInsertRow();

           icrs_cliente.updateString("codigo",codigo);

           icrs_cliente.updateString("nombre",nombre);

           icrs_cliente.insertRow();

           icrs_cliente.moveToCurrentRow();

           icrs_cliente.acceptChanges();

           mensaje="Se insertó satisfactoriamente";

        }

       catch (Exception ex)

       {    mensaje="No se pudo insertar";

       }

 

    }

    public void eliminar()

    {  mensaje=" ";

        try

       {   String ls_codigo="";

           String ls_nombre="";

           int li_filas=icrs_cliente.size();

           for (int i=1; i<=li_filas;i++)

           {    icrs_cliente.absolute(i);

                ls_codigo=icrs_cliente.getString("codigo");

 

                if (ls_codigo.compareTo(codigo)==0)

                {

                    icrs_cliente.deleteRow();

                    icrs_cliente.acceptChanges();

                    mensaje="se eliminó satisfactoriamente";

                    break;

                }

           }

           if (mensaje.compareTo(" ") ==0)

           {

            mensaje="No se pudo eliminar";

           }

        }

       catch (Exception ex)

       {    mensaje="No se pudo eliminar";

       }

    }

    public void modificar()

    {mensaje=" ";

     try

       {   String ls_codigo="";

           String ls_nombre="";

           int li_filas=icrs_cliente.size();

           for (int i=1; i<=li_filas;i++)

           {    icrs_cliente.absolute(i);

                ls_codigo=icrs_cliente.getString("codigo");

 

                if (ls_codigo.compareTo(codigo)==0)

                {

                 //  icrs_cliente.updateString("codigo",codigo);

                   icrs_cliente.updateString("nombre",nombre);

                   icrs_cliente.moveToCurrentRow();

                   icrs_cliente.acceptChanges();

                   mensaje="se actualizó satisfactoriamente";

                   break;

                }

           }

           if (mensaje.compareTo(" ") ==0)

           { mensaje="No se pudo actualizar";

           }

        }

       catch (Exception ex)

       {    mensaje="No se pudo actualizar";

      

       }

    }

    public void buscar()

    {mensaje=" ";

 

    try

       {   String ls_codigo="";

           String ls_nombre="";

           int li_filas=icrs_cliente.size();

           for (int i=1; i<=li_filas;i++)

           {    icrs_cliente.absolute(i);

                ls_codigo=icrs_cliente.getString("codigo");

                ls_nombre=icrs_cliente.getString("nombre");

 

                if (ls_codigo.compareTo(codigo)==0)

                {

                    nombre=ls_nombre;

                    mensaje="Registro encontrado";

                    break;

                }

           }

           if (mensaje.compareTo(" ") ==0)

           {

            mensaje="No se encontró el registro";

           

           }

        }

       catch (Exception ex)

       {    mensaje="No se encontró el registro";

      

       }

    }

}

*Correr la aplicación: clic derecho sobre la aplicación/run