ADF tips: Mayúsculas, Minúsculas o Iniciales

En este tip explicaremos cómo forzar la introducción de mayúsculas o minúsculas en un determinado campo de texto utilizando ADF. En muchas ocasiones nos encontramos con la restricción de que determinado campo alfanumérico debe tener un formato específico, como puede ser sólo letras minúsculas o mayúsculas, o sólo la primera letra de cada palabra en mayúsculas.

Para cumplir este requisito Oracle ADF nos da una opción  para hacer el cambio visual de forma muy sencilla; añadiendo al componente inputText la propiedad contentStyle e indicando la opción deseada.

adf_tips_upper01

Si queremos que el cambio se aplique, además, a la hora de almacenar la información en base de datos tenemos varias opciones….

1) Usar JavaScript que haga la conversión del texto introducido por el usuario. Una opción poco elegante y que puede ocasionar problemas si este mismo campo se modifica desde varias partes de la aplicación.

adf_tips_upper02

2) Generar la clase java con acceso a los atributos de la entidad deseada y utilizar código para adoptar el estilo deseado. Esta opción es más segura que la anterior, pero aún así nos llevará a duplicar código y generar muchas clases que tal vez no necesitemos si queremos aplicar esta solución en demasiados campos de la aplicación.

adf_tips_upper03

3) Utilizar la opción declarativa que nos ofrece el framework: definir propiedades personalizadas a nivel de atributo dentro de cada entidad y utilizar esta propiedad como marca para saber el estilo de texto de cada campo. Esta implementación es la más elegante dado que utilizamos las herramientas de ADF y con muy pocas líneas de código podemos aplicar esta solución en tantos atributos como queramos.

adf_tips_upper03

Una vez definida la propiedad debemos sobrescribir el método setAttributeInternal en una clase que definamos como Entidad Base de nuestra aplicación (con ello conseguiremos que todas las entidades tengan este código implementado). En este método accederemos a la propiedad definida anteriormente y en función del valor daremos un estilo u otro al texto.

adf_tips_upper04

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Override
protected void setAttributeInternal(int i, Object object) {
    AttributeDef attrDef = getEntityDef().getAttributeDef(i);
    if (object != null && attrDef != null &&
        attrDef.getJavaType().getName().equals("java.lang.String")) {
        String newValue = (String)object;
        String UPPER_STYLE = getEntityDef().getAttributeDef(i).getProperty("CONTENT_STYLE").toString();
        if (UPPER_STYLE != null && !UPPER_STYLE.equals("")) {
            if (UPPER_STYLE.equals("UPPERCASE")) {
                object = newValue.toUpperCase(Locale.US);
            } else if (UPPER_STYLE.equals("LOWERCASE")) {
                object = newValue.toLowerCase(Locale.US);
            } else if (UPPER_STYLE.equals("CAPITALIZE")) {
                object = WordUtils.capitalize(newValue);
            }
        }
    }
    super.setAttributeInternal(i, object);
}
Twitter
LinkedIn
Evolución, innovación y transformación
37 Service Expertise avalados por Oracle 
Our value proposition
100% Oracle posts
Follow our day-to-day activities