Jun 02

Lo siento Ubuntu, vuelvo a Windows.

 

Sintiéndolo mucho en el alma, he vuelto a dejar Ubuntu para pasarme a Windows.

Llevo un mes largo con Ubuntu, en una segunda intentona seria de abandonar definitivamente Windows, pero los problemas siguen siendo mayores que las ventajas.

En primer lugar, sigo siendo incapaz de montar los pendrive. Sí, seguro que se puede y sí, seguro que no le he dedicado suficiente tiempo, pero en Windows también puedo hacerlo y le dedico cero de tiempo.

Estos días atrás llegó la gota que colmó el vaso. Para un tutorial de Applet me hice un Applet tonto y una página tonta de html. Lo visualizo en mi firefox versión 3 beta y se visualiza correctamente … hasta que le das al botón de refrescar. Entonces el Applet sale gris o directamente da error.

Me digo, esto seguro que es por la versión beta de firefox. Voy a bajarme la 2 que es estable y funciona bien. Exactamente, con la versión 2 no está java instalado. Me pongo a instalar el plugin y que no se puede instalar automáticamente, que lo haga de forma manual. La  forma manual consiste básicamente en reinstalar el jre de java, así que lo hago. Nada, el firefox sigue sin applets.

Después de una horita de pelearme con el tema sin resultados, me paso a windows y en cinco minutos reescribo el applet desde cero y lo tengo funcionando bien. Así que me quedo en Windows.

Jan 25

… y del ruso pasamos al Excel con POI

Siguiendo el post anterior, ya me  he dado la pequeña paliza de ir externalizando String por todo el código eclipse para sacar los textos y que alguien los traduzca al inglés y al ruso. Yo domino varios idiomas: colombiano, cubano, chileno, argentino, mexicano, etc, pero inglés no y el ruso menos, así que todo el trabajo para el traductor, que para eso le pagan.

Me comentan que el traductor, cómo no, es ofimático, así que lo de darle los ficheros de propiedades que encima son textos técnicos pues no vale. Tenemos que pasar esos textos en una columna de una hoja excel. Debemos añadir otra columna en la hoja con explicaciones de los textos más complejos, palabras que no se traducen o significado de ciertas palabras técnicas o propias del proyecto. Y dos columnas más vacías, una para que lo ponga en inglés y otra en ruso.

Pues bien, es una oportunidad estupenda para aprender a usar POI y hacer un programa java que haga:

  • Se le indica un directorio a partir del cual buscar, que será el directorio del proyecto. A partir de ahí, busca recursivamente todos los ficheros messages.properties generados por eclipse. Para la búsqueda de ficheros recursivamente, he usado un pequeño buscador de ficheros en java que me hice en su día.
  • Lee cada uno de esos ficheros y genera varios EXCEL con el formato indicado anteriormente. De cosecha propia he añadido una columna con la "clave" de la etiqueta en el properties, de forma que luego pueda generar los messages_en.properties y messages_ru.properties también de forma automática. Me he inventado lo de _ru, de ruso.
  • Salva el excel poniendo un nombre al fichero xls que corresponda más o menos con el paquete donde está el messages.properties. Algo como cambiar los puntos de los paquetes por _

Dicho y hecho. Me he cogido POI, un pequeño ejemplo de uso de otro compañero y me he hecho el programita java. Ahora ando con la tontería de poner en la hoja una cabecera bonita, unos bordes para las celdas y demás.

Aprovecho para dar unas pequeñas indicaciones de cómo se usa POI para crear un EXCEL.

Ante todo, bajarnos el jar de poi. Como lo he hecho con maven, lo he añadido como dependencia en el pom.xml copiando del pom.xml de poi, así que sin problemas, maven crea el proyecto eclipse y se baja el jar.

Y en el código java, lo primero, crear el cuaderno de excel y una hoja

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("Hoja 1");

creamos ahora una fila, la fila cero, y le ponemos celdas de cabecera

HSSFRow row = sheet1.createRow((short) 0);
HSSFCell cell = row.createCell((short) 0);  // celda de columna 0
cell.setCellValue("ESPAÑOL");
cell = row.createCell((short) 1);  // celda de columna 1
cell.setCellValue("RUSO");

y así sucesivamente con el resto de filas y columnas y todos los datos. Finalmente, para guardar definitivamente el fichero

FileOutputStream fileOut = new FileOutputStream("fichero.xls");
wb.write(fileOut);
fileOut.close();

y listo. La verdad es que me ha asombrado lo sencillo que es. Ahora ando metiendo estilos en las celdas y tampoco parece complejo, aunque sí un poco más laborioso. Así que ya tengo dos entretenimientos que hacer. Un par de pequeños tutoriales en la Chuwiki: Un ejemplo sencillo y algo como "ExportTableModelToExcel" y el viceinverso.