Posts en la categoría: Java

Timestamps automáticos para los modelos de Play

Una de las cosas a las que me he acostumbrado al trabajar con Rails es al mantenimiento automático de timestamps (a saber, fecha de creación y fecha de actualización). El framework Play no tiene nada del estilo, así que aquí os dejo la clasecilla que usamos nosotros para obtener este comportamiento. Con sólo dejarla en app/models todos los modelos tendrán los atributos createdAt y updatedAt y sus valores se actualizarán automáticamente. A nosotros nos gusta así, pero podéis afinar el comportamiento a vuestro gusto.

package models;

import java.util.*;
import javax.persistence.*;
import play.db.jpa.*;

@MappedSuperclass
public class Model extends play.db.jpa.Model {

    public Date createdAt;

    public Date updatedAt;

    @PrePersist
    void onPrePersist() {
        if (this.createdAt == null) {
            this.createdAt = new Date();
        }
        this.updatedAt = this.createdAt;
    }

    @PreUpdate
    void onPreUpdate() {
        this.updatedAt = new Date();
    }
}

Play framework: fix para el módulo de Ivy

La versión 1.0 del módulo de Ivy tiene un pequeño bug que hace que los comandos Play de otros módulos no puedan ejecutarse. No voy a entrar en explicaciones, sólo os dejo el fix: tenéis que eliminar la última línea del fichero ${play.path}/modules/ivy-1.0/commans.py.

    print "\n"
    print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
    print "~ Application dependencies ~"
    print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
    for jar in os.listdir(os.path.join(application_path, 'lib')):
        print(jar)
    print "\n"

sys.exit(0)  # ¡Esta línea es maligna!

Maven a todo color

Hay una cosa que siempre me ha fastidiado de la salida que escupe maven al ejecutar los tests: nunca sé, así de un vistazo, si todo ha ido bien o si ha fallado algo. Así que tras googlear un poco me he topado con esto http://ju-n.net/colorize-maven-output.

Se trata de una función bash que utiliza sed para procesar la salida de maven y colorearla.

Para poder utilizarlo también con watchr (sobre el que David ha blogueado recientemente) hemos (gracias David) introducido un par de modificaciones en el script que aparece en el enlace anterior:

  # aquí irían todos los exports de colores
  ...
  # hacemos un alias del comando sed que aparece en el enlace de más
  # arriba sin olvidarnos de resetear los estilos al final
  alias colorize-mvn-output='sed -e [...] && echo -ne ${RESET_FORMATTING}'

  mvn-color() {
      $(which mvn) $@ | colorize-mvn-output
  }
  alias mvn="mvn-color"

  mvn-watchr() {
      watchr $@ | colorize-mvn-output
  }

  # como usamos watchr para más cosas que ejecutar tests 
  # de maven, no creamos un alias que sobreescriba el comando 
  # watchr

Ahora, cuando hagamos directamente

  $ mvn test

o bien utilicemos watchr llamando a

 $ mvn-watchr path/to/script.file

obtendremos unos resultados muchos más coloridos.

Maven a todo color

Y con esto queda explicado mi extraño tweet.

Microsoft Office 2003 Professional Edition Adobe Creative Suite 2 Premium Macromedia Dreamweaver 8 [Mac] Microsoft Office Visio Professional 2007 Microsoft Windows XP Professional SP3 Adobe Flash Media Server 3.0 Adobe Font Folio 11 Microsoft Office 2008 [Mac] Adobe Acrobat 8 Professional [Mac] Adobe InDesign CS3 [Mac]