Grails Tutorial

39
GRAILS INSTALACIÓN, CONFIGURACIÓN Y EJEMPLO C.R.U.D. CRISTIAN CAMILO ERAZO AGREDO FACULTAD DE INGENIERA ELECTRÓNICA Y TELECOMUNICACIONES INGENIERÍA DE SISTEMAS UNIVERSIDAD DEL CAUCA 25 DE SEPTIEMBRE DE 2014

description

Tutorial de grails

Transcript of Grails Tutorial

Page 1: Grails Tutorial

GRAILS

CRISTIAN CAMILO ERAZO AGREDO

UNIVERSIDAD DEL CAUCA

Page 2: Grails Tutorial

INTRODUCCIÓN

“Grails es un framework para aplicaciones web libre desarrollado sobre el lenguaje de programación Groovy (el cual a su vez se basa en la Java platform). Grails pretende ser un marco de trabajo altamente productivo siguiendo paradigmas tales como convención sobre configuración o no te repitas (DRY), proporcionando un entorno de desarrollo estandarizado y ocultando gran parte de los detalles de configuración al programador.”1

Este tutorial va a permitir al usuario socializarse con la herramienta permitiéndolo establecer una conexión con la base de datos (en este caso con postgresql, pero grails permite conectar con múltiples gestores de bases de datos), creación de tablas y manejo de restricciones de las mismas, también se implementará un CRUD (esta implementación la realiza la herramienta con la opción de scaffold2 o scaffolding) y además, se va a guiar paso a paso sobre la instalación y configuración del entorno de desarrollo (Netbeans IDE3).

Herramientas a usar:

1. Grails: Grails 2.4.32. NetBeans: NetBeans 7.43. Java SDK: Java SDK 8_204. PostgreSQL: Postgresql 9.35. JDBC: JDBC3 Postgresql Driver 9.3

1 Wikipedia La Enciclopedia Libre, art. Grails2 Wikipedia La Enciclopedia Libre, art. Scaffold3Netbeans.org, Netbeans IDE

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 3: Grails Tutorial

TABLA DE CONTENIDO

1. INTRODUCCIÓN

2. TUTORIAL2.1. Configurando el entorno.2.2. Creando una aplicación Grails en NetBeans IDE.2.3. Conectando la aplicación con PostgreSQL2.4. Ejecutando la aplicación2.5. Listar, agregar, eliminar y modificar.2.6. Buscar

3. CONCLUSIONES

4. REFERENCIAS

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 4: Grails Tutorial

TUTORIAL

Una vez hemos terminado con las descargas de las herramientas, procedemos a instalarlas una a una y a configurar nuestra máquina.

Grails, no es un instalable, es un empaquetado que contiene un conjunto de librerías que junto con javac (el compilador de java) nos permitirán desarrollar las aplicaciones, estas dos herramientas deberemos instanciarlas en nuestras variables de entorno del sistema.

1. Configurando el entorno.1.1.Abrimos el panel de control.1.2.Entramos en Sistema.1.3.Vamos a configuración avanzada del sistema.1.4.En la ventana de propiedades del sistema, escogemos variables de

entorno.2. Agregamos dos nuevas variables del sistema, una para java y la otra para

grails.2.1.En la ventana de variables de entorno, escogemos la opción Nueva2.2.En la opción nombre de la variable, ponemos: GRAILS_HOME2.3.En la opción valor de la variable, ponemos la ruta en la que está el paquete

descomprimido de Grails.2.4.Escogemos aceptar.2.5.Repetimos los pasos 2.1, 2.2 y 2.3 pero, en este caso ponemos como

nombre JAVA_HOME y como valor, la ruta donde está instalado el SDK de java.

3. Editamos la variable Path de nuestro sistema y le agregamos la ruta de los ejecutables de las dos herramientas (Java y Grails)3.1.En la ventana de variable de entorno, buscamos una cuyo nombre es Path.3.2.Una vez ubicada, la seleccionamos y escogemos Editar.3.3.En la opción, valor de la variable, nos situamos al final de la línea y

escribimos: ;%GRAILS_HOME%\bin;%JAVA_HOME%\bin3.4.Una vez terminamos esto, aceptamos y cerramos las ventanas.

4. Probamos que todo esté funcionando como se debe.4.1.Abrimos una terminal de consola.4.2.Escribimos el comando: javac –versión y miramos que funcione y nos dé el

