viernes, 29 de mayo de 2009

Rotar las etiquetas en JFreeChart

Estuve buscando y encontré este código muy práctico para rotar las etiquetas en JFreeChart

http://left.subtree.org/2007/08/14/rotate-labels-jfreechart/

Funciona tanto para desktop


... como para web.

miércoles, 20 de mayo de 2009

getParameter() con JSF y ICEfaces

Cuando se quiere obtener el parámetro de un URL usando JSP, se usa así:

String param=request.getParameter("nombre");


En JSF, es un poquitín más largo:


String param=FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("nombre");


Pero lo anterior no funciona en ICEfaces. Devuelve siempre nulo.

Si se quiere obtener el parámetro por URL, se debe escribir:

String param=((HttpServletRequest)FacesContext.getCurrentInstance()
.getExternalContext().getRequest()).getParameter("nombre");

lunes, 18 de mayo de 2009

NetBeans portable

Cuando nos dieron la noble responsabilidad de traducir la página de descargas de NetBeans 6.5 al español (http://bits.netbeans.org/netbeans/6.5/community/latest/ml/)  había un término que cuando lo traduje literalmente del inglés, salía tan largo que no entraba en la página. Este término es "OS Independent ZIP"...


...y al traducirlo decía algo como "ZIP para Sistema Operativo independiente"o "ZIP para cualquier Sistema Operativo" (Si no traducía las siglas OS, podría causar mucha confusión).

En fin. La cuestión es que cuando quiero descargar una versión de NetBeans y la quiero usar en una PC donde no quiero (o no me dejan) instalar, utilizo este archivo .zip.

Así que, no se me ocurrió otra mejor traducción para esa opción que "Archivo Zip portable"
Así que, si quieren usar el NetBeans desde su memory-stick o que sea - justamente - portable y que no necesiten instalar el NetBeans en la máquina donde van a usar... ya sea Windows, Linux, Mac, OpenSolaris etc... usen la versión "zip". Esta opción la encontrarán en la parte superior derecha de la página de descarga de NetBeans.



Nota: En este ZIP no viene ni el Glassfish, ni el Tomcat. Así que convendría llevarlos también en su memory-stick. La página de descarga de Tomcat es http://tomcat.apache.org, y de glassfish https://glassfish.dev.java.net//.
El tomcat también tiene su versión "portable". Esto es el archivo .zip o .tar.gz. Se descomprime en una carpeta y se configura el NetBeans para que use esa carpeta.
Para el caso de Glassfish no es tan directo. Pero lo bueno es que no se necesita usar un instalador. Simplemente seguir los pasos indicados en la misma página.


Actualizado 2010-03-09: la última versión disponible para descarga se encuentra aquí http://netbeans.org/downloads/index.html

viernes, 15 de mayo de 2009

Filtrar una tabla en JTable

Un alumno me pregunta cómo filtrar los datos de un JTable, siendo estos datos obtenidos de un query.

La mejor manera no es manipular el JTable a través de su cantidad de columnas, agregando filas, borrando algunas de ellas, modificando las celdas, etc. Eso es realmente un dolor de cabeza.

Recordemos que estamos trabajando en Java que es Orientado  a Objetos.. no en VisualBasic.

Así que, si queremos manipular los datos de un JTable, debemos usar una clase que se encargue de manipular los datos, y que el jtable use esa clase.

La interfaz TableModel es la indicada. Pero tiene demasiados métodos a implementar. Así que usaremos algo ya casi hecho. Se llama la clase abstracta AbstractTableModel.

Simplemente, debemos heredarla:

public class PersonasTableModel extends AbstractTableModel {....
Y con eso debemos implementar tres métodos: getRowCount(), getColumnCount() y getValueAt(int rowIndex, int columnIndex).

La clase que estamos creando debe tener un arreglo interno. Este arreglo es el resultado del query en la base de datos.

//...    private List personas = new ArrayList();//...

¿Por qué? Pues, los métodos que estamos implementado deben manipular ese arreglo. No la base de datos, ya que ese arreglo - como dije - es el resultado de un query en la base de datos.

Si se hace una búsqueda (filtrar por nombres por ejemplo), se debe hacer el query en la base de datos, y rehacer la lista. De tal manera que el jtable siempre tomara el valor del mismo modelo y este tiene la nueva lista.

Aquí dejo un ejemplo en NetBeans usando la base de datos TRAVEL. Se debe iniciar el java db del netbeans para que funcione.

El código fuente se encuentra aquí: http://diesil-java.googlecode.com/files/FiltroJTable.tar.gz

martes, 12 de mayo de 2009

JDBC para Access sin DSN

Para acceder a Access desde un JDBC, siempre nos han enseñado que se debe a Herramientas Administrativas > Administrador de Orígines de ODBC, crear un nuevo Origen, especificar el nombre del DNS, bla bla bla, y después desde el JDBC escribir como URL el nombre del DNS, bla bla.
Lo malo de esta técnica es que en cada máquina donde se va a ejecutar la aplicación java, necesita que se configure el ODBC. Ya que somos profesionales, debemos evitar las configuraciones adicionales para que nuestra aplicación funcione.

Java nos hace profesionales :)

Así que, ahora evitaremos todo el rollo de crear el DSN en el ODBC. Usemos esto:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String myDB ="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/data/neptuno.MDB";
Connection conn = DriverManager.getConnection(myDB,"","");
Pero no solo es para Access, sino para cualquier ODBC. Veamos como hacer lo mismo pero para con el Excel

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String myDB = "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=c:/data.xls;"
+ "DriverID=22;READONLY=false";
Connection conn=DriverManager.getConnection(myDB,"","");

Combo dependiente con JSP + Ajax

Este es sin duda el tema más buscado para los que desarrollan formularios web:

Combos dependientes en JSP usando AJAX

Esto es clásico en los ejemplos de combos tipo departamento-provincia-distrito, cuando los elementos de un combo depende de la selección de otro.

Pues ya, aquí está...
... y totalmente actualizado!!

Aquí lo explicamos con JQuery y AngularJS, y de regalo.. con Bootstrap y Material Design

viernes, 8 de mayo de 2009

A traducir NetBeans 6.7 (ahora vía web)

Para los que quieran apoyar en la traducción de NetBeans 6.7 al español, ahora SUN dispone del CTI: Community Translation Interface. Es un ambiente web donde todos (o al menos los quieran) puedan ayudar a traducir el NetBeans.

Ya hay bastante avanzado (importado de las versiones anteriores), así que nuestra misión es completar lo faltante.

Recordando: las dos versiones anteriores traducidas al español fueron la 5.5 (en su totalidad) y la 6.5 (completado la parte Java SE). Desde la versión 5.5 hasta las 6.7 definitivamente hay muchas cadenas nuevas a traducir.

¿Como se traduce?

Bueno, ya no hay nada que descargar (como el OmegaT), solo entrar aquí:

https://cti.sunvirtuallab.com/community/

Esperar que se cargue los proyectos, y luego seleccionar en la margen izquierda los "proyectos" que comienzan con "NetBeans 6.7". La versión más rápida: en la margen izquierda inferior seleccionar "spanish", y solo se filtrarán los proyectos de NetBeans, un par de OpenSolaris, y el Glassfish. Bueno, ahí se ve el grado de avance de la traducción. Se hace clic en cada módulo y se puede navegar hasta el contenido de cada cadena. Y a traducir.

No olvidar registrar en el CTI: https://cti.sunvirtuallab.com/community/login.jsp


A colaborar se ha dicho..!

Acerca de mi blog

No quiero pecar de presumido, ni orgulloso. Pero dejaré un poco de lado la modestia.

Cuando comencé mi blog (diesil java) lo hice porque quería apuntar ciertas cosas de java que no quería perder. Como la configuración del tomcat + apache (usando mod_jk), algunos tutoriales que hice para el jugperu.com, etc. Pero luego poco a poco fui apuntando más cosas. Y no pensé que llegaría a tanta expectativa.

Al final, el nombre "diesil java" no tenía nada que ver. Ya no era algo personal, sino casi de dominio público. Por tanto decidí cambiar el nombre del blog a "apuntes de java". Pero no lo hice saber al inicio.

Pasaron dias, semanas, y nadie visitaba esta nueva dirección. Así que "renací" la antigua dirección "diesil-java.blogspot.com" y puse al anuncio de la nueva dirección.

No sé si será por ese anuncio (más creo que sí), pero la cantidad de visitantes subió de entre ayer y hoy en 100 visitas.

Y yo que pensé que nadie visitaba mi blog... es que como casi nadie opina :)

