martes, 23 de septiembre de 2014

Crear un Application Module en 11g

Descripción: En este artículo veremos cómo crear un Application Module en Oracle ADF 11g.

Nota: Si estás trabajando en Oracle ADF 10g, puedes leer el artículo .

Para crear un Application Module debemos ir al apartado Model de nuestra aplicación (Model Project),  e indicar con el menú contextual que queremos crear un Application Module.

menú contextual en el Model
menú contextual en el Model




Al hacer esto se abrirá un asistente que nos guiará paso a paso en la creación del application Module.

vista asistente creación application module
vista asistente creación application module



En este primer paso le indicaremos el nombre.
Se recomienda que el fichero tenga como parte del nombre el sufijo AppModule. Esto nos ayudará a distintinguirlo de otros ficheros en el acaso de que queramos modificarlo desde un lugar distinto al JDeveloper.
Además, ayuda a situar rápidamente el nombre que utilicemos en el futuro.

asignar nombre Application Module
asignar nombre Application Module


En el siguiente paso nos consulta sobre el Data Model. Es decir, qué views (y otros elementos, como viewlinks) va a contener.
Al hacer la selección debemos tener en cuenta de que el asistente nos va a poner un número al final del nombre de la view o del viewlink.
En algunos casos es posible quitar los números para que se utilice le nombre del componente sin más, pero en otros casos, en los cuales podamos querer más de una instancia de la view en nuestro Appmodule, no nos quedará más remedio que recurrir a los números (o añadirle algo que distinta uno de otro).
Importante: Es muy típico, confundirse cuando te colocan el número y no te has dado cuenta. Doy fe.

vista asistente incluyendo viewobjects

vista asistente corrección del nombre del viewobject


Selección de Application Modules. Se puede incluir dentro de un Application Module, otros Application Modules.
Eso se escapa un poco de este post, aunque en internet hay algunos ejemplos de usos, y que pueden explicar para qué sirve esta práctica.

inclusion otros application module
inclusión de otros Application Module


Creación de ficheros Java para gestionar operaciones del Application Module.
En ocasiones puede que nos haga falta incluir operaciones en ciertos momentos (comprobación de conexión con la base de datos, que los datos estén correctos antes de insertar, etc).
Para eso ADF nos ofrece la posibilidad de crear un fichero que nos permite incluir estas funcionalidades.

creacion clases java
creación de clases Java

Vista resumen. En esta vista veremos el resultado del proceso de creación de nuestro Application Module, las views incluidas, los ficheros que hemos creado, etc.

vista resumen application module
vsita resumen

Artículos relacionados:
- Crear un Application Module (appmodule) en 10g
- Crear un ViewObject en 11g
- Crear una Entity en 11g

miércoles, 17 de septiembre de 2014

Obtener un valor de la tabla en un bean 11g

Descripción: En este artículo veremos cómo obtener un valor de una fila (row) de una tabla (aftable) a través de un bean. Tomaremos el valor de un atributo (attribute) y lo mostraremos en pantalla.

Nota: Puedes Descargar el ejemplo para que puedas hacer pruebas.

En este ejemplo veremos cómo mostrar un valor de una fila seleccionada en un aftable.

En primer lugar tenemos que haber creado la tabla en nuestra página.
En el ejemplo arrastraremos una view a la página de diseño (design) y se cree la tabla que muestre los datos.

vista diseño aftable
vista diseño aftable



Podemos mirar en la Page Data Binding Definition (lo que en 10g se llamaba Página de definición), cómo es la estructura de datos que se carga en la página y que contiene la tabla.

vista Page data binding definition
vista page Data Binding Definition
vista codigo Page Data Binding Definition
vista código de Page Data Binding Definition


 
Nota: La utilidad de esta información es que si en algún momento no sabemos cómo se llaman los atributos (campos) de una tabla, podamos ir a consultarlo.
Esto a veces es necesario cuando los datos no se muestran correctamente, y pueden tener como origen, en que no se ha incluido los atributos necesarios.



Tomar el valor del Page Data Binding Definition en un bean


El siguiente código devuelve el valor que se encuentra en un binding.

método para recoger un valor del binding

Vamos a explicar el código parte por parte:


        BindingContext bindingContext = BindingContext.getCurrent();
        BindingContainer bindings = bindingContext.getCurrentBindingsEntry();



En esta parte del código estamos haciendo referencia al binding vigente en este momento.
Es decir, de la página actual que se esté mostrando.
Si este código se utiliza en otras páginas será el page data definition correspondiente.


DCIteratorBinding iteratorBinding = (DCIteratorBinding) bindings.get("DepartmentsViewIterator");


Se recoge con esta instrucción el iterator que se encuentra en el binding. Este iteratorBinding, corresponde con el iterator que vimos en la página de definición.
Se recoge este iteratorBinding pues es el que gobierna el aftable, y el que nos va a indicar qué dato se encuentra seleccionado en ese momento.


        if (iteratorBinding != null)
        {
            Row currentRow = iteratorBinding.getCurrentRow();
            if (currentRow != null)
            {
                resultado = (String) currentRow.getAttribute("DepartmentName");   
            }
        }