valor de la versión de nuestro compilador de java.4.3.Luego, escribimos el comando: grails –version y miramos que funcione y

nos dé el valor de la versión de grails que hemos descargado.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 5: Grails Tutorial

Anexo video (en inglés) de como instalar la herramienta grails en windows:

Para instalar grails en otros sistemas operativos:

Linux: http://www.grailsexample.net/installing-a-grails-development-environment-on-linux/

Mac OS: http://www.grailsexample.net/installing-a-grails-development-environment-on-os-x/

Una vez hemos terminado con la instalación procedemos a configurar grails para que trabaje con NetBeans, cabe destacar que grails se puede usar con Eclipse4 y con consola de comandos o terminal, también con “TextMate e IntelliJ IDEA”5. Por comodidad, yo voy a usar NetBeans IDE, puesto que netbeans provee un plug-in (Groovy/Grails) que reconoce automáticamente los proyectos de Grails.

4 Grails.org, art. STS Integration5 Grails.org, art. Getting Set Up in an IDE

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 6: Grails Tutorial

5. Creando una aplicación Grails en NetBeans IDE.5.1.Abrimos netbeans.5.2.Vamos a Archivo y escogemos la opción Proyecto Nuevo.5.3.En la ventana, escogemos en categoría Groovy y en Proyectos Grails

Application, después escogemos siguiente.5.4.En la ventana de la nueva aplicación grails, escogemos el nombre, en este

caso se va a llamar Ejemplo, como es la primera vez que vamos a usar grails, debemos configurar el entorno.

6. Configurando Grails (opcional: añadir la documentación de grails)6.1. (opcional) Vamos a la página de Grails, descargamos la documentación,

después de descargarla, la descomprimimos, entramos a la carpeta descomprimida y ubicamos el archivo index.html.

6.2. (opcional) copiamos la dirección del archivo index.html en la opción Groovy Doc de la ventana de Opciones de NetBeans.

6.3.En la opción Grails Home ponemos la ruta en la cual tenemos instalado Grails.

6.4.Aceptamos y continuamos con la aplicación Ejemplo.7. Una vez configurado Grails escogemos la opción terminar y esperamos a que se

creen los archivos y carpetas de nuestro proyecto.

Imágenes del proceso:

Imagen 1: Creando nuevo Proyecto en NetBeans IDE.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 7: Grails Tutorial

Imagen 2: Seleccionando Groovy/Grails en NetBeans IDE.

Imagen 3: Asignando el nombre al nuevo proyecto, iniciar configuración.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 8: Grails Tutorial

Imagen 4: Ingresando la ruta de la documentación (opcional) y la ruta del paquete de Grails. (Estas son las rutas de mi caso, no es necesario ubicarlas en el mismo sitio).

Imagen 5: Terminar el proceso de configuración.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 9: Grails Tutorial

Imagen 6: El nuevo proyecto se ha creado.

8. Creando una clase de dominio8.1.Damos clic derecho sobre el paquete “Domain Classes”.8.2.Nos deslizamos hasta nuevo y escogemos “Grails Domain Class”8.3.En la ventana de la nueva clase, escogemos el nombre.

8.3.1. El nombre de la clase es, el nombre que le vamos a dar a la tabla de la base de datos (Grails trabaja bajo el paradigma CoC “convención sobre configuración”, es decir que nos ahorrará la configuración si mantenemos un orden en la sintaxis), para este caso, vamos a llamarla “Empleado”, aceptamos y esperamos.

8.4.Una vez creada la clase Empleado, pasaremos a poner los atributos de dicha clase, en Grails, los atributos representan los campos de la tabla; Para este ejemplo pondremos cinco: código, nombres, fecha de nacimiento, una referencia al departamento en el que labora y el salario del empleado.

8.4.1. Por convención, Grails agrega a cada tabla dos campos, id y versión, estos campos son la llave primaria de la tabla y la versión en la que va la tabla respecto a sus modificaciones; Como en nuestro caso no nos interesa saber las modificaciones, quitamos el campo versión, además Grails nos permite estilizar nuestro modelo.

8.4.2. Para realizar la estilización, debemos agregar una propiedad a nuestra clase Empleado, dicha propiedad es conocida como “mapping”6 y nos permitirá configurar la forma en la que Grails “mapea” las clases dominio a la base de datos.

6 Grails.org, art. mapping

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 10: Grails Tutorial

8.4.3. También debemos agregar ciertas restricciones a los datos que el usuario va a ingresar, para esto utilizaremos la propiedad “constraints”7 y agregar la respectiva referencia entre Empleado y Departamento.

