ADF tips: Etiquetas dinámicas desde base de datos para los atributos de una entidad

ADF tips

En este post de los foros de Oracle preguntaban cómo se podía  asignar valores dinámicos a las etiquetas de los atributos de una entidad. Utilizando parte de este otro post de Amis voy a contaros como conseguirlo.

Por defecto las etiquetas en los atributos de las entidades se asignan unos valores, por ejemplo, en la tabla Departments del schema HR de Oracle:

000

 

Para empezar, tenemos que crear en la base de datos la estructura necesaria para almacenar y obtener las diferentes etiquetas.

Primero creamos la tabla donde almacenaremos las etiquetas:

001

 

También añadimos los valores de las etiquetas para los diferentes idiomas.

0021

 

Para obtener las etiquetas asociadas al locale actual de la aplicación vamos a crear un paquete PL/SQL.

002

 

Ya tenemos terminadas las piezas de la base de datos, ahora tenemos que crear un método en el Application Module que efectúe la llamada al paquete que hemos creado.

003

 

El siguiente paso es crear los Resource Bundle necesarios para la aplicación. Utilizaremos la clase DBResourceBundle como base, que es la que utilizará el método del Application Module para obtener las etiquetas de la base de datos.

En el método getResourceBundle hay que configurar las variables amDef y config con los valores correspondientes a nuestro Application Module.

004

 

Después tenemos que crear las clases que van a extender la clase DBResourceBundle para cada uno de los idiomas de nuestra aplicación. En este caso vamos a tener Inglés, Francés y Español.

005

 

En cada una de las clases vamos a sobrescribir el método getLocaleCode(), donde devolveremos el código del idioma correspondiente.

006

 

Ahora que ya tenemos creadas todas las clases, vamos a registrar el Resource Bundle en el modelo. Para ello vamos a las propiedades del proyecto y seleccionamos la opción ‘Resource Bundle’ en el menú de la izquierda.

Tenemos que escribir la ruta completa de la clase ModelBundle sin la extensión y seleccionar el tipo de Resource Bundle, en este caso ‘List Resource Bundle’.

Si tenemos más de un Resource Bundle también podremos añadirlo pulsando en la pestaña ‘Bundle Search’.

007

 

Para terminar hay que modificar las etiquetas de cada uno de los atributos.

Crearemos una etiqueta de un campo para que genere en el fichero xml de la entidad las propiedades que vamos a utilizar.

008

 

Si observamos el código fuente de la entidad podemos observar que nos ha añadido dos cosas nuevas.

La primera es el ResourceBundle que vamos a utilizar.

009

 

Y la segunda es el identificador de la etiqueta en el ResourceBundle.

Para cada atributo que queramos modificar su etiqueta deberemos añadir el tag properties y modificar la propiedad ResId con la clave registrada en base de datos.

0010

 

Por último para probar lo que hemos hecho vamos a utilizar el ADF Model Tester, donde nos es posible cambiar el idioma si previamente lo activamos en las propiedades del JDeveloper.

0011

 

Al ejecutar el Application Module podemos observar que por defecto nos aparecen las etiquetas que hemos insertado en la base de datos en Inglés.

0012

 

Para cambiar de idioma en el menú tenemos la opción locale.

011

 

Si cambiamos de idioma a Español y cerramos la vista, al volverla a abrir podemos observar que las etiquetas nos aparecen en Español.

012

Twitter
LinkedIn
Evolución, innovación y transformación
37 Service Expertise avalados por Oracle 
Nuestra propuesta de valor
Posts 100% Oracle
Sigue nuestro día a día