====== Birt ====== Birt es una herramienta para crear informes con la que estoy trabajando en estos momentos. [[http://www.eclipse.org/birt/phoenix/|Birt]] realmente es una extensión de [[http://www.eclipse.org|Eclipse]]. Que puede [[http://download.eclipse.org/birt/downloads/|descargarse]] como un paquete. Los chicos de Eclipse Birt tienen un [[http://www.eclipse.org/birt/phoenix/tutorial/#movie|videotutorial]] introductorio muy interesante. Aquí dejaré una serie de trucos y utilidades que me son útiles a la hora de desarrollar: ===== Variables Glovales ===== En BIRT se pueden establecer variables globales que serán accesibles después desde cualquier parte del informe pero se deben declarar //a pelo//. poniendolas directamente sin **var** ni nada Lo mismo sirve para las funciones. Tal que así: {{:birt:var_globales.png|}} Después son accesibles desde cualquier objeto del informe var local = variable_1 + variable_2 ===== Scripting y Logs ===== Una de las cosas interesante que ofrece BIRT es permitir scripting. Y una de las cosas necesarias cuando haces cualquier tipo de script es poder debugar. El método que he encontrado por el momento es este: -- importo todo lo necesario para instanciar el log importPackage(Packages.java.util.logging); var fileHandler = new FileHandler("/tmp/birt_jj.log", true); var rootLogger = Logger.getLogger(""); rootLogger.addHandler(fileHandler); -- registro efectivamente el log Logger.getAnonymousLogger().info("texto que aparecerá en el log"); ===== Simple Date Format ===== Esto me ha dado muchos dolores de cabeza. :-? me sigue dando dolores de cabeza:-? Como formatear una fecha en un grafico: importPackage(Packages.java.text); importPackage(Packages.org.eclipse.birt.chart.model.attribute); function beforeDrawAxisLabel( axis, label, icsc ) { // YA SE QUE SE PODRÍA HACER MAS ELEGANTE. QUEDA PENDIENTE. if (axis.getOrientation() == Orientation.HORIZONTAL_LITERAL){ var nuevoValor=new String(label.getCaption().getValue()); var mes = nuevoValor.substring(3,5); var anyo = ''; var mesTxt = new String(''); switch (mes) { case '01': { mesTxt = 'ene'; break; } case '02': { mesTxt = 'feb'; break; } case '03': { mesTxt = 'mar'; break; } case '04': { mesTxt = 'abr'; break; } case '05': { mesTxt = 'may'; break; } case '06': { mesTxt = 'jun'; break; } case '07': { mesTxt = 'jul'; break; } case '08': { mesTxt = 'ago'; break; } case '09': { mesTxt = 'sep'; break; } case '10': { mesTxt = 'oct'; break; } case '11': { mesTxt = 'nov'; break; } case '12': { mesTxt = 'dic'; break; } default: { mesTxt = 'xxx'; break; } } label.getCaption().setValue(mesTxt + ' ' + nuevoValor.substring(6,8)); // si la la cadena viene en ingles la parseo TODO mas elegante if ( mesTxt == 'xxx' ){ mes = nuevoValor.substring(0,nuevoValor.search('/')); switch (mes) { case '1': { mesTxt = 'ene'; break } case '2': { mesTxt = 'feb'; break } case '3': { mesTxt = 'mar'; break } case '4': { mesTxt = 'abr'; break } case '5': { mesTxt = 'may'; break } case '6': { mesTxt = 'jun'; break } case '7': { mesTxt = 'jul'; break } case '8': { mesTxt = 'ago'; break } case '9': { mesTxt = 'sep'; break } case '10': { mesTxt = 'oct'; break } case '11': { mesTxt = 'nov'; break } case '12': { mesTxt = 'dic'; break } default: { mesTxt = 'xxx'; break; } } anyo = nuevoValor.substring(nuevoValor.lastIndexOf('/')+1); anyo = anyo.substring(0,2); label.getCaption().setValue(mesTxt + ' ' + anyo); } // si la la cadena viene en ingles la parseo TODO mas elegante if ( mesTxt == 'xxx' ){ mes = nuevoValor.substring(0,3); switch (mes) { case 'Jan': { mesTxt = 'ene'; break } case 'Feb': { mesTxt = 'feb'; break } case 'Mar': { mesTxt = 'mar'; break } case 'Apr': { mesTxt = 'abr'; break } case 'May': { mesTxt = 'may'; break } case 'Jun': { mesTxt = 'jun'; break } case 'Jul': { mesTxt = 'jul'; break } case 'Aug': { mesTxt = 'ago'; break } case 'Sep': { mesTxt = 'sep'; break } case 'Oct': { mesTxt = 'oct'; break } case 'Nov': { mesTxt = 'nov'; break } case 'Dec': { mesTxt = 'dic'; break } default: { mesTxt = nuevoValor; break } } anyo = nuevoValor.substring(nuevoValor.lastIndexOf(',')+1); anyo = anyo.substring(0,5); label.getCaption().setValue(mesTxt + ' ' + anyo); } if ( mesTxt == nuevoValor ){ // salvavidas label.getCaption().setValue(' '); } axis.setLabel(label); } }