8.5.Después de crear la clase Empleado, pasaremos a crear la clase Departamento, con el atributo: nombre del departamento, aprovecharemos que Grails nos crea la llave primaria para las tablas, en este caso, la llave se va a llamar código.

8.6.Ahora, con las clases dominio, podemos generar automáticamente los controladores y las vistas, para esto nos situamos sobre la clase dominio y damos clic derecho, escogemos la opción “Generate-All” y esperamos.

Imagen 7: Seleccionando nueva Clase Dominio.

7 Grails.org, art. constraints

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 11: Grails Tutorial

Imagen 8: Nombrando la nueva clase.

Imagen 9: Clase Empleado creada.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 12: Grails Tutorial

Imagen 10: Clase Empleado implementada.

Imagen 11: Clase Departamento implementada.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 13: Grails Tutorial

Imagen 12: Seleccionando la opción de generar todo (vistas y controladores), para la clase dominio Empleado.

Imagen 13: Seleccionando la opción de generar todo para la clase Departamento.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 14: Grails Tutorial

Imagen 14: Controlador “EmpleadoController” generado automáticamente (implementa las opciones básicas del CRUD para Empleado).

Imagen 15: Controlador “DepartamentoController” generado automáticamente.

9. Conectando la aplicación con PostgreSQL.9.1.Abrimos la carpeta “Configuration” del proyecto.9.2.Abrimos el archivo “DataSource.groovy”

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 15: Grails Tutorial

9.3.Cambiamos los valores de las líneas “driverClassName”, “username” y “password”, por: "org.postgresql.Driver", el nombre de usuario de la base de datos, para mi caso "postgres", y la contraseña que hemos definido para el usuario, en mi caso "9011".

9.4.En el entorno “enviroments” vamos a la propiedad “dbCreate” y cambiamos su valor por "update" (se refiere a que cada vez que se inicie o apague el servidor, la base de datos no se va a eliminar y cada vez que se realicen cambios, dichos cambios se van a actualizar, también, nos crea las tablas si estas no existen.) y cambiamos el valor de la propiedad “url” por "jdbc:postgresql://localhost:puerto/base_de_datos", para mi caso será "jdbc:postgresql://localhost:5432/postgres".

9.5.Repetimos el paso anterior para los otros dos entornos faltantes (“test” y “production”).

9.6.Procedemos a agregar el JDBC de postgresql a nuestro CLASSPATH.9.6.1. Vamos a la ubicación en donde está el JDBC de postgresql.9.6.2. Una vez situados en el archivo, le damos copiar.9.6.3. Abrimos nuestro entorno de programación NetBeans IDE y nos

ubicamos sobre la carpeta “libraries” de nuestro proyecto y le damos pegar.

Imagen 16: Configurando la conexión.

10.Ejecutando la aplicación.10.1. Damos clic derecho sobre nuestra aplicación “Ejemplo” y escogemos

la opción “Compile” y esperamos.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 16: Grails Tutorial

10.2. Una vez haya terminado de compilar, damos clic derecho sobre la aplicación y escogemos la opción “Run” y esperamos.

10.3. Las vistas se renderizarán de forma automática y la aplicación iniciará en el explorador web (Browser) que tengamos predeterminado en nuestro sistema, Grails nos ofrece una página inicial donde encontramos cuatro enlaces, los que nos interesan a nosotros son dos: ejemplo.DepartamentoController y ejemplo.EmpleadoController, estos enlaces nos llevaran a la página donde podremos acceder a las opciones del CRUD de departamento o de empleado.

Imagen 17: Ejecutando la aplicación “Ejemplo”.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 17: Grails Tutorial

Imagen 18: Página de inicio de la aplicación.

Imagen 19: Página de inicio del controlador de “Empleado”.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 18: Grails Tutorial

Imagen 20: Página de inicio del controlador de “Departamento”.

11.Listar, agregar, eliminar y modificar.11.1. Como pudimos observar, grails nos lista los elementos que tenemos

ingresados en nuestra base de datos, el orden de los campos dependerá del orden que hayamos definido en nuestra estilización y la lista viene con paginación, por defecto nos mostrará los 10 primeros elementos.

11.2. Para agregar un nuevo elemento a la base de datos, basta con seleccionar el icono de “Nuevo Nombre_Elemento“, donde el nombre del elemento dependerá de que controlador hemos escogido.