Primero se pregunta si el itertorBinding es null.
Es importante esto porque puede que el valor que contiene la variable iteratorBinding lo sea.
Algunas de las causas por las que puede ser null:
- Que se haya escrito mal el nombre del iterator.

- Que en el momento en que se llama al iterator, éste no exista.



Es muy típico encontrarse con un nullPointerException por estas causas, por lo que se recomienda hacer siempre esta comprobación.

Una vez comprobado esto con el if , lo que se hace es obtener la fila actual. 
Para ello recurrimos al método getCurrentRow().

Otra vez, volvemos s hacer la consulta de si el valor obtenido con el getCurrentRow() es null o no.
Puede ser que no hubiera ningún elemento seleccionado.


 resultado = (String) currentRow.getAttribute("DepartmentName");   

Con esta estructura, tomamos el valor (attribute), de la fila (row) actual y que hemos guardado en currentRow.

Con esto ya tendremos en el bean el valor, y podemos utilizarlo como queramos.
En este ejemplo, lo que se hizo fue mostrar en pantalla dicho valor, y para ello, se creó un método get, con el fin de poner el valor dentro de un outputText.





Al ejecutar el ejemplo, se nos muestra la tabla con los distintos campos (attributes), y al seleccionar una fila, y luego, pulsar el botón "Actualizar", aparece al lado de éste el nombre del Departamento seleccionado.

Puedes descargar el ejemplo en este enlace: Descargar Ejemplo obtener Valor tabla
La página del ejemplo es vistaDepartamentos.jspx.

Artículos relacionados:
- Crear una tabla de Datos con aftable en 11g

viernes, 12 de septiembre de 2014

Encuesta: ¿Qué versión de Oracle ADF usas?

Se ha puesto una encuesta en la página para que nos puedas indicar qué version o versiones de ADF Utilizas.

Puedes verla en la parte superior derecha.

Nos servirá para conocer un poco el uso de cada versión, y también a la hora de decidir sobre futuros contenidos.

Resultado de la encuesta:
Oracle ADF 10g : 2
Oracle ADF 11g : 11 votos
Oracle ADF 12c : 9 votos


¡Muchas gracias por participar!


jueves, 4 de septiembre de 2014

Crear una tabla de datos con AFTable en 11g

Descripción: En este artículo veremos cómo crear un listado de datos, con el componente aftable a partir de un View Existente, en 11g.

Nota: Existe otro artículo titulado "Añadir un listado" que realiza la misma operación en 10g.

La diferencia a la hora de realizar ambas operaciones en ambas versiones apenas es apreciable. Si lo sabes hacer para una versión, lo sabes hacer en en la otra.

Para poder crear una tabla de datos o un listado de datos con un afTable, de forma gráfica, es necesario haber creado antes la view, así como incluir dicha view en un Application Module.
Importante: Si no se ha incluido el ViewObject en un Application Module, no podremos realizar esto.

Si vamos al Model obsevamos que ya hemos creado la el ViewObject.
En caso de no haberlo creado puede verse el proceso en el artículo Crear un ViewObject en 11g.

vista en el model del viewobject
vista en el Model del viewobject


Para poder crear el listado de datos con un aftable, debemos ir al Data Controls (antiguo Data Control Palette en 10g), y buscar dentro del Appmodule la view que queremos utilizar.

vista viewobject en data controls
vista del viewObject en Data Controls

Seleccionamos el viewObject del cual queremos tener el listado / tabla, y lo arrastramos a la página donde queremos insertarlo (vista de diseño jspx o jsff).

Al soltar el elemento ahí, se nos muestra un menú contextual en el cual se nos pregunta sobre la forma en que queremos utilizar el componente que hemos arrastrado.

menu opciones para utilizar el viewobject
menú contextual con opciones de cómo utilizar el viewobject


Una vez seleccionado para este ejemplo el ADF Table, se nos abre una ventana en la cual:
-  Podemos decidir qué columnas del viewObject queremos mostrar,
-  el orden de dichos campos dentro de un registro o fila
-  si permitiremos seleccionar filas (una o varias a la vez)
- Si se va permitir filtrar los resultados
- Si se va a permitir ordenar por valores de los campos

opciones del aftable a crear
opciones del aftable

Al terminar este paso, podremos guardar lo que hemos hecho y ejecutar la págian para ver el resultado.

vista aftable en funcionamiento
aftable en funcionamiento




Puedes amplicar más información 
- Creating ADF Databounds tables (documentación oficial) 

Artículos relacionados en este blog: 
- Crear un ViewObject en 11g
- Crear una Entity en 11g
- Añadir una tabla (listado) (ADF 10g)
- Mostrar todos los elementos de una tabla (aftable)
- Mostrar un número diferente de elementos de una tabla (aftable)
- Colores alternados para una tabla aftable (banding)