Mostrando entradas con la etiqueta java properties. Mostrar todas las entradas
Mostrando entradas con la etiqueta java properties. Mostrar todas las entradas

miércoles, abril 27, 2011

Creacion De Archivos II (Archivos para Batch, con Properties)

Retomando el post anterior, una forma de no recompilar nuestra aplicacion cuando cambien las longitudes de los campos puede ser utilizando archivos properties.

1.- por tanto hay que crear un archivo properties el cual contenga las restricciones

nombreL = 10
apellidoL = 20
edadL = 2
telefonoL = 8 


#espacio (Espa)
nombreS =Espa
apellidoS =Espa
edadS = 0
telefonoS =Espa 

2.- modificamos el constructor de nuestra clase Bean

creamos una variable properties y en el contructor

Properties properties;

public Bean() {
        properties = new Properties();
        FileInputStream fis = null;
        try {
            fis = new FileInputStream("rutaProperties"+File.separator+"propiedades.properties");
            properties.load(fis);
        } catch (FileNotFoundException e) {
            System.out.println("Archivo de configuracion no encontrado ");           
        } catch (IOException e) {
 
            System.out.println("No se pudo leer el archivo");               
        }

}

3.- modificamos nuestros metodos set, solo pondre el ejemplo de 1

public void setNombre(String nombre) {
        if(nombre==null){
            nombre = "          ";
        }
        else if(nombre.length()<Integer.parseInt ( properties.getProperty(
nombreL ) ) ){
            do{

                 if(properties.getProperty( nombreL ) .equals("Espa")){
                        nombre = nombre.concat(" ");

                 }else{
                        nombre = properties.getProperty( nombreL );
                 }
            }while(nombre.length()<=
Integer.parseInt ( properties.getProperty( nombreL ) ) );
        }

        if(nombre.length()>Integer.parseInt ( properties.getProperty( nombreL ) ) ){
            nombre = nombre.substring(0,
Integer.parseInt ( properties.getProperty( nombreL ) ) );
        }
        this.nombre = nombre;
    }


NOTA: SI OBSERVAMOS AHORA LA INFORMACION LA TOMAMOS DEL PROPERTIES, Y EL SEGUNDO ELSE IF, CAMBIA A IF, ESTO POR QUE TAL VES NUESTRO SEPARADOR QUE HEMOS CREADO ES DE MAS DE 1 CARACTER

YA HA CAMBIADO LA APLICACION, YA NO TENEMOS QUE RECOMPILAR LA APLICACION PARA CUANDO CAMBIAN LAS LONGITUDES, PERO AUN SIGUE SIN GUSTARME, ADEMAS SI DEPENDEMOS DE OTRAS REGLAS COMO ALINEAR A ALGUN LADO, PS SALE LO MISMO

SEGUIREMOS MODIFICANDO EL CODIGO...





miércoles, marzo 30, 2011

Archivos properties

En ocaciones es muy util, mas cuando de aplicaciones web se trata poder modificar datos sin necesidad de recompilar nuestra aplicacion, en casos como datos de acceso a una bd, rutas para guardar nuestros logs, rutas hacia diversas paginas. Todo esto lo podemos guardar en un archivo de propiedades el cual no se necesita compilar.

puedes utilizar un bloc de notas para crear el properties, lo unico q tienes que hacer es guardarlo con la extencion .properties

ya que tenemos realizado esto, podemos comenzar a agregar propiedades a nuestro archivo
por ejemplo la propiedad: hola.mundo =hola mundo desde mi archivo properties
si te fijas el nombre de la propiedad fue hola.mundo pero no es una oblicacion poner el punto, lo que si es no poner espacios, siendo de este modo que una propiedad puede llamarse
hola.mundo
hola_mundo
holaMundo
...
y el texto que se encuentre despues de el signo de igual sera tomado como el valor de esa propiedad, no es necesario poner comillas como acostumbramos al asignarles valores a las cadenas en java.

utilizaremos ese archivo properties de 2 distintas formas
1.- guardado en una carpeta externa a nuestra aplicacion
2.- dentro de nuestra aplicacion


DENTRO DE UNA CARPETA EXTERNA A LA APLICACION

creemos una carpeta llamada archivo_de_propiedades y dentro de ella coloquemos nuestro archivo properties

en un proyecto java creemos una clase que se llame InvocadorProperties.java dentro de la clase crearemos:

1.- un metodo obtenerProperties que devuelva un String
2.- una variable tipo Properties que llamaremos archivoProperties
3.- un metodo llamado cargarProperties
4.- un metodo cerrarProperties
5.- una variable tipo
FileInputStreama que llamaremos fis

EN EL METODO CARGARPROPERTIES
1.- declararemos un bloque try catch, el cual lanze dos excepciones de tipo: FileNotFoundException y IOException
quedando de la siguiente forma

try{
}
catch(FileNotFoundException e){
}
catch(IOException e){
}

2.- dentro del bloque try tenemos que saber el nombre de nuestro archivo properties y su ruta, para ello supongamos las variables ruta y archivo
String ruta="c:\\
archivo_de_propiedades\\";
String archivo="archivo.properties";

3.- inicialicemos nuestra variable de tipo FileInputStream que recibira como parametros la ruta y el archivo
fis = new FileInputStream(ruta+archivo);

4.- inicialicemos nuestra variable properties con nuestro FileInputStream
archivoProperties.load(fis);

YA TENEMOS CARGADO NUESTRO ARCHIVO PROPERTIES

CERREMOS EL ARCHIVO PROPERTIES
1.- utilizando el metodo cerrarProperties creemos un bloque try catch que lanze una excepcion de tipo IOException
try{
}
catch(IOExeption e){
}

2.- dentro del bloque try, solo tenemos que preguntar si nuestra variable tipo FileInputStream es diferente de null, si es asi, solo hagamosle un close
if( fis != null ){
fis.close();
}

OBTENER UNA PROPIEDAD DEL ARCHIVO
para obtener una propiedad de nuestro archivo, como es el caso de la propiedad hola.mundo solo tenemos que realizar lo siguiente

1.- preguntamos si nuestra variable de propiedades es diferente de null si lo es simplemente invocamos su metodo getProperty()

if(
archivoProperties != null ){
return archivoProperties.getProperty("hola.mundo");
}
return null;

al retornar una cadena nuestro metodo, devemos de asegurarnos retornar minimamente un null

de este modo podemos cambiar el valos de nuestra propiedad sin recompilar el programa, o añadir nuevas propiedades sin necesidad de recompilar el programa, un ejemplo de esto puede ser: tener un grupo de propiedades llamadas variable1, variable2 etc, y mediante un for en java recorrer esas propiedades, asi q si seguimos agregando variablesN, sin necesidad de recompilar podriamos utilizarlas