11.2.1. Después de haber elegido la opción “Nuevo Nombre_Elemento”, nos aparecerá la vista del formulario con los campos importantes a ser llenados, los datos dependerán también de la estilización que hayamos hecho, para mi caso, los datos son necesarios y no pueden ser vacíos (exceptuando la referencia a “Departamento” en la clase “Empleado”) y el valor de código de la clase “Empleado” debe ser único.

11.2.2. Una vez hemos terminado de elegir los datos, damos clic en “Crear” y nos desplegará la vista “show” con los datos del elemento junto con un mensaje indicando que todo ha sido ingresado correctamente.

11.3. La opción de eliminar es simple, damos clic sobre el elemento que queremos eliminar y nos despliega la vista “show”, en ella encontramos la opción de eliminar o editar.

11.3.1. Damos clic en la opción de eliminar y nos aparecerá un mensaje de confirmación, aceptamos y listo, nos devuelve a la vista

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 19: Grails Tutorial

“index” y nos mostrará un mensaje diciendo que el elemento ha sido eliminado.

11.4. Para editar, hacemos lo mismo que en el paso 11.3, solo que esta vez damos clic en la opción de editar.

11.4.1. El controlador nos enviará a la vista “edit”, donde se muestran los datos del elemento a ser editado, para editar solo basta con cambiar los datos del formulario y dar clic en la opción de actualizar.

11.4.2. Una vez ha terminado, nos devuelve a la vista “show” para ver los nuevos valores y nos muestra un mensaje que nos dice que el elemento ha sido actualizado.

Imagen 21: Agregar un nuevo Empleado.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 20: Grails Tutorial

Imagen 22: Formulario de Empleado.

Imagen 23: Crear elemento.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 21: Grails Tutorial

Imagen 24: Error, el código de Empleado debe ser único.

Imagen 25: Cambiando datos.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 22: Grails Tutorial

Imagen 26: Empleado agregado correctamente.

Imagen 27: Volviendo a la lista de Empleados.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 23: Grails Tutorial

Imagen 28: Seleccionando al Empleado a eliminar.

Imagen 29: Seleccionando la opción Eliminar.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 24: Grails Tutorial

Imagen 30: Aceptando la confirmación.

Imagen 31: Elemento eliminado correctamente.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 25: Grails Tutorial

Imagen 32: Editando un elemento.

Imagen 33: Cambiando datos y seleccionando Actualizar.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 26: Grails Tutorial

Imagen 34: Edición realizada correctamente.

12.Buscar12.1. Para las búsquedas, Grails ofrece una manera dinámica y sencilla de

generarlas.12.2. Primero, vamos a ir a crear en nuestro controlador una acción que se

llama “búsqueda”, abrimos el controlador y Grails nos habrá creado para cada acción un método que se llama por convención igual que las vistas que renderiza (“show”, “index”, etc), lo creamos con def busqueda = { }.

12.3. Una vez creemos la acción, pondremos las sentencias de búsqueda, Grails utiliza una convención para las búsquedas, en nuestro caso, como no sabemos exactamente cuántos datos van a regresar de la consulta usaremos el método “findAll”8 que nos retornará una lista de elementos del dominio que cumplan una restricción.

12.4. Para este caso, haremos lo más simple posible la consulta, pondremos un campo de texto (en la vista) que va a recibir los parámetros a buscar y usaremos una búsqueda por código y por nombre, usaremos “findAllBy”9 de la siguiente manera:“def Busqueda = Empleado.findAllByCodigoLikeOrNombresLike” que recibe dos parámetros, estos parámetros son los que llegan desde la vista, para acceder a ellos, usaremos la estructura “params”10 que contiene todos los datos que son enviados al controlador desde la vista, para este caso pondremos como parámetros:

8 Grails.org, art. findAll9 Grails.org, art. findAllBy10 Grails.org, art. params

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 27: Grails Tutorial

"%"+params.inputBusqueda+"%","%"+params.inputBusqueda+"%", ya que el usuario en nuestra vista va a ingresar una sola consulta pero, será buscada tanto por código como por nombres (los “%” representan la búsqueda por “like” del SQL, el elemento “inputBusqueda” es un elemento de un formulario de la vista, esto lo crearemos más adelante).

