10 December, 2007

Ireport en netbeans 6

IreportFantástica noticia la que nos llega desde la comunidad “jasper”, se han lanzado al desarrollo de un nuevo ireport para plataforma NetBeans 6. Por el momento ya nos podemos descargar el plugin en beta preview, aunque en su web comentan que liberarán la versión final en FEBRERO 2008, a la vuelta de la esquina. Yo mientras voy a echarle un ojo a sus videos y capturas de pantalla.

6 December, 2007

Aplicación Java swing a pantalla completa (fullscreen)

Existen por lo menos dos métodos para poder abrir una aplicación swing a fullscreen.

La que mas me gusta, simplemente creamos un componente que herede de un JWindow, por ejemplo, y le asignamos las dimensiones de nuestra pantalla, esto funciona siempre:

  1. public class pruebaFullScreen extends JWindow
  2. ...
  3. public pruebaFullScreen()
  4. {
  5.    this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
  6.    this.setVisible(true);
  7.    this.setBackground(Color.YELLOW);
  8.    this.toFront();
  9.    this.setAlwaysOnTop(true);
  10. }

Y la otra la explica a la perfección Antonio Calero en javahispano http://www.javahispano.org/contenidos/es/aplicaciones_a_pantalla_completa:

  1. // Primero obtenemos una referencia al entorno gráfico de ventanas
  2. GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
  3. // Obtenemos una referencia al dispositivo gráfico primario
  4. gd = ge.getDefaultScreenDevice();
  5.  
  6. // Si no hay soporte adecuado lo mostramos por pantalla
  7. if(!gd.isFullScreenSupported()) System.out.println("WARNING: No hay soporte.\n");
  8. else System.out.println("INFO: Detectado soporte\n");
  9. try
  10. {
  11.    // Activamos el modo a pantalla completa
  12.    gd.setFullScreenWindow(this);
  13. }
  14. catch(Throwable e)
  15. {
  16.    e.printStackTrace();
  17. }

Comentar que utilizando esta opción y dependiendo del S.O. que utilicemos pueden haber elementos del sistema que se sigan situando por encima de nuestra aplicación swing como por ejemplo el menú de xfce.

5 December, 2007

Pintando informes horizontales con ireport

Os parecerá una tontería, pero algo mas de media mañana me he pasado averiguando como leches se imprimían informes horizontales con ireport. Como no podía ser de otra forma al final apareció, tan fácil como ir edit > report properties y en la pestaña more... de las propiedades del informe tenemos una opción Print Order para indicar si queremos que el informe se pinte en vertical u horizontal.

Captura pantalla informe horizontal ireport

1 December, 2007

Lanzando informes jasperreports “pdf / xls” desde un servlet

Amiguetes, por aquí seguimos probando y reprobando informes jasperreports. Hoy dejaré un par de apuntes de código que muestran como generar el informe final en pdf o xls teniendo ya el informe diseñado en un fichero .jasper, yo lo he hecho con el ireport, ¿alguien se atreve a hacerlo a mano?, por cierto, y ahora que nadie nos ve, habéis oído hablar de jarvis?, intentaré seguirlo de cerca, parece un plugín para generar informes jasperreport gráficamente en netbeans, pero todavía esta en betas. No me enrollo mas vamos al meollo:

A un informe jasper podremos pasarle tantos parametros como necesitemos para ello debemos crear un Hastable para luego pasarlo como parámetro en la generación del informe:

  1. Map parameters = new HashMap ();
  2. //A nuestro informe de prueba le vamos a enviar la fecha de hoy
  3. parameters.put ("fechainicio", new Date() );

