Wednesday, June 30, 2010

Utilizando Like en consultas JPA

En algunas ocasiones necesitamos hacer las consultas utilizando un patrón determinado, en las setencias sql generalmente usamos like %patron%.

Asumimos que tenemos una clase llamada Interes.java, agregamos un nuevo @NamedQuery y colocamos lower() para convertir a minuscula el resultado y utilizamos like para la busqueda del patrón.

@NamedQuery(name = "Interes.findByNombreLike", query = "SELECT i FROM Interes i WHERE
lower(i.nombre) like :nombre"),

Editamos la clase controlador
public List findByNombreLike() {

EntityManager em = null;
try {
// itemsSearch = null;
if (current == null) {
}
String nombre = current.getNombre();
if (nombre == null) {

return null;
}
em = getEntityManager();

// aqui convertimos a minuscula y buscamos la palabra en cualquier
nombre = "%" +nombre.trim() +"%";
return em.createNamedQuery("Interes.findByNombreLike").setParameter("nombre", nombre).getResultList();

} catch (Exception ex) {
JsfUtil.addSuccessMessage(ex.getLocalizedMessage());
JsfUtil.addErrorMessage(ex, "Error. findNombre() ");
}
return null;
}

Tuesday, June 22, 2010

Utilización de archivos properties

Cuando deseamos internalización de nuestras aplicaciones Web, debemos crear un archivo properties.

Agregamos los diversos idiomas


Seleccionamos el idioma



Para agregarlo a nuestro código
en el < h:head> agregamos
< h:head>




Para utilizarlo
< h:outputText value="#{i18n['mensajes.titulo']}">< /h:outputText>

En NetBeans 6.9 no se crea el archivo faces-config.xml ya que JSF 2.0 no lo necesita.
Podemos crearlo en la carpeta WEB-INF

Y agregamos el contenido



En el indicamos la ruta donde esta almacenado el archivo de propiedades
es la variable que usaremos, y no tendremos que usar el en las paginas.

Usar los archivos de propiedades en las paginas
value="#{i18n['interes.titulo.lista']}"

value="#{i18n.titulo}"

y en las clases
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/org/gbiweb/properties/i18n").getString("interes.mensajes.actualizado"));

Monday, June 21, 2010

Agregando un Session Bean

Luego de haber creado las Clases de Entidad a partir de la base de datos, podemos crear nuestros beans de sesiones.
Creamos un nuevo archivo
Seleccionamos Session Beans For Entity Clases


Seleccionamos las clases disponibles

ahora


Seleccionamos Nuevo Archivo-> Categorias:Java Server Faces ->Tipo de Archivos: JSF Managed Bean

alcance: Session


Crear los objetos

private Interes current;
private DataModel items = null;
@EJB private jpa.controller.InteresFacade ejbFacade;

Generar los métodos get
Código generado
public Interes getCurrent() {
return current;
}

public InteresFacade getEjbFacade() {
return ejbFacade;
}

public DataModel getItems() {
return items;
}
Editamos el método getItems() y lo reemplazamos por el siguiente codigo

public DataModel getItems() {
if (items == null) {
items = new ListDataModel(getListaInteres());
}
return items;
}

Agregar el método getListaInteres() que devuelve un List de la clase Interes
public List getListaInteres() {
try {
return getEjbFacade().getEntityManager().createNamedQuery("Interes.findAll").getResultList();
} catch (Exception ex) {
JsfUtil.addErrorMessage(ex, "Error ");
}
return null;
}

Si observamos solo tenemos que utilizar getEjbFacade().getEntityManager().

Saturday, June 19, 2010

NetBeans 6.9 JSF 2.0

Cuando generamos una aplicación web, utilizando JPA, y tenemos campos autoincrementables, debemos definir la estrategia de generación
@GeneratedValue(strategy=GenerationType.IDENTITY)
en el campo, antes de generar las paginas JSF a partir de las entidades o crear las clases controladoras.

Ejemplo:

public class Interes implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "id_interes")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer idInteres;

