JDeveloper 11g trabajando con colecciones de datos como DataControl


Es común pensar que JDeveloper es una herramienta que únicamente puede trabajar con base de datos Oracle y con ADF BC, pues ésto es falso.

JDeveloper es una herramienta abierta que permite trabajar con otras bases de datos y con otros frameworks para la parte del modelo (dentro de una aplicación que aplique el patrón MVC).

He desarrollado un pequeño ejemplo (y generaré otros más) para demostrar como se puede trabajar con colecciones de datos (en mi caso ArrayList) para crear una aplicación que muestre los datos de dicha colección en una aplicación Web que utiliza ADF Faces.

Lo primero que realicé fue crear una clase POJO denominada usuario que tiene la siguiente forma:

public class Usuario {

private int usuarioId;
private String email;
private String login;
private String nombres;
public Usuario() {

}

public Usuario(int usuarioId1, String email1, String login1,

String nombres1) {

this.usuarioId = usuarioId1;
this.email = email1;
this.login = login1;
this.nombres = nombres1;

}

Luego he creado una segunda clase que contiene el ArrayList, una colección de usuarios, su forma es la siguiente:

public class ProveedorUsuario {

private ArrayList usuarios = new ArrayList();

public ProveedorUsuario() {
usuarios.add(new Usuario(1, “jorgaf@gmail.com”, “jorgaf”, “Jorge Lopez”));
usuarios.add(new Usuario(2, “j@gmail.com”, “j”, “J”));
usuarios.add(new Usuario(3, “o@gmail.com”, “o”, “O”));
usuarios.add(new Usuario(4, “r@gmail.com”, “r”, “R”));

}

public ArrayList getUsuarios(){

return usuarios;

}

}

Luego creo el DataControl sobre la clase ProveedorUsuario, dando clic derecho sobre la clase y seleccionando “Create Data Control” y listo. Dentro de la pestaña del Data Control puedo seleccionar la opción usuarios y arrastrarlo dentro de una página Web (archivo .jspx creado previamente) y el resultado es el siguiente:

Resultado final

Como se pueden dar cuenta las cabeceras han sido modificadas para que muestre un texto personalizado, que se encuentra en un archivo de propiedades. Para hacer ésto debemos seleccionar (dando doble clic en el archivo) el archivo Usuario.xml que contiene la descripción de la clase Usuario, luego seleccionar cada uno de los atributos y agregar una propiedad dando clic sobre el icono del lápiz que se encuentra en la esquina superior derecha, seleccionar la opción Control Hints y agregar texto en el campo Label Text.

Espero continuar con una serie de éstos ejemplos, hasta llegar a construir una aplicación basada en JPA.

Powered by ScribeFire.

10 comentarios en “JDeveloper 11g trabajando con colecciones de datos como DataControl

  1. Hola amarmol,

    Espero en éstos días ponerme a trabajar en el proyecto de JPA y ADF. Qué versión de JDeveloper utilizas?
    Al parecer existe o existirá un JDeveloper 11g TP3 según leí un post de Frank Ninphius, esperemos que la versión final salga pronto.

  2. oscar dijo:

    Hola,

    Muy interesante el articulo de Jdeveloper, recien me inicio en esta herramienta es mi primer dia y la encuentra bien productiva.

    Espero aprender dia a dia.

    Sinceros saludos

    Oscar
    Lima peru

  3. Jairo Cortés dijo:

    Hola Jorge:

    Artículo bastante interesante para los usuarios de Jdeveloper. Creo que gracias a su conocimiento usted me puede ayudar con los siguiente : tengo una clase que genera números aleatorios y deseo que cada vez que la clase genere un nuevo número, me lo muestre en un contro ADF (un outputtext por ejemplo). Donde podría encontrar algo relacionado?

    Gracias,

    Jairo
    Medellín – Colombia

  4. Hola Jairo,

    Generas el número aleatorio a través de algún evento? No sé, dando clic en un botón o algo así?

    Si es así deberías hacer un binding a una propiedad de la clase que genera el número aleatorio. Si no te recomiendo que leas algo sobre Active Data Service, revisa éste link aquí mismo en Café Lojano: https://cafelojano.wordpress.com/2008/04/09/un-cliente-para-google-talk-programado-en-jdeveloper/

    Saludos desde Ecuador

  5. Jairo Cortés dijo:

    Gracias Jorge por su respuesta.

    La verdad es que este es un mecanismo de simulación para un proyecto de telefonía: lo que pretendo es capturar el ANI (número telefónico), cuando tenga instalado el hardware correspondiente; en otro sitio, donde está instalado el HW, probé las clases de JDeveloper para hacer esto y funcionan, pero sólo puedo mostrar el número con un System.out.println(“el número llamando es: ” + ani) por ejemplo. Mi propósito es llevar ese número a un control ADF y realizar una serie de operaciones sobre la BD. Mientras configuro el HW, debo hacerlo con números aleatorios que se generan cada 10 segundos. De todas maneras revisaré el link y gracias por la recomendación.

    Jairo

    Medellín – Colombia

  6. Jairo Cortés dijo:

    Hola Jorge:

    Esta forma de manejo de collections es bien interesante. Sin embargo, por más que intento hacer exactamente lo mismo en mi propio proyecto en Jdeveloper no funciona. Es posible que en este buen ejemplo falte algo?

    Encontré algo parecido en la siguiente dirección,

    http://technology.amis.nl/blog/3802/adf-11g-model-driven-display-properties-in-pojo-based-data-controls

    pero me parece que su ejemplo es mucho más simple. Será posible que me ayude con código a través de email?

    Gracias,

    Jairo Cortés
    Medellín-Colombia

  7. newJdeveloper dijo:

    Hola, estoy programando en Jdeveloper 11 y no he podido encontrar un buen ejemplo para hacer un logueo de usuario, mi base de datos es oracle 10g. La verdad siempre he trabajado en .NET y ahora tengo este proyecto.

    Gracias

  8. alejandro dijo:

    como puedo trabajar un maestro detalle a partir de lo que comentas; de crear una clase con
    una lista y apartir de ahi crear un data control

  9. Jesus David Cortes dijo:

    Necesito consumir un datacontrol desde una clase Java, puedes darme un codigo para ello.

    no es una aplicacion web, por lo que no hay context, ni binding, solamente el modelo que genero jdev 11g, y el data control q tambien genero el jdev.

    necesito llamarlo desde la clase Java,

    Algo asi como

    DataContol c = new DataControl()

    String result = c.metodoDelDataCotron(“nombreA”);

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s