Service Builder para desarrollar un portlet con gestión de base de datos Parte 3/3

Ya estamos terminando nuestro portlet para Liferay que nos ayudará a aprender y gestionar tareas Por si no recordáis o acabáis de llegar a este post aquí os dejo un par de links a la parte 1 y a la parte 2 respectivamente.

https://jesuslc.com/2013/05/07/utilizando-spring-para-desarrollar-un-portlet-para-liferay-con-base-de-datos-service-builde

https://jesuslc.com/2013/05/14/service-builder-para-desarrollar-un-portlet-con-gestion-de-base-de-datos-parte-23

Vamos a poner de nuevo como quedará el portlet porque hoy viene una de las partes más importantes, la vista:

Llegados aquí ya tenemos el Service Builder montado, si recordáis con solo definir un par de entidades con sus columnas correspondientes en el archivo services.xml y pulsar sobre la tarea (ant) “build Services” creamos un montón de código que nos sirve para mapear la base de datos. En el anterior post vimos cómo crear los controladores, en este ya tenemos el final. Vamos a definir 5 archivos JSP donde programaremos todos los elementos gráficos.

Creando el init

Así que lo primero para tener bien organizado el código será crear una carpeta llamada “JSP” (imaginación al poder) en docroot.

En Este nuevo directorio “/docroot/jsp” creamos el primer archivo llamado init.jsp Este primer archivo no tiene nada de vista, solo todas las importaciones de taglib, lo hacemos así para no repetir el mismo código de importaciones en todas las clases. También hemos definido 3 variables que nos ayudaran a no repetir código.

Seguir leyendo “Service Builder para desarrollar un portlet con gestión de base de datos Parte 3/3”

Service Builder para desarrollar un portlet con gestión de base de datos Parte 2/3

En la primera parte de este post vimos cómo crear un service builder, ahora vamos a trabajar para terminar el portlet.

Para no perder el foco, así es como quedará nuestro portlet gestor de tareas para Liferay.

Ahora en este post vamos a seguir desarrollando el portlet, si recordáis dejamos el portlet justo después de pinchar en service builder, el árbol del proyecto ha quedado más o menos así.

Ahora vamos a seguir desarrollando el portlet, para ello utilizaremos un patrón MVC, donde ya tenemos casi terminado el modelo, ¡y no hemos escrito nada de código! Solo un archivo y mira ya todo lo que hemos hecho 😉

Creando una utilidad

Como vimos en un post anterior, el controlador es el encargado de manejar a la vista y al modelo, para ello vamos a crearnos una clase que nos será muy útil.

Seguir leyendo “Service Builder para desarrollar un portlet con gestión de base de datos Parte 2/3”

Service Builder para desarrollar un portlet con gestión de base de datos Parte 1/3

En el blog ya hemos tratado el tema de crear portlets que procesan un formulario así que ya he llegado la hora de aprender a utilizar portlets que interactúen con la base de datos.

Existen muchas maneras de crear portlets que utilicen la base de datos de Liferay, pero en este hoy vamos a aprovecharnos un poco más de Liferay IDE y vamos a aprender a utilizar Service Builder.

Para realizar este post me he basado en las explicaciones de los libros “Liferay in Action” y “Portlets in Action”, además de utilizar como idea de base el portlet de Albert Coronado disponible en el Marketplace de Liferay, sí como la documentación oficial de Liferay.

Service Builder

Es una herramienta integrada en el plugin de Liferay para Eclipse que genera el código necesario (clases e interfaces) para crear una capa de servicio y poder utilizar la persistencia.

¿Por qué utilizar Service Builder?

En un principio cuando nos conectamos a base de datos utilizamos JDBC para obtener una conexión e implementar los métodos de acceso. El problema es que mantener el código es un poco difícil, consultas SQL, acoplamiento con la base de datos, había que tener cuidado con las inyecciones SQL,… en fin eran necesarias mucho esfuerzo para mantenerlo todo.

Después llegaron los EJB´s y para no alargar mucho la explicación llegó Hibernate, que tomó un enfoque un tanto diferente. Hibernate crea un mapeo entre objetos del mundo Java y tablas de la base de datos, lo que ayuda al programador a “desentenderse” de la base de dato y utilizar objetos Java con los que está familiarizado.

La combinación de Spring e Hibernate se utiliza desde hace mucho tiempo, Spring e Hibernate nos ayudan a construir portlets y aplicaciones web de una manera bastante sencilla.

Como ya hemos dicho Service Builder es una utilidad creada por Liferay que nos ayuda con todo este proceso. Con solo definir un archivo XML se genera automáticamente toda la configuración de Hibernate y Spring que un portlet pueda interactuar con la base de datos.

Seguir leyendo “Service Builder para desarrollar un portlet con gestión de base de datos Parte 1/3”

Desarrollando un portlet para Liferay utlizando Spring framework

