com.ejie.r01f.xmlproperties
Class XMLLiterals
java.lang.Object
com.ejie.r01f.xmlproperties.XMLLiterals
- public final class XMLLiterals
- extends java.lang.Object
Maneja los textos del sistema
Los textos se definen en ficheros xml con cualquier estructura, pero
con la restriccion de que han de empezar por el tag 'localeText' y de tener
en al final de cada estructura los valores indexados por idioma
Ejemplo:
[Cualquier estructura de XML]
Texto en castellano
Texto en euskera
Los textos se consultan utilizando sentencias XPath desde localeText
Lo normal es inicializar un XMLLiterals en base a un idioma y luego utilizarlo:
XMLLiterals esLits = new XMLLiterals(R01FConstants.FRAMEWORK_APPCODE,"es");
esLits.get("miSeccion/miSubSeccion/miElemento); // Consultara el elemento es
Lost textos se cargan y cachean por CODIGO DE APLICACION.
CARGA DE PROPIEDADES (ver clase XMLPropertiesManager.java)
----------------------------------------------------------
- See Also:
PATH A LOS FICHEROS DE LITERALES
----------------------------------
Además del loader a utilizar, se puede especificar un PATRON para el path de los ficheros de
textos. Este patrón puede contener la variable "[entityCode]" que se sustituirá dinámicamente
por el código de aplicación.
System.setProperty("EJIE_LITERALS_PATTERN","/[entityCode]/[entityCode].text.xml")
o estableciendo la propiedad -DEJIE_LITERALS_PATTERN=/[entityCode]/[entityCode].text.xml
en el arranque de la jvm
Ejemplo: Si el patrón es /[entityCode]/[entityCode].text.xml y se están cargando las propiedades
de la aplicación k01, estas se buscarán en /k01/k01.text.xml, bien accediendo
directamente al fichero en /k01/k01.text.xml (si el loader es via ficheros) o bien
accediendo al fichero /k01/k01.text.xml en cualquier ruta en el classPath
(si el loader es via classPath)
IMPORTANTE!!
Si no se indica el patrón a los ficheros de literales, se utilizan las siguientes
reglas para obtenerlos:
- Loader en base a ficheros (por defecto)
Windows: d:/eAdmin/aplic/[entityCode]/html/datos/[entityCode].text.xml
Unix: /aplic/html/datos/[entityCode]/[entityCode].text.xml
- Loader en base a ClassPath
Windows / UNIX: /html/datos/[entityCode].text.xml
IMPORTANTE: Obviamente para que funcione, es necesario que /html/datos esté en una
ruta del classPath de la jvm
Independientemente del lodader utilizado, debajo de esta raiz, las propiedades se organizan en carpetas
para cada codigo de aplicacion que contienen los ficheros de propiedades con el nombre codApp.text.xml
Ejemplo: (Windows - fileLoader) d:/eAdmin/aplic/
r01f/html/datos
r01.text.xml
s03a/html/datos
s03a.text.xml
TRUKO: Carga de literales en un WorkSpace de eclipse
----------------------------------------------------
Para que se carguen los literales de una aplicación directamente desde el workSpace de eclipse
hay que hacer dos cosas:
- Especificar que la carga de propiedades es via ficheros estableciendo la variable de entorno:
System.setProperty("EJIE_PROPERTY_LOADER","fileLoader");
o estableciendo la propiedad -DEJIE_PROPERTY_LOADER=fileLoader en el arranque de la máquina virtual
NOTA: Esto NO es estrictamente necesario en WINDOWS ya que si no se establece se toma
el fileLoader por defecto
- Especificar el patron para encontrar los ficheros de propiedades en el workSpace
System.setProperty("EJIE_PROPERTIES_PATTERN","d:/tools/workSpaces/eAdmin/[entityCode]Classes/[entityCode]/[entityCode].properties.xml")
o estableciendo la propiedad -DEJIE_PROPERTIES_PATTERN=d:/tools/workSpaces/eAdmin/[entityCode]Classes/[entityCode]/[entityCode].properties.xml
en el arranque de la maquina virtual
De esta forma se buscará el fichero de propiedades de la aplicación k01 en:
d:/tools/workSpaces/eAdmin/k01Classes/k01/k01.properties.xml sin necesidad de
tener que exportarlo fuera del workSpace
Constructor Summary |
XMLLiterals(java.lang.String entityCode,
java.lang.String lang)
Constructor en base al codigo de entidad y el lenguaje |
Method Summary |
java.lang.String |
customize(java.lang.String propXPath,
java.lang.String[] variables)
El mismo método que customize pero para ser utilizado en contextos no estáticos,
cuando se predefine la entidad y el lenguage |
static java.lang.String |
customize(java.lang.String entityCode,
java.lang.String propXPath,
java.lang.String[] variables)
Permite obtener una propiedad y "personalizarla" sustituyendo las "variables"
(partes con [? |
java.lang.String |
get(java.lang.String propXPath)
El mismo método que get pero para ser utilizado en contextos no estáticos,
cuando se predefine la entidad y el lenguage |
static java.lang.String |
get(java.lang.String entityCode,
java.lang.String propXPath)
Devuelve una propiedad existente, para ello utiliza el camino XPath
de entrada para buscar la propiedad en el arbol DOM |
static java.lang.String |
getDebugInfo()
Obtiene información de depuracion |
java.util.List |
getList(java.lang.String propXPath)
El mismo método que getList pero para ser utilizado en contextos no estáticos,
cuando se predefine la entidad y el lenguage |
static java.util.List |
getList(java.lang.String entityCode,
java.lang.String propXPath)
|
static void |
main(java.lang.String[] argv)
Metodo main (para probar el temilla...)
|
static void |
reload()
Recarga todas las propiedades para ello, simplemente hay que hacer null
el documento y el mapa de punteros a las entidades |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
XMLLiterals
public XMLLiterals(java.lang.String entityCode,
java.lang.String lang)
- Constructor en base al codigo de entidad y el lenguaje
- Parameters:
entityCode
- Codigo de entidad (codigo de aplicacion)lang
- Lenguaje
get
public java.lang.String get(java.lang.String propXPath)
- El mismo método que get pero para ser utilizado en contextos no estáticos,
cuando se predefine la entidad y el lenguage
getList
public static java.util.List getList(java.lang.String entityCode,
java.lang.String propXPath)
getList
public java.util.List getList(java.lang.String propXPath)
- El mismo método que getList pero para ser utilizado en contextos no estáticos,
cuando se predefine la entidad y el lenguage
customize
public java.lang.String customize(java.lang.String propXPath,
java.lang.String[] variables)
- El mismo método que customize pero para ser utilizado en contextos no estáticos,
cuando se predefine la entidad y el lenguage
get
public static java.lang.String get(java.lang.String entityCode,
java.lang.String propXPath)
- Devuelve una propiedad existente, para ello utiliza el camino XPath
de entrada para buscar la propiedad en el arbol DOM
- Returns:
- (String)El texto del nodo si lo encuentra o null si no lo encuentra
customize
public static java.lang.String customize(java.lang.String entityCode,
java.lang.String propXPath,
java.lang.String[] variables)
- Permite obtener una propiedad y "personalizarla" sustituyendo las "variables"
(partes con [?x], con x siendo un entero, empezando en 0) por el contenido del
array de variables
Por ejemplo, un literal puede ser El perro [?0] se comio al gato [?1]
Entonces se podria llamar a customize de la siguiente forma;
XMLLiterals.customize("r01","literal/cast",new String[] {"Guau","Miau"})
reload
public static void reload()
- Recarga todas las propiedades para ello, simplemente hay que hacer null
el documento y el mapa de punteros a las entidades
getDebugInfo
public static java.lang.String getDebugInfo()
- Obtiene información de depuracion
main
public static void main(java.lang.String[] argv)
- Metodo main (para probar el temilla...)
Probar con lo siguiente en dos ficheros properties.xml
valor_p03_1_cast
valor_p03_2_eusk
lista_p03_1_cast
lista_p03_1_eusk
lista_p03_2_cast
lista_p03_2_eusk
lista_p03_3_cast
lista_p03_3_eusk