Showing posts with label Properties. Show all posts
Showing posts with label Properties. Show all posts

Monday, April 8, 2013

MODIFICACIÓN DE .PROPERTIES EN FÍSICO.


Buen día en esta oportunidad mostraré una forma de cómo realizar una modificación sobre un archivo .properties en caliente.  En si esto me sucedió el año pasado en mi trabajo ya que nos llegó un requerimiento dentro del cual se pedía que algunos datos que se jalaban de un .properties deberían ser cambiantes en el tiempo, debido a ellos se tenía que no solo manejar en memoria los cambios sino que estos datos deberían ser aplicados en físico sobre algunos campos del .properties.

La verdad que no sabía bien cómo hacerlo pero poco a poco se me vinieron ideas a la mente y este fue el dummy que arme como base de manera independiente.
 

1. Para el manejo de las excepciones posibles las clase son las siguientes:
   - BaseException.java
   - FileException.java


2. Se está manejando una clase utilitaria para la manipulación de del fichero, carga y   modificación de datos del  .properties en el Hastmap, etc:
   - UtilFichero.java


3. Para la ejecución del Dummy:
   - TestUpdateProperties.java

    
4. Archivo de configuración a modificar:
   - MiFichero.properties


LÓGICA:

La lógica del Dummy es que existe un método que recibirá dos parámetros: “EL CAMPO” y la “DESCRIPCION” del .PROPERTIES. Luego, se validará las rutas de existencia del fichero .properties. Si es que existiera se cargarían todos los datos del .properties dentro de un Hashmap. Luego, se modificará un campo del Hashmap en base al dato inicial: “EL CAMPO” y se actualizará la “DESCRIPCION”.Luego, se creará un .properties TEMPORAL en el cual se grabará el contenido del Hashmap (Ya con el cambio). Después, se eliminará el .properties original, Finalmente, se renombrará el archivo TEMPORAL por el nombre original del .properties. En si  el proceso es muy rápido.



Para más detalle descargar el ejemplo completo desde: AQUÌ.


Saturday, April 17, 2010

MANEJO DE LA CLASE: java.util.Properties

Muchas veces es necesario que en nuestras aplicaciones tengamos un Archivo de Configuración con los parametros de configuración de parte o de toda nuestra aplicación. Por ejemplo, un archivo de configuración donde se registren las conexiones, drivers, URL, etc de nuestras 'BDs' a las que nos contectamos. Porque realizamos estos?, bueno normalmente para eliminar la tendencia de tener 'HardCodeado' en diferentes parte de nuestra aplicación dichos parametros. Uds dirán y porque no tenerlos en una clase 'Constantes.java', bueno la razón es que dicha clase 'Constantes.java' al ser compilada genera un '.class' y luego del despliegue si queremos editar un campo de dicha clase simplemente 'NO PODREMOS'. Por este motivo lo mejor es tener un archivo de configuración en un fichero de tipo: .PROPERTIES, .XML o un .TXT, ya que estos no se compilan y pueden ser editados en todo momento. En esta oportunidad mostraré la utilidad que brinda la clase: 'java.util.Properties', para el acceso a ficheros de tipo: .PROPERTIES y con ellos poder crearnos un archivo de configuración para nuestras aplicaciones.

FICHERO DE CONFIGURACIÓN:
#####################################################################
################ PROPIEDADES DE PARA ACCESO DE DATOS ################
#####################################################################

#### EL DELIMITADOR DE ACCESO SE PUEDE REGISTRAR CON LA SIMBOLOGÍA => ':', '=', 'BLANCO' ####

propiedad.datos.nombres = Cesar Ricardo
propiedad.datos.apellidos : Guerra Arnaiz
propiedad.datos.direccion Av Naranjal 1029 Los Olivos


CLASE: ManejoJavaProperties

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

/**
* @author Cesar Ricardo.
* @clase: ManejoJavaProperties.java
* @descripción descripción de la clase.
* @author_web: http://frameworksjava2008.blogspot.com
http://viviendoconjavaynomoririntentandolo.blogspot.com
* @author_email: nombre del email del autor.
* @author_company: nombre de la compañía del autor.
* @fecha_de_creación: dd-mm-yyyy.
* @fecha_de_ultima_actualización: dd-mm-yyyy.
* @versión 1.0
*/
public class ManejoJavaProperties{

private static final String RUTA_PATH = "src/org/java/properties/";
private static final String FICHERO = "FicheroConfiguracion.properties";

/**
* main
* @param argumentos
*/
public static void main( String[] argumentos ){
ManejoJavaProperties properties = new ManejoJavaProperties();
properties.cargarDataFichero();
}

/**
* cargarDataFichero
*/
public void cargarDataFichero(){
try{
String rutaFichero = RUTA_PATH + FICHERO;
Properties objPropiedadFichero = new Properties();
FileInputStream archivoInput = new FileInputStream( rutaFichero );

//Carga Fichero.
objPropiedadFichero.load( archivoInput );

//Obteniendo Datos.
String nombres = objPropiedadFichero.getProperty( "propiedad.datos.nombres" ); //Identificador de 'Nombres' registrado para Acceso.
String apellidos = objPropiedadFichero.getProperty( "propiedad.datos.apellidos" ); //Identificador de 'Apellidos' registrado para Acceso.
String direccion = objPropiedadFichero.getProperty( "propiedad.datos.direccion" ); //Identificador de 'Direccion' registrado para Acceso.

//Imprimiendo Resultados.
System.out.println( "- Dato Obtenido #1: " + nombres );
System.out.println( "- Dato Obtenido #2: " + apellidos );
System.out.println( "- Dato Obtenido #3: " + direccion );

objPropiedadFichero.setProperty( "propiedad.datos.nombres", "Cesar Ricardo = JAVAMAN" );

//El SETEO solo se dá en MEMORIA, no en el fichero FISICO en sí.
nombres = objPropiedadFichero.getProperty( "propiedad.datos.nombres" ); //Identificador de 'Apellidos' registrado para Acceso.
System.out.println( "" );
System.out.println( "- Dato Obtenido #1 (NEW): " + nombres );
}
catch( IOException e ){
e.printStackTrace();
}
catch( Exception e ){
e.printStackTrace();
}
}
}

Para descarga del ejemplo completo pulsar AQUÍ.