Ya hemos visto como desarrollar portlet para Liferay y también como desarrollar una pequeña aplicación con Spring e Hibernate. ¿Por qué no unirlo todo? Creo que sería una gran idea poder realizar un portlet para Liferay utilizando Spring e Hibernate. No, no soy un visionario, ni un gurú. Ya existen miles de portlet así, pero a mí me encanta aprender y creo que será genial aprender cómo se realiza un portlet para Liferay utilizando Spring e Hibernate. Creo que mi SEO se verá resentido con eso no poner siempre lo mismo 😉

Para empezar vamos a realizar un pequeño “hello world” para irnos haciendo con el entorno, que aun siendo conocido (como es el caso de Liferay IDE) siempre es conveniente comprobar que todo funciona antes de atascarnos en algo más complejo.

Antes de empezar vamos a dejar claro que es la Dependencia de Inyección. Según la Wikipedia es un patrón de diseño orientado a objetos, en el que se suministran objetos a una clase en lugar de ser la propia clase quien cree el objeto.

Para que nos quede más claro en el Libro “Portlets in Action” nos ponen un ejemplo muy aclaratorio que voy a “traducir” a continuación:

Imaginemos que tenemos entre manos una aplicación para un ecommerce, esta aplicación tiene estos objetos definidos (puede que tenga muchos más, pero nos centraremos en estos de momentos).

  • OrderHandler: Un componente de la capa de presentación es responsable de manejar las órdenes cursadas por los clientes.
    Depende OrderService para guardar las ordenes entregadas (submitted)
  • OrderService: Un componente que contiene la lógica de negocio para guardar un orden en la base de datos. Depende OrderDAO para guardar la información de la orden en la base de datos.
  • OrderDAO: Un objeto de acceso a datos que es responsable de la interacción con la base de datos para guardar la información de pedido enviado por el cliente.

Este sería el esquema de dependencias de las clases que hemos expuesto aquí

Seguir leyendo “Desarrollando un portlet para Liferay utlizando Spring framework”

Liferay IDE – Creando un Portlet más allá del “hello world”

Vamos a crear un portlet con un poquito de chicha utilizando Liferay IDE, no es el típico hola mundo, sino un pequeño formulario, así aprenderemos como procesar un formulario con Liferay.

Lo primero será crear el portlet, como vemos aquí:

Lo añadimos a Tomcat.

Con esto tenemos creado un portlet “Hola mundo”, pero vamos a ir un poco más allá, vamos a procesar un formulario para ver cómo se trabaja con los distintos modos del portlet y así tener un portlet con algo de funcionalidad.

Lo primero que vamos a hacer es crear una clase llamada UserRegistrationPortlet que extienda a GenericPortlet, esta clase estará dentro de la carpeta src, en el paquete com.jesuslc

Seguir leyendo “Liferay IDE – Creando un Portlet más allá del “hello world””

Aprendiendo sobre portlets

Cuando nos decidimos a utilizar Liferay una de las cosas que debemos tener en cuenta es que debemos aprender sobre portlets.

Pero por dónde empiezo a la hora de desarrollar un portlet, que métodos tengo que implementar, como es el ciclo de vida de un portel.

Estas son muchas de las preguntas que nos surgen y que vamos a recopilar aquí.

Donde se ejecuta un portlet

Los portlets se ejecutan en un contenedor de portlets, existen muchos contenedores de portltes como JetSpeed o Liferay.

Qué métodos debe implementar

Esta es la interfaz que debe implementar un portlets. Normalmente lo que se hace es extender a javax.portlet.GenericPortlet

Seguir leyendo “Aprendiendo sobre portlets”

Como crear Portlets utilizando Liferay IDE

Hace unos días contamos como instalar Liferay IDE sobre eclipse, creo que es hora de desarrollar un pequeño portlet “Hola Mundo” para probar las funcionalidades de Liferay IDE.

Los portlets se ejecutan dentro de un contenedor que gestiona su ciclo de vida, realizando llamadas a métodos equivalentes a render() o destroy(). Finalmente, este contenedor puede formar parte de un software de portales empresarial, como Liferay, Oracle Weblogic Portal o IBM Websphere Portal. En nuestro caso Liferay.

Manos a la obra.

Cambiar a la perspectiva Liferay

Lo primero será abrir Eclipse, elegir el workspace (yo he creado uno en el mismo directorio donde descomprimimos Liferay) y cambiar a la perspectiva de Liferay. Para ello vamos a windows->Open Perspective->Other y seleccionamos Liferay

Configurar el servidor

Ahora es hora de configurar un servidor de aplicaciones. Nosotros vamos a escoger el que viene con Liferay. Si ya tienes un Tomcat instalado en tu máquina ( XAMPP o similar) solo debemos cambiar unas cosillas.

Seguir leyendo “Como crear Portlets utilizando Liferay IDE”