Entradas

Mostrando entradas de febrero, 2012

Generando Artifact en Maven

Hay veces, que tenemos un proyecto/modulo montado con una arquitectura que nos mola y queremos reutilizar en otros proyectos. Para ello Maven, permite generar artifacts a partir de un proyecto existente. De forma que cuando querramos generar un proyecto nuevo , podamos especificarle ese artifact y esto nos generara un proyecto ya pre-configurado por nosotros. (La verdad, esto es la caña). Asi que vamos al proyecto que queremos "templatizar" . Lo primero es limpiarlo bien, por ejemplo quitar las clases que no queramos, quitar los archivos de configuracion de eclipse (mvn eclipse:clean )   u otro tipo de archivos residuales que siempre se nos quedan por ahi..... GENERANDO EL ARTIFACT A PARTIR DEL PROYECTO En la raiz del proyecto ejecutamos: mvn archetype:create-from-project Maven empieza a hacer su "magia" y nos genera el siguiente directorio: \target\generated-sources Ahi dentro  tenemos una carpeta que contiene el artifact. (Maven te genera la estruct

JAVA API REFLECTION usando reflection

La libreria estandar J2SE que viene con la distribucion de java nos ofrece varios paquetes de utilidades entre los que encontramos reflection. Mediante el API reflection podemos acceder de forma abstracta a objetos que aunque conocemos ni su tipado, ni sus metodos ni otras cosas en tiempo de ejecucion podemos analizarla e interactuar con ella. Es usado en muchos frameworks para buscar clases con anotaciones, clases que implementen interfaces, conocer sus metodos, sus retornos, etc..... En resumen, que mediante reflection podemos acceder a cualquier objeto y obtener informacion de él, asi que como interactuar con él y todo en tiempo de ejecucion. Os pongo aqui un ejemplillo de una clase que usa el API reflection para acceder a un objeto y analizarlo. Saca trazas por consola de la info que obtiene e invoca a los metodos. Es muy sencillo, pero podeis ver el potencial que tiene el uso de reflection. Podeis pasarle cualquier clase que creeis vosotros y ver como la analiza, yo de

Escritura XML sencilla con Java (DOM) xml-apis

Una manera sencilla de escribir archivos sencillos de XML con java es con la libreria xml-apis DOM. Es una libreria que utiliza estructura de nodos para crear/leer un XML. Para poder tener esta libreria en nuestro proyecto y usarla, es necesario añadir esta dependencia maven:       <dependency>         <groupId>xml-apis</groupId>         <artifactId>xml-apis</artifactId>         <version>2.0.2</version>     </dependency>     O importar el  xml-apis_2.0.1.jar a nuestro classpath. Vamos alla, para empezar a usarlo necesitamos seguir los siguientes pasos: 1. Instanciar un objeto de la clase java que queremos representar en el xml. (Este ejemplo mapea clases sencillas, para cosas mas complejas recomiendo usar JAXB o realizar tareas con el API java.reflection).         //objeto a parsear a XML         Coche a = new Coche("seat 600", "rojo", 750); 2. Crear una factoria de DocumentBuilder al que le pediremos un

Lectura sencilla de XML en Java , SAX (Simple API for XML)

Vamos a ver como leer documentos XML con Sax. Sax funciona por eventos ,es decir, le pasamos el xml que tiene que leer y el ira lanzando eventos cada vez que encuentre etiquetas, propiedades, etc... Depencendia de maven:       <dependency>         <groupId>xml-apis</groupId>         <artifactId>xml-apis</artifactId>         <version>2.0.2</version>     </dependency>    Para facilitar el manejo de estos escuchadores, nos ofrece la super clase DefaultHandler, que debemos extender y sobreescribir los metodos que queremos escuchar. Vamos a crear una clase que extienda la dicha y veremos los metodos mas importantes: import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SaxReader extends DefaultHandler{     public void startDocument() throws SAXException {         //avisa de que empieza a leer el documento     }     public void startElement(String uri, String localN

Montar USB en debian (FAT - NTFS)

Imagen
El SheevaPlug no es que venga con mucha memoria, asi que si se quiere montar alguna unidad USB hay que seguir los siguientes pasos: (usuario root) 1.Tener la unidad formateada fat/ fat32 2.Pinchar la unidad USB (en este caso en nuestro SheevaPlug) 3.Ejecutar la instruccion en el directorio raiz :       fdisk -l esto mostrara un  listado con las unidades Usb que tiene reconocidas. En este caso  me saca esta info: Vemos que nos ha encontrado una unidad y tiene referencia en "/dev/sda1"  este va a ser el identificador del dispositivo. Al montar una unidad USB, lo que hace Unix, es asociar el device que nos acaba de encontrar (dev/sda1) a un directorio donde vamos a poder trabajar con él. 4.ESpecificamos en que directorio queremos que monte la unidad USB para poder trabajar con ella. Voy a crear un directorio en la raiz llamado usb_device . Ejecutamos el comando : mkdir usb_device  (esto nos crea el directorio) 5.Por ultimo montamos la unidad en dicho directorio con

Tipos Enumerados II , Enums

Hemos visto en este otro post que son los enum y para que nos valen. Hemos puesto un ejemplillo en modo sencillo, pero vamos a ver un poco mas la funcionalidad de los enum. Pongamos el enum Nacionalidad: enum IDIOMA (ESPAÑOL , INGLES) Podemos hacer comprobaciones con este enum de manera sencilla, pero pongamos por ejemplo que queremos tener mas datos en ese enum,  no solo el nombre, si no tambien el sufijo que suele tener y una descripcion.(De esta forma dejamos de pensar los enum como unos simples valores fijos ) enum Nacionalidad {     ESPAÑOLA("es", "se entiende"),     AUSTRALIANA("aus", "de las antipodas"),     INGLESA("en_GB", "para guiris"); }; Vemos que nuestro enum Nacionalidad ahora tiene mas informacion, y esto nos gusta mas. El codigo que acabo de poner arriba no compila, debido a que la clase Enum por defecto solo soporta un argumento (name)  y el indice: //sacado de la abstrac class enum    pro

Tipos Enumerados , Enum

 A partir de Java 5,  se integraron nuevos elementos que permiten mejorar nuestro codigo java. Los Enum. Los enum sirven para restringir el valor de una variable solo a unos determinados valores. Si antes usabas una clase con constantes estaticas ahora podras usar los enum. Los enum no son clases en si, son elementos que podemos definir dentro de una clase, o fuera (no hace falta que pertenezcan a ninguna). Asi por ejemplo tenemos una clase Libro, que tiene unas propiedades (nacionalidad, tipo y titulo): public class Libro {     private String tematica;     private String nacionalidad;     private String titulo;        public Libro (String tematica, String nacionalidad, String titulo){         this.tematica = tematica;         this.nacionalidad = nacionalidad;         this.titulo = titulo;     }    } Con este codigo, podemos pasarle cualquier String en los parametros del constructor  y crear un objeto Libro. Pero bien, ahora queremos,  restringir las nacionalidade

Grails , configuracion de BBDD

Imagen
Por defecto al arrancar una aplicación grails, se instancia una BBDD en memoria HSQLDB, pero si queremos usar nuestra propia bbdd externa (mas que nada por guardar los datos, no que duren solo durante la ejecución), debemos  configurar el archivo grails-app/conf/Datasource.groovy.  Antes de nada, si vamos a usar otra bbdd, por ejeplo Mysql , debemos especificarle que necesitamos la dependencia del driver de Mysql . Para que tenga este paquete es necesario especificarlo en el archivo de configuracion de la aplicacion Grails Buildconfig.groovy. Añadiremos la siguiente dependencia en el apartado "grails.project.dependency.resolution" y dentro de este en "dependencies",  quedara algo asi: grails.project.dependency.resolution{     dependencies {         // bla bla bla            runtime 'mysql:mysql-connector-java:5.1.14'     } }   Al crear la primera instalacion , nos autogenera este archivo con la configuración por defecto. Dependiendo