r01f.xmlproperties
Class XMLPropertiesManager

java.lang.Object
  extended by r01f.xmlproperties.XMLPropertiesManager

public final class XMLPropertiesManager
extends java.lang.Object

XMLProperties.java
Clase wrapper para ficheros de propiedades en XML. Es un singleton que se encarga de acceder a los ficheros de propiedades bajo demanda.
Normalmente los ficheros properties de cada aplicación se encuentran en /config/aplic/ y tienen la siguiente estructura:
<properties> ---- Aqui van las propiedades en XML ---- </properties>

Las propiedades se cargan dinámicamente, de forma que las propiedades de una aplicacion no se cargan hasta que no se acceden por primera vez.
Una vez cargadas, permanencen en memoria.

Para consultar las propiedades, se utiliza el metodo getProperty al que se pasa el codigo de aplicacion y una ruta XPath del nodo a obtener relativa a la aplicación.
Tambien se ofrecen otros metodos auxiliares como getInt, getList, etc. Ejemplo: XMLProperties.getProperty("p03","database/driver");

Es importante señalar que antes de utilizar la clase hay que establecer:

Maneja las properties del sistema.
Las propiedades se definen en ficheros xml con cualquier estructura.
Ejemplo:

          
              el valor
              
              
                value1
                value2
                
          
 

Las propiedades se consultan utilizando sentencias XPath.
Por ejemplo:

                props.of("componente").at("misProps/miProp").asString();
                props.of("componente").at("miOtraProp/@value").asString();
 
Las propiedades se cargan y cachean por CODIGO DE APLICACION y COMPONENTE.

CARGA DE PROPIEDADES (ver clase XMLPropertiesForComponentContainer)
---------------------------------------------------------------------------

Esta clase en sí mismo se puede utilizar para acceder a las propiedades de una aplicación, aunque NO se suele utilizar así:

                // Crear el propertiesManager... la instancia debería ser UNICA ya que contiene la cache
                XMLPropertiesCacheFactory cacheFactory = new XMLPropertiesCacheFactoryImpl();
                ResourcesLoaderFactory resourcesLoaderFactory = new ResourcesLoaderFactoryImpl();
                XMLPropertiesManager props = new XMLPropertiesManager(cacheFactory,resourcesLoaderFactory,
                                                                                                                          appCode,10);
                // Crear un wrapper de una propiedad para acceder a ella
                XMLPropertyWrapper prop = new XMLPropertyWrapper(props.of(component),xPath);
                prop.asString();
                // o bien, acceder a la propiedad directamente...
                props.of(component).getString(xPath);
 

Lo lógico sería CACHEAR los objetos XMLPropertiesManager por aplicación, y para esto se utiliza la clase XMLProperties, ver el JavaDoc de esta clase para ver su uso.

See Also:
XMLPropertiesForComponentContainer

Nested Class Summary
 class XMLPropertiesManager.ComponentProperties
          Encapsula el acceso a las propiedades de un componente.
 
Field Summary
private  java.lang.String _appCode
          Código de aplicación
(package private)  XMLPropertiesCache _cache
          Objeto que maneja el acceso a las properties
private  boolean _useCache
          Utilizar cache o no
 
Constructor Summary
XMLPropertiesManager(XMLPropertiesCacheFactory cacheFactory, ResourcesLoaderFactory resourcesLoaderFactory, java.lang.String appCode, int componentsNumberEstimation)
          Constructor en base al tamaño de la caché y al modo de depuración.
 
Method Summary
 java.lang.String cacheStatsDebugInfo()
          Devuelve la información de uso de la cache en formato imprimible.
 XMLPropertiesManager.ComponentProperties of(java.lang.String component)
          Encapsula los métodos que devuelven las propiedades.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_cache

XMLPropertiesCache _cache
Objeto que maneja el acceso a las properties


_appCode

private java.lang.String _appCode
Código de aplicación


_useCache

private boolean _useCache
Utilizar cache o no

Constructor Detail

XMLPropertiesManager

public XMLPropertiesManager(XMLPropertiesCacheFactory cacheFactory,
                            ResourcesLoaderFactory resourcesLoaderFactory,
                            java.lang.String appCode,
                            int componentsNumberEstimation)
Constructor en base al tamaño de la caché y al modo de depuración.

Parameters:
cacheFactory - Factoría de la caché de propiedades.
resourcesLoaderFactory - Factoría de los ResourcesLoaders responsables de cargar los xmls de propiedades.
NOTA: el ResourcesLoader concreto a utilizar se indica en el fichero de configuración del componente que SIEMPRE se carga desde el classPath (ver XMLPropertiesForComponentContainer).
appCode - Código de aplicación.
componentsNumberEstimation - Tamaño de la cache de apps/components.
Method Detail

cacheStatsDebugInfo

public java.lang.String cacheStatsDebugInfo()
Devuelve la información de uso de la cache en formato imprimible.

Parameters:
stats - La informacion de uso de la cache.
Returns:
Un String con información de depuración.

of

public XMLPropertiesManager.ComponentProperties of(java.lang.String component)
Encapsula los métodos que devuelven las propiedades.

Parameters:
component - Componente de la aplicacion.
Returns:
Un componente que encapsula el acceso a las propiedades.