2.0.0

Introducción

La nueva librería de acceso a datos soporta el concepto de Transformación, que no es más que un algoritmo que a partir de un fenómeno de un tipo produce otro fenómeno de otro tipo distino, sin modificar el original.

La idea es que una transformación es una función que sirve para cambiar la forma en la que se muestra un origen de datos. En la figura se puede observar una tabla en la izquierda con 3 columnas que tras aplicarle una transformación, se ha convertido en otra tabla con 4 columnas.

TEXTO

Se puede decir que el concepto de transformación es algo similar al de crear una vista en una base de datos. Realmente se ha cambiado la forma en la que se ven los datos de la tabla inicial, pero los datos originales no se modifican de modo que siempre se puede volver a cargar la tabla incial.

Un ejemplo concreto de transformación es el tema de eventos, que no es más que una transformación que consiste en crear una columna que contenga geometrías de tipo punto a partir de dos columnas que contengan los valores de la X y de la Y. La siguiente figura muestra cómo se ha creado esta nueva columna a partir de la tabla original.

TEXTO

Existen dos tipos de transformaciones:

En este documento no se van a tratar las transformaciones a nivel de DAL, sino que se van a tratar las transformaciones a nivel de aplicación. De ahora en adelante cuando se mencione el término transformación, significará transformación a nivel de aplicación.

Todas las transformaciones se deben registrar en gvSIG para que puedan ser aplicadas a un origen de datos. Para poder hacer esto de forma amigable gvSIG proporciona un wizard que permitirá seleccionar la transformación a aplicar y mostrará los paneles correspondientes para que un usuario cualquiera pueda configurar la transformación y aplicarla.

Acceso al API de transformaciones

Existen una seria de clases e interfaces independientes que deben ser utilizadas para gestionar las transformaciones en gvSIG. Estas clases son:

La idea es poder tener acceso al DataTransformManager desde cualquier parte de la aplicación. Para ello habría que ejecutar el siguiente código:

DataTransformManager dataTransformManager = DataTransformLocator.getDataTransformManager();

En los siguientes apartados de hará una explicación más detallada de los métodos que tiene el DataTransformManager.

gvSIG proporcionará una implementación para la DataTransformLibrary que será inicailizada en el arranque de la aplicación para registrar una implementación por defecto de un DataTransformManager. En la mayoría de los casos las implementaciones por defecto serán suficientes y lo único para lo que se tendría que utilizar el manager es para incluir nuevas transformaciones.


El wizard de las transformaciones

Apertura del wizard

El wizard para aplicar transformaciones se podrá instanciar desde cualquier punto de la aplicación invocando el método createWizard del DataTransformManager del siguiente modo:

DataTransformWizard dataTransformWizard = DataTransformLocator.getDataTransformManager().createWizard();

Este código devolverá el wizard por defecto que ha sido creado y registrado en gvSIG para poder aplicar transformaciones. Más adelante se explica cómo crear un nuevo wizard y reemplazar al que ya existe en gvSIG.

El wizard por defecto está basado en el wizard que ya existe en Andami. Todas las capturas de pantalla que se hacen a continuación se han hecho sobre ese wizard por lo que si se modificase, el aspecto que presentaría sería distinto.

La interfaz DataTransformWizard tiene un método getWindow que devolverá una IWindow que se puede visualizar en gvSIG. Por lo tanto desde cualquier punto de la aplicación se podrá abrir el wizard de las transformaciones con tan sólo ejecutar el código:

DataTransformWizard dataTransformWizard = DataTransformLocator.getDataTransformManager().createWizard();
PluginServices.getMDIManager().addWindow(dataTransformWizard.getWindow());
Ejemplo de wizard

Este es un manual para el desarrollador, pero para poder entender algunos de los métodos que presentan las interfaces de las transformaciones es necesario tener una visión clara del problema al que pretenden dar solución y por ello, se han incluído unas cuantas capturas de pantalla del wizard por defecto que existe en gvSIG.

En la primera ventana el wizard mostrará todas las transformaciones que hayan sido registradas. Al hablar de "transformaciones" nos estamos refiriendo a todas las transformaciones que se han registrado en gvSIG junto con su interfaz de usuario o lo que es lo mismo, todas las clases que implementen el interfaz DataTransformGui y que se han resgistrado mediante el DataTransformManager. Más adelante se comenta cómo crear y registrar una transformación y su interfaz de usuario.

