miércoles, 27 de julio de 2011

Trabajar con varrays en Oracle

Aunque a nivel personal no los he utilizado nunca, en algunas ocasiones me he encontrado en proyectos de mantenimiento con modelos de datos que definían sus propios tipos en Oracle. Lo más habitual es la definición de una colección de elementos utilizando VARRAY.

Cada vez que uno de estos casos se presenta ante mí, me asalta la misma duda. ¿Cómo actualizo o inserto datos en una columna de un tipo definido sobre un VARRAY? La realidad es que no tiene complejidad ninguna. En este caso el valor se crea de forma similar a como se haría con un objeto, poniendo el nombre del tipo y, entre paréntesis, el contenido del array, con los valores separados por comas.

Por ejemplo, si hemos definido este tipo:

CREATE OR REPLACE TYPE MY_TYPE AS VARRAY(100)  OF VARCHAR2(32);

Insertaríamos en esa columna así:

INSERT INTO NOMBRE_TABLE (CAMPO_ARRAY) VALUES (MY_TYPE('1', '2', '3'));

La forma de actualizar sería análoga.

miércoles, 20 de julio de 2011

Tablas en JavaFX 2

En el nuevo JavaFX, existe un componente "oculto" muy interesante. Y digo oculto porque no se menciona su existencia en los tutoriales de la página principal del proyecto, aunque lógicamente sí que podemos encontrar toda la información necesaria en el api. Se trata del TableView.

Como era de esperar, lo que podemos hacer con este componente es mostrar tablas en nuestra aplicación. Su funcionamiento es muy similar al de ListView, pero tiene la ventaja de que permite trabajar con columnas. El caso de uso típico será aquél en que queramos mostrar una tabla donde cada fila contenga, separados en columnas, los atributos de un objeto. 

Si partimos del ejemplo que ya vimos en uso de CellFactory en JavaFX 2, en ese caso definimos un CellFactory para mostrar en cada fila del ListView el nombre y apellidos de una Persona. Como alternativa, con TableView podríamos mostrar cada campo en una columna distinta.


Al igual que ya hicimos trabajando con ListView, podemos definir un CellFactory, en este caso a nivel de columna, en el que indiquemos cómo deben ser presentadas. Por ejemplo, podemos definir la columna para el nombre como una columna de Persona, en lugar de como una de String.


Y ahora, podemos definir el CellFactory para mostrar en la columna el nombre de la persona, con un color dependiente de su edad.


He aquí el resultado.