12.5. Ya con los elementos obtenidos, debemos renderizar la vista, para esto usaremos el método “ModelAndView”11 que nos va a permitir renderizar una vista en base a un modelo, este método nos permite retornar los dos de manera simultánea, para retornarlo lo haremos de la siguiente forma:return new ModelAndView("/empleado/index",

[empleadoInstanceList: Busqueda])Este código nos dice que nos va a renderizará la vista “index” poniendo los datos de la búsqueda en “empleadoInstanceList”.

12.6. Con esto termina la programación de la clase controlador de empleado, el método “findAllByCodigoLikeOrNombresLike”, no está definido, pero Grails lo crea dinámicamente, ahora solo nos queda crear el campo de texto que va a utilizar el usuario en nuestra vista, para esto, vamos a la carpeta “Views and Layouts” o “views” y dentro encontraremos dos carpetas, una de empleado y la otra de departamento.

12.7. Abrimos la carpeta de empleado y vamos a la vista “index.gsp”, dentro de este archivo encontraremos todo el código que se va a mostrar en la página web; crearemos un formulario con nombre “búsqueda” y method “post” y dentro de este formulario pondremos el texto “Buscar Empleado” y agregaremos una etiqueta que capture el texto y otra que nos permita enviar los datos al controlador, esto lo haremos de la siguiente manera:<form name="busqueda" method="post">

<span class="menuButton">Buscar Empleado<g:textField name="inputBusqueda" value="${inputBusqueda}"/>

</span>

</form>

12.8. Ya con esto hemos terminado de crear un buscar por nombre y por código, solos nos queda guardar y esperar que NetBeans IDE compile de nuevo las clases modificadas; Después de esto ya podremos ver la página de empleados con la caja de texto y el “Buscar Empleado”. Para mi ejemplo, he cogido una nueva página que llamé “busqueda.gsp” y agregué ciertos mensajes para que la búsqueda se vea mejor, además, he

11 Grails.org, art. modelsAndViews

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 28: Grails Tutorial

modificado las otras páginas agregándoles un enlace que los lleva a la página de búsqueda.

Imagen 35: Implementación de búsqueda en el controlador.

Imagen 36: Implementación de búsqueda en la vista.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 29: Grails Tutorial

Imagen 37: Seleccionando la opción de buscar en la vista “index”.

Imagen 38: Buscando empleado por código.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 30: Grails Tutorial

Imagen 39: Empleado por código, encontrando.

Imagen 40: Buscando por parte del código, once elementos encontrados.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 31: Grails Tutorial

Imagen 41: Buscando por parte del nombre, encontrados dos elementos.

Imagen 42: Buscando un elemento inexistente.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 32: Grails Tutorial

Imagen 43: Paginación en la lista de empleados, página uno.

Imagen 43: Paginación de la lista de empleados, página dos.

Link de mi aplicación Ejemplo: OneDrive - CristianErazo - Publico - Ejemplo

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 33: Grails Tutorial

CONCLUSIONES

Grails es un framework de desarrollo ágil que ayuda en gran medida al programador en la generación de código de forma dinámica, y lo logra gracias a Groovy.

Grails es una herramienta de desarrollo “pesada” ya que requiere cargar una gran variedad de plug-in y por esto requiere de una buena máquina para poder ejecutarla.

Grails es una herramienta que facilita mucho código al programador, pero carece de herramientas para la parte del front-end de la aplicación.

Grails permite configurar distintos ambientes o entornos de ejecución, ya sea para realizar pruebas o trabajar con diferentes bases de datos.

Grails está pensado para ser una herramienta de desarrollo web ágil que oculta al programador parte de la lógica y configuración que hay por debajo de la aplicación para que él se enfoque en su objetivo.

Recomendaría usar Grails en aplicaciones que requieren ser desarrolladas de manera rápida, puesto que Grails nos permite enfocarnos en el problema sin pensar mucho en cómo realizar ciertos detalles como por ejemplo la obtención de datos, este framework posee mucha documentación, la mayoría en ingles pero su poder yace en que implementa muchas tecnologías que se sabe que son útiles y lo hace de forma transparente.

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.

Page 34: Grails Tutorial

REFERENCIAS

http://grails.org/doc/latest/guide/gettingStarted.html

http://www.grailsexample.net/installing-a-grails-development-environment-on-windows/

http://algo3.uqbar-project.org/unsam/clases/clase1_grails

http://www.uaeh.edu.mx/nuestro_alumnado/icbi/monografias/desarrollo%20agil.pdf

Cristian Camilo Erazo Agredo – Ingeniería De Sistemas – Universidad Del Cauca.