TEXTO

El usuario deberá elegir la transformación que desee aplicar y el resto del wizard se comportará en función de la transformación elegida en esta primera ventana.

Al pulsar en el botón siguiente se abrirá una nueva ventana en la que se tendrá que seleccionar el DataStore sobre el que se va a aplicar la transformación. Esta ventana también será común a todas las transformaciones ya que una transformación se tiene que aplicar sobre al menos un origen de datos.

TEXTO

Tras pulsar en siguiente se abrirán los paneles asociados a una transformación concreta (más adelante se comenta cómo se asocia un panel a una transformación). En función de la transformación que se elija en la primera ventana del wizard estos panales serán de una forma u otra ya que los parámetros asociados a una transformación no son los mismos que los parámetros de otra transformación.

Una vez que hayan pasado todas las ventanas particulares de la transformación elegida, aparecerá una ventana en la que se podrá seleccionar lo que se desea hacer con la transformación (cancelar el proceso, aplicar sobre una capa, cargar en una vista si se trata de una tabla...). La siguiente figura muestra un ejemplo de la última ventana.

TEXTO

En el ejemplo hemos aplicado una transformación sobre una tabla, por lo que podremos elegir la vista sobre la que queremos que se cargue como una capa. Para que esto sea así, la transformación resultante tiene que tener un atributo de tipo geometría.

Registro de un nuevo wizard

Si se quiere modificar el wizard por defecto, se tiene que crear una nueva clase que implemente el interfaz DataTransformWizard y se tiene que registrar en el DataTransformManager mediante el método registerDataTransformWizard que tendrá un único parámetro con una clase que implemente el nuevo wizard. En el ejemplo se asume que existe una clase MyDataTransformWizard que implementa el interfaz:

DataTransformLocator.getDataTransformManager().registerDataTransformWizard(MyDataTransformWizard.class);

Un wizard puede verse como un conjunto de formularios que se utilizan para realizar una acción. El wizard de transformaciones debe proporcionar un interfaz de usuario para poder aplicar una transformación. Este interfaz se proporciona mediante el método DataTransformWizard.getWindow()_, que devuelve un objeto de tipo IWindow que gvSIG es capaz de visualizar.

Pero además de un interfaz de usuario, el wizard es un objeto que puede ser utilizado por todos los panales lo forman para poder recuperar la información que se va seleccionando. Por ejemplo, si en la primera ventana del wizard se elige un DataStore, éste debería poder ser utilizado en las siguientes ventanas para por ejemplo, añadir un combo con los nombres de los campos del origen de datos. Es por ello que tiene los siguientes métodos:


Las transformaciones

Registro de una nueva transformación

El registro de una nueva transformación se tiene que hacer utilizando los métodos del DataTransformManager. En concreto, hay que utilizar el método registerDataTransform cuyos parámetros son el nombre con el que queremos registrar la transformación y la una clase que deberá implementar el interface DataTransformGui (en caso contrario se lanzará una excepción). El siguiente código muestra un ejemplo de cómo registrar una transformación.

DataTransformManager dataTransformManager = DataTransformLocator.getDataTransformManager();
dataTransformManager.registerDataTransform("My transform", MyTransform.class);
Creación de una transformación

El interface DataTransformGui es realmente el que contiene los métodos que gvSIG utilizará para poder crear el interface de usuario y poder aplicar la transformación sobre un origen de datos. Estos métodos son:

La siguiente figura muestra un ejemplo de la ventana para seleccionar las transformaciones del wizard. En ella se muestra la correspondencia entre los métodos getName y getDescription y la interfaz de usuario.

TEXTO
Los paneles asociados a la transformación

Cada transformación registrada aporta el conjunto de paneles que se utilizan para pode configurar la transformación. Estos paneles implementan el interfaz DataTransformWizardPanel, que tiene los siguientes métodos:

Project Site (documentación generada con maven)

Documentación generada con maven: incluye JavaDoc, informes de test unitarios, validaciones de código, etc...

http://gvsig-desktop.forge.osor.eu/downloads/pub/projects/gvSIG-desktop/docs/reference/org.gvsig.app.daltransform/2.0.0/