Ahora bien...

... la velocidad de aportes que ahora hago para mi blog será reducida (creo que siempre fue reducida, jeje)

Pero no podré responder a las preguntas como antes lo hacía. El tiempo no me da. Tengo mi trabajo (que me pagan por eso), doy clases de java fundamentos y java web para el JUGPeru.com (también me pagan por eso), estoy llevando un curso en la universidad (pago por ello) y sobretodo... tengo a mi familia que mantener (el solo tenerla, ya es un gran pago para mi). Más este blog... lo hago gratuitamente. Y es más, muchos se benefician ya que con estos apuntes gratuitos que doy, hacen que incrementen sus ingresos. ¿O me dirán que lo leen solo para jugar un poco con Java?

Si me quieren ayudar, pues.. hay varios anuncios en mi blog que pueden hacer clic. No es mucho lo que gano, pero al menos sé que lo que hago no es por gusto.

Pues nada.. sigamos caminando, que el mundo así lo hace... hasta que Dios diga "hasta aquí no más".

jueves, 7 de mayo de 2009

Traducen la "biblia" de NetBeans Platform (al Inglés)

El libro de Heiko Böck "The Definitive Guide to NetBeans Platform" fue traducida al inglés.

El libro ya está en la imprenta, y estará disponible su venta en el JavaOne (Junio 2009).