y comentamos el campo id para que no se muestre en la pagina .xhtml
< !--
< h:outputLabel value="#{bundle.CreateInteresLabel_idInteres}" for="idInteres" />
< h:inputText id="idInteres" value="#{interesController.selected.idInteres}" title="#{bundle.CreateInteresTitle_idInteres}" required="false" requiredMessage="#{bundle.CreateInteresRequiredMessage_idInteres}"/>
-- >

Friday, June 18, 2010

NetBeans 6.9 JPA con Postgresql

Creamos una base datos en postgresql

Generamos la persistence

indicamos las clases

entity





Utilizando JPA Controller
Creamos las clases JPA controller


Error


Editamos el archivo persistence.xml


Quitamos la marca y agregamos las clases


Editar el index.xhtml agregamos un dataTable de OpenFaces, con algunos

Indicamos la columna y los valores





Editar la clase InteresJpaController
Creamos un objeto
private DataModel items = null;
public DataModel getItems() {
if (items == null) {
items = new ListDataModel(getListaInteres());
}
return items;
}

public List getListaInteres() {
EntityManager em = null;
try {
em = getEntityManager();

return em.createNamedQuery("Interes.findAll").getResultList();

} catch (Exception ex) {
String msg = ex.getLocalizedMessage();

doneMessage = new FacesMessage("Error " + msg);

FacesContext.getCurrentInstance().addMessage(null, doneMessage);

} finally {
if (em != null) {
em.close();
}
}

return null;

}
Ejecución


NetBeans 6.9 J2EE CRUD

Si deseamos crear una aplicación web j2ee con NetBeans 6.9

Creamos las clases de entidad a partir de la base de datos

Seleccionamos la base de datos y las tablas

Ahora indicamos el paquete

Vamos a crear las paginas jsf a partir de las clases

Agregamos las clases

Especificamos la carpeta para almacenar las jsf generadas

Tenemos la estructura generada, y ejecutamos elproyecto



Entrar en cualquier opción

Tenemos nuestra aplicación CRUD

Thursday, June 17, 2010

Probando NetBeans 6.9 con OpenFaces

Recientemente fue liberado la versión 6.9 de NetBeans, un IDE con muchas características, en esta ocasión, empezamos a probarlo creando una aplicación Web con Java Server Faces 2.0 y utilizando OpenFaces.


Creación del proyecto utilizando NetBeans.
Pasos:
1. Seleccionar desde el menu Archivo-> Proyecto Nuevo
2. Seleccionar en categorias: Java Web y en Projects Web Application

3. Seleccionamos el servidor

4.Indicamos el frameworks Java Server Faces y presionamos el botón FINALIZAR


5. Ejecutamos el proyecto
6. Se muestra la salida en el browser


7.Descargar OpenFaces desde http://www.openfaces.org
8.Agregar la biblioteca a NetBeans

9. Agregamos la biblioteca al proyecto

10. Seleccionar OpenFaces


11. Agregar en el archivo web.xml


12. Agregar un componente calendario al archivo index.xhtml
12.1 Agregar xmlns:o="http://openfaces.org/">
12.2 Agregar el componente calendar


13. Ejecutamos el proyecto


Solo nos muestra la pagina cargando

14. Crear el archivo beans.xml dentro de WEB-INF

15. Agregar el siguiente contenido



16. Quedaría de la siguiente manera


17.Ejecutamos el proyecto

Friday, June 04, 2010

NetBeans 6.9 RC2 en Español


Puedes descargarlo desde el siguiente enlace
http://dlc.sun.com.edgesuite.net/netbeans/6.9/rc/

Aun no esta concluida la traducción de NetBeans al idioma español y se estan corrigiendo algunos errores.

Wednesday, June 02, 2010

NetBeans 6.9 RC2 Disponible

Ya esta disponible NetBeans 6.9 RC2 ,pueden encontrar más información en el siguiente enlace http://netbeans.org/community/releases/69/

NetBeans IDE 6.9 incluye JavaFX Composer. Soporte OSGi para aplicaciones NetBeans Platform ,JavaFX SDK 1.3, PHP Zend framework, y Ruby on Rails 3.0; mejoras en el editor Java, Java Debugger.