sábado, 5 de junio de 2010

Templates en Eclipse

Plantillas de Eclipse


Eclipse cuenta por defecto con una serie de plantillas que se pueden invocar tecleando un unas cuantas letras e invocando autocomplete (control+space). Entre mis favoritas están:
sysout : crea una linea de código para System.out.println();
main: crea un metodo main con sus argumentos.

Plantillas Personalizadas


Una de las funcionalidades que más me gusta de Eclipse es poder crear plantillas de código que se usa de forma repetitiva. Por ejemplo acostumbro usar la librería Log4J para crear "loggear" información dentro de mi código. Para poder utilizar la clase Logger debo instanciar un objeto en cada clase, esto implica escribir una línea de código como
private static org.apache.log4j.Logger logger = org.apache.log4j.Logger
.getLogger(MapAdminPanel.class);

En lo personal su amigo del copy-paste pero el nombre de la clase varía. Esto implica que si copio el código de arriba en otra clase luego debo editar MapAdminPanel y cambiarlo por el nombre de la clase en que lo copie.

Usando una plantilla (Template) puedo teclear lg dar control+space y Eclipse me insertará el código con en nombre de la clase donde lo estoy creando.

Para crear esta plantilla siga los siguientes pasos:


  1. Abrir Window\Preferences (Eclipse\Preferences en Mac)


  2. Muévase a Java\Editor\Templates y haga clic en New. Llene la pantalla como se muestra.
    Name es el nombre con que se invocara la plantilla en nuestro caso "lg", Context es el contexto en que la plantilla funcionará utilice Java. Pattern es el código que se insertará utilice el siguiente código.

  3. private static org.apache.log4j.Logger logger = org.apache.log4j.Logger
    .getLogger(${enclosing_type}.class);

    Note que en vez de utilizar el nombre de la clase se utiliza la variable enclosing_type. Eclipse reemplazará por usted el nombre de la clase al ser insertado
  4. Haga clic en Ok
  5. Haga clic en Ok en la ventana de Preferences.


Para probarlo abra una clase existente o cree una nueva. Dentro de la clase teclee lg y control+space y le aparecerá las opción de insertar el código.


Guardando las Plantillas


Eclipse guarda la configuración de las plantillas en el workspace. Esto quiere decir que si crea un workspace nuevo tendría que recrear todas las plantillas nuevamente. Afortunadamente podemos exportarlos a un archivo xml y luego importarlo en el nuevo workspace.

Para demostrar la flexibilidad de exportar e importar plantillas vamos a crear una plantilla personalizada adicional.

Regularmente acostumbro "loggear" los errores de una excepción utilizando Log4J en un formato estándar como se muestra:
                try {
passGen.setTemplate("oAAannaonn");
passGen.generatePassword();
logger.debug("Password template: "+ passGen.getPassword());
} catch (ParseException e) {
String msg = "%s: %s";
msg = String.format(msg, e.getClass().getName(), e.getMessage());
logger.error(msg);

fail(msg);
}

El código en negrita se repite una y otra vez a lo largo del código.

Siguiendo los pasos anteriores vamos a crear una plantilla con la siguiente información:
Name: lge
Description: log exception to Log4J
Contrext: Java Statement. Esto forzara que la plantilla solo funcione dentro de un método.
Pattern:
 String msg = "%s: %s";
msg = String.format(msg, e.getClass().getName(), e.getMessage());
logger.error(msg);

Para exportar las plantillas siga los siguientes pasos:

  1. Abrir Window\Preferences (Eclipse\Preferences en Mac)

  2. Muévase a Java\Editor\Templates. Seleccion las plantillas lg y lge.

  3. Haga clic en Export. Asignele un nombre apropiado (logging_templates.xml por ejemplo) y listo.


Este archivo puede ser importado en otro workspace o por otro usuario. Esto permite compartir plantillas estándares.

No hay comentarios:

Publicar un comentario