Si alguien desarrollar aplicaciones sobre el NetBeans Platform, este es un el libro definitivo para poder hacerlo.

http://blogs.sun.com/geertjan/entry/finalized_cover_of_brand_new


Comentarios personales:
  • Por fin un libro que habla de NetBeans platform. Esperemos que sea tan completo como para desarrollar aplicaciones sobre él. La plataforma de Eclipse ya ha tomado bastante terreno, y ya no veo aplicaciones que no lo usen.
  • ¿Qué faltará para traducir un libro al español?
  • Offtopic: ¿Qué pasará después con NetBeans? Oracle compró BEA, y este último utiliza Eclipse para todas sus aplicaciones (tales como BPM y Weblogic Workshop). Oracle compró ahora Sun. ¿Pasará todas sus aplicaciones sobre NetBeans?. Nada es cierto. Oracle aseguró que lo que más atrajo la compra es por sus productos OpenSolaris y Java. (Oracle ya venía pasando todo su entorno de desarrollo sobre Java). Así que... aún no sabemos qué pueda pasar con NetBeans. El tiempo lo dirá.

martes, 5 de mayo de 2009

Dao y Spring

En la siguiente página, se explica cómo usar Spring usando el Patrón DAO.

http://sites.google.com/site/apuntesdejava/Home/dao-y-spring

Se explica también cómo usarlo con JDBC, iBatis y JPA.

Se analizan los tres enfoques sobre un mismo proyecto, ya que solo así se ve la importancia de usar el patrón DAO y el patrón Factory.

El ejemplo es el desarrollo de una aplicación JSF que accede a la base de datos "sample" que viene en el Java DB.

También se encuentran los proyectos usados en el tutorial

lunes, 4 de mayo de 2009

Convertir JSP a RIA con ICEfaces

Encontré este vídeo donde se muestra cómo se convierte una aplicación de puros JSP a una aplicación realmente enriquecida para Internet (RIA) usando ICEfaces.

http://java.dzone.com/features/icefaces-jsp-to-ria/