Manual Básico de Eclipse JET
Introducción
¿Qué es Eclipse JET?
Java
Emitter Template (JET) es un subproyecto de Eclipse Modeling Framework (EMF)
centrado en simplificar el proceso de generación automática de código (Java,
XML, JSP, etc.) a partir de plantillas.
JET
funciona a partir de plantillas muy similares a los JSP que, al igual que en
esta tecnología, son traducidas a una clase Java para luego ser ejecutadas
por medio de una clase generadora creada por el usuario.
¿Para qué sirve?
Sirve
para generar automáticamente código fuente (Java, XML, JSP, SQL o cualquier
texto) a partir de plantillas.
Es una tecnología que no nos va a dejar sin
trabajo a los programadores pero nos va a ayudar mucho a escribir código
base sobre el que desarrollar.
Por ejemplo, se podria programar automáticamente los controllers, DAOs y JSP
del CRUD (operaciones de crear, leer, actualizar y eliminar) de una entidad
a partir de su JavaBean.
¿Cuándo utilizar Eclipse JET?
JET se ajusta mejor a proyectos grandes y
estructurados, donde se ha definido un framework (entendido como
arquitectura reutilizable) que requiere la programación de extensiones
básicamente similares. JET entonces nos puede ayudar a crear el código base
sobre el que continuar programando ahorrándonos la escritura de código
esencialmente repetitivo.JET puede ayudarnos también a crear plantillas
customizadas de JSPs o HTMLs.
¿Cómo utilizar Eclipse JET?
Bueno, eso depende de nuestros recursos e
inversión. Lo más bonito es meterlo dentro de un plug-in con interfaz de
usuario tipo asistente, pero dependiendo de nuestros conocimientos puede
llevarnos las mismas o más horas que el ahorro de utilizar plantillas. Otra
forma elegante y más económica es encapsularlo dentro de una tarea Ant. Y
finalmente siempre queda el recurso de crear una clase con un main donde
metamos los argumentos en el código del generador.
¿Cómo funciona esto internamente?
Básicamente, se programan las plantillas y el
generador. Éste se puede hacer reutilizable para todas las plantillas o
especializarse en una o más, a gusto del programador.
Un ejemplo de JET:
1. Convertir el proyecto a
un JET Project
File /
New / Others / Java Emitter Templates / Convert Projects to JET Projects,
seleccionar los proyectos y Finish. El asistente creará una carpeta
templates.
2. Cambiar los JET
Settings
En Project / Project Properties, seleccionar JET Settings e indicar en
Source Container el path donde alojamos el código fuente.
3. Crear la plantilla
En la carpeta
templates crear un
fichero (File / New / File) con una extensión terminada en
jet
como por ejemplo
DaoTemplate.javajet.
Atención: generará un error la primera vez porque el fichero está vacío,
pero podemos ignorarla. En el mismo incluimos la plantilla, por ejemplo:
<%@jet package="com.jas.jet.templates" class="DaoGenerator" imports="java.util.*" skeleton="generator.skeleton" %> <% HashMap argumentMap = (HashMap) argument; String className = (String) argumentMap.get("className"); String classNameLower = className.toLowerCase(); String searchProperty = (String) argumentMap.get("searchProperty"); String searchPropertyLower = searchProperty==null?null:searchProperty.toLowerCase(); %> package com.jas.pruebaSpring.model.dao; import java.util.List; import com.jas.pruebaSpring.model.<%= className %>; public interface <%= className %>Dao { <%= className %> find<%= className %>ById(int id); <% if (searchProperty!=null) {%> List find<%= className %>By<%= searchProperty %>(String <%= searchPropertyLower %>); <% } %> void insert<%= className %>(<%= className %> <%= classNameLower %>); void update<%= className %>(<%= className %> <%= classNameLower %>); List getAll<%= className %>s(); void remove<%= className %>(<%= className %> <%= classNameLower %>); }
Creo que si se conoce la tecnología JSP esta plantilla se entiende
bastante bien por sí sola, pero en
http://www.eclipse.org/articles/Article-JET/jet_tutorial1.html al
final del artículo hay una pequeña guía de referencia de los elementos y
directivas de una plantilla JET.
En la carpeta
com.jas.jet.templates
se generará automáticamente una clase
DaoGenerator
que generará la plantilla. Obviamente, este paquete y
nombre de clase podemos renombrarlo a nuestro gusto.
En este caso he obligado al generador a implementar utilizar un
esqueleto como el que sigue:
public class CLASS implements com.jas.jet.GeneratorInterface { public String generate(Object argument) { return ""; } }
Esta interfaz consiste sólo en:
public interface GeneratorInterface { String generate(Object argument); }
De esta forma podré manipular genéricamente a los generadores.
4. Crear el generador
Consiste en una clase que invoque a la plantilla de la siguiente forma:
HashMapargumentsMap = new HashMap (); argumentsMap.put("className", className); argumentsMap.put("searchProperty", searchProperty); GeneratorInterface generator = new DaoGenerator(); String result = generator.generate(argumentsMap ); System.out.println(result);
Y ya podemos ingeniarnos para hacerle miles de mejoras como parsear la
clase generada y saber entonces la carpeta y nombre del fichero donde
guardarlo automáticamente.
¿Licencia?
Eclipse JET es parte del
proyecto Eclipse y utilza su licencia, por lo que es Open Source disponible,
modificable y comercializable libremente.
(todo asesoramiento en esta licencia será bienvenido)
¿Y para qué este manual básico?
Para simplificar el «first touch» y para
explicar Eclipse JET a alto nivel.
No pretende ser un tutorial, una guía del
usuario ni un manual de referencia. Ellos ya se han escrito y están
disponibles en las direcciones que se mencionan en la sección «¿Dónde
encuentro más info?»
¿Dónde encuentro más info?
En la Página Oficial del Proyecto EMF es
http://www.eclipse.org/emf donde encontrarán muy poca
información sobre JET. En la sección Documentación se reseña un sólo
tutorial (
www.eclipse.org/articles/Article-JET/jet_tutorial1.html) de donde se
pueden sacar algunas buenas conclusiones. También está disponible el JavaDoc
de la API.
Cabe aclarar que a pesar de la falta de
documentación es un proyecto totalmente activo aunque muy «eclipsado» por el
gran EMF.
A pesar de la falta de documentación, es un
framework esencialmente sencillo de utilizar y muy parecido a la tecnología
JSP.
¿Cómo pongo en funcionamiento Eclipse JET?
Básicamente en Help / Software updates / Find
and install… hay que instalar el «EMF plug-in version 2.2.1» o superior.
Con esto y siguiendo los pasos de la sección
«¿Cómo funciona esto internamente?» es suficiente.