Para exportar a formato pdf:

  1. ServletOutputStream out;
  2. // Creamos un objecto jasper con el fichero previamente compilado
  3. JasperReport jasperReport = (JasperReport)JRLoader.loadObject ("/javi/InformeDemo.jasper");
  4.  
  5. // Generamos el informe pasandole como parametros el objecto creado anteriormente jasperReport, parameters que es el hashmap
  6. // creado anteriormente con todos los parametros que necesitemos enviarle al informe y conn una conexión activa con vuestro
  7. // servidor de BD
  8. byte[] fichero = JasperRunManager.runReportToPdf (jasperReport, parameters, conn);
  9.  
  10. // Y enviamos el pdf a la salida del navegador como podríamos hacer con cualquier otro pdf
  11. response.setContentType ("application/pdf");
  12. response.setHeader ("Content-disposition", "inline; filename=informeDemo.pdf");
  13. response.setHeader ("Cache-Control", "max-age=30");
  14. response.setHeader ("Pragma", "No-cache");
  15. response.setDateHeader ("Expires", 0);
  16. response.setContentLength (fichero.length);
  17. out = response.getOutputStream ();
  18.  
  19. out.write (fichero, 0, fichero.length);
  20. out.flush ();
  21. out.close ();

Y esta vez probaremos también a generarlo como un xls para excell:

  1. int bit;
  2. File f;
  3. ServletOutputStream out;
  4.  
  5. JasperPrint jasperPrint=JasperFillManager.fillReport ("/javi/InformeDemo.jasper", parameters, conn);
  6. String xlsFileName = "informeDemo.xls";
  7.  
  8. //Creacion del XLS
  9. JRXlsExporter exporter = new JRXlsExporter ();
  10. exporter.setParameter (JRExporterParameter.JASPER_PRINT, jasperPrint);
  11. exporter.setParameter (JRExporterParameter.OUTPUT_FILE_NAME, xlsFileName);
  12. exporter.setParameter (JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
  13. exporter.exportReport ();
  14.  
  15. // En este punto ya esta Creado el XLS
  16. // Ahora leemos el fichero y forzamos al navegador a que nos descargue el fichero.
  17. f = new File ( xlsFileName);
  18.  
  19. response.setContentType ("application/vnd.ms-excel"); //Tipo de fichero.
  20. response.setHeader ("Content-Disposition", "attachment;filename=\"" + xlsFileName + "\""); //Configurar cabecera http
  21.  
  22. in = new FileInputStream (f);
  23. out = response.getOutputStream ();
  24.  
  25. bit = 256;
  26. while ((bit)>= 0)
  27. {
  28.    bit = in.read ();
  29.    out.write (bit);
  30. }
  31.  
  32. out.flush ();
  33. out.close ();
  34. in.close ();

Y esto ha sido todo por hoy, todavía me queda mucha estadística que machacar, para la próxima mas!

22 November, 2007

Liberado ‘NetBeans IDE 6.0 RC2′

Logo NetbeansHoy nos hemos levantado con la RC2 de Netbeans 6 que parece será la última hasta su liberación definitiva el 3 de Diciembre.

Esta nueva versión trae consigo novedades y mejoras muy significativas, entre las más importantes: soporte para ruby, magnífica integración con subversion, importantes mejoras en el editor, soporte javascript / css / xhtml (coloreado de sintaxis, autocompletado de código, rename refactoring, etc), modelado UML, integración con profiler, soporte jpa y muchas mas que podeis consultar con detalle en http://wiki.netbeans.org/wiki/view/NewAndNoteWorthy.

Descarga desde http://download.netbeans.org/netbeans/6.0/rc2/

20 November, 2007

¿Que es Jasper Reports?

Logo Jasper ReportsJasperReports es una herramienta gratuita y opensource que se compone de un conjunto de librerias java para facilitar la generación de informes en nuestras aplicaciones tanto web como de escritorio.
Los informes se definen en un fichero xml el cual será compilado por las librerías jasper report y generarán un fichero .jasper que utilizaremos para rellenar y mostrar el informe final. La salida de los informes puede ser a la impresora, pdf, cvs, xml, txt, html, xls, rtf, jasper viewer, y a medida que liberen versiones seguramente alguna mas. La definición de los informes se puede realizar directamente sobre los xml descriptores o podemos utilizar la herramienta ireport para diseñarlo gráficamente.

Uno de los puntos fuertes de jasper report es su comunidad http://www.jasperforge.org y la compañía que está detrás, JasperSoft nacida del éxito alcanzado por las primeras versiones de jasperreport y centrada en el desarrollo de herramientas Business Intelligence.

Personalmente he de comentar que me ha gustado mucho ireport, funciona a la perfección en mi ubuntu, nos proporciona todo lo necesario para diseñar informes de una complejidad media, y la curva de aprendizaje para comenzar a tener resultados productivos no es muy elevada. Claro que cuando necesitamos diseñar informes mas complejos en los que intervienen gran cantidad de tablas y relaciones de nuestra BD, ireport se vuelve farragoso, comienzas a tener que crear multitud de subinformes o enviar mas parámetros de los deseados para obtener los datos necesarios. Ya os contaré mis próximas experiencias en este entorno, todavía me queda pendiente echarle un vistazo a jasper server, jasperETL y DynamicJasper, si encuentro el momento dejaré por aquí mis impresiones.

Wiki JasperReports
Requirimientos JasperReports

18 November, 2007

Google&Company = OpenHandSetAlliance => Android


A nadie se le escapaba ya que google se estaba preparando para entrar en el mundo móvil, algunos mas fantasiosos y a pesar de los desmentidos de la compañía seguían creyendo en que presentaría un teléfono similar al iphone de apple, otros de forma mas acertada creían a google e insistían en que su negocio era software no hardware que su modelo de negocio se basaba únicamente en la publicidad.
Pues bien el pasado día 11, un grupo de mas de 30 empresas liderados por google, la openhandsetalliance (alianza de terminal abierto), presentaban android, una plataforma abierta para terminales móviles en la que se incluye un sistema operativo basado en el kernel de linux 2.6, un conjunto de aplicaciones (contactos, sms, email, calendario, navegador(basado en webkit), etc...) y un framework escrito en java para desarrollar aplicaciones.

Android esta llamado a marcar época por muchos motivos; poner de acuerdo tantas y tan importantes empresas en este negocio es un hecho sin precedentes; el apoyo de google que hasta la fecha ha convertido en oro todo lo que ha tocado, con la segura portabilidad de todos sus servicios web de los que se intuye que google maps formará una parte estratégica; la decisión de liberar la plataforma bajo licencia apache(ASL) hace posible su uso de formas y bajo modelos de negocio muy diferentes.

Desde google ya han comenzado a soltar la pasta para comenzar a formar comunidad y desde su blog bajo el título de Calling all developers: $10M Android challeng anuncian un concurso para desarrolladores, premian con 10 millones de dólares al mejor proyecto software para la plataforma, nada mal.

Fuera de la openhandsetalliance se quedan por el momento compañías importantes como Nokia, Sony Ericsson, Blackberry o Microsoft, con posturas muy diferentes, mientras que Nokia ya ha anunciado su disposición a desarrollar terminales compatibles con android, Microsoft sigue apostando por su windows mobile y saca a relucir su ventaja (40 millones de telefonos, acuerdos con 166 operadoras, 55 fabricantes de dispositivos, 18.000 aplicaciones, etc). Solo el tiempo nos dirá en que posición quedará cada uno, desde luego se avecina una dura batalla, iphone;windows mobile;openmoko;simbian;Palm OS;Blackberry...

Unas capturas de pantalla:

Y un par de enlaces a la presentación de android, y a un primer vistazo sobre como contruir una aplicación para android:
http://www.youtube.com/watch?v=1FJHYqE0RDg
http://www.youtube.com/watch?v=I6ObTqIiYfE

Powered by WordPress
Bajo licencia Creative Commons
Contacto sanroman.javier at gmail.com