Posts

Showing posts with the label ADF BC

ADF 11g: Importación y exportación de ficheros CSV

Image
Una de las funcionalidades requeridas suele ser la importación/exportación de información de base de datos en un archivo CSV. Link to english version. Link to download sample application. (Broken Link) CSV Sample file En esta solución se hace uso de un código sencillo y genérico usando cualquier iterador ( DCIteratorBinding) configurado en la vista para extraer/importar información independientemente de el número y nombre de las columnas de la tabla de base de datos sobre la que itera. El ejemplo contiene la siguiente configuración: Esta preparado y habilitada la carga de ficheros. Esta configuración  se consigue configurando Trinidad en web.xml y habilitando la subida de ficheros en el tag af:form. Configuración: web.xml Habilitar la subida de ficheros. El Task Flow contiene un Manage Bean (CSVProcessor) encargado de la gestión de los ficheros CSV y de los mecanismos de importación/exportación: Posee una variable inyectada y configurable para establecer el...

ADF 11g: af:query + af:table con datos precargados al iniciar

Image
Al hacer Drag & Drop de una  Named Criteria de una View ( del Data Control de un  Application Module), se puede crear un formulario de búsqueda con una tabla asociada para el manejo de los datos de nuestra base de datos. Drag & Drop para formulario de búsqueda + tabla Cuando se ejecuta la vista se puede observar que por defecto la tabla está vacía puesto que no se ha realizado ninguna búsqueda. Tabla vacía nada más cargar la vista Esto se debe a que es necesario que se realice una búsqueda (aunque sea con los campos vacíos) para que la tabla se rellene. Sin embargo, modificando el binding asociado a la View Criteria sobre la que se basa el af:query se puede lograr precargar una búsqueda para que cuando se cargue la página salgan datos inicialmente. Para conseguirlo únicamente es necesario modificar el atributo InitialQueryOverriden poniendo su valor a true . Modificación del binding a la View Criteria para precargar la búsqueda Con esta configurac...

ADF 11g: JDBC Connection vs Data Source

Image
Una de las dudas / problemas que surgen a la hora de desplegar aplicaciones ADF viene ligada con las conexiones a base de datos que se configuran en el Model de la aplicación. En esta entrada voy a intentar aclarar cuál es el modo correcto para configurar las conexiones a BBDD de una aplicación ADF. Cuando se comienza el desarrollo de una aplicación ADF con capa de negocio en base de datos. Lo primero que se hace es crear una conexión de Base de Datos desde las Application Resources. Conexión a BBDD configurada El siguiente paso es la creación de los ADF Business Components a partir de esa conexión a BBDD. ADF BC generados a partir de la conexión Como podrá observarse, también se ha generado un fichero llamado Model.jpx . Este fichero tiene, entre otras cosas, una conexión a BBDD. La conexión configurada en Model.jpx es la conexión de BBDD que utiliza la aplicación por defecto para generar los ADF Business Components . No es la utilizada por la aplicación en R...

ADF 11g: No se puede encontrar o invalida su entidad propietaria

Image
Un error clásico cuando se hace un Create  de una fila para una entidad es: Enlace de descarga del ejemplo " oracle.jbo.InvalidOwnerException: JBO-25030: La entidad de detalle Y con la clave de fila null no se puede encontrar o invalida su entidad propietaria. " Error al realizar una operación  Create  en una tabla  Detalle  sin su  Maestro ¿A que se debe este error? Cuando se tiene un modelo de datos en el que existen entidades "Maestro - Detalle" se hace muy común este problema. El problema reside en la creación de filas en la entidad  Detalle sin que la entidad  Maestra se encuentre en la misma página. Supongamos el siguiente modelo de datos:  Modelo de datos, Tabla Maestro-Detalle. Dado un idioma, tienes los portales asociados Como se puede comprobar, existe una relación de Foreign Key entre PortalesWeb e Idiomas por el campo ID del idioma. Esto lo que supone es que: Tabla Idioma es la maestra. Tabla Portales...

ADF BC: Valor procedente de una Secuencia

Image
Hola. Hoy os traigo tres formas distintas de establecer el valor de un atributo de una Entity Object al valor de una secuencia de base de datos. Cambiando el tipo de dato del atributo a DBSequence. Esta solución consiste en cambiar el tipo de dato del atributo de nuestra Entity Object a DBSequence. Al realizar este cambio podemos observar en la parte inferior de la pantalla de propiedades se ha habilitado la posibilidad de configurar el nombre de la secuencia de base de datos que deseamos utilizar para dicho atributo. Atributo de entidad con Type: DBSequence No genera el valor final de la secuencia hasta que se realiza commit . Por ello si se contribuyen tablas asociadas a la del valor autogenerado pueden encontrarse valores negativos temporales hasta que se realice el commit de los datos. Programáticamente en la creación de la fila Esta solución consiste en sobrescribir el método create de una fila y forzar la llamada a la secuencia de base de datos para establecer el...