Creación de operaciones
En gvSIG 2.0 se ha definido el concepto de operación, que no es más que una clase que hereda de GeometryOperation, que implementa una determinada operación y que se asocia a un tipo de geometría (GeometryType) determinado.
La clase GeometryOperation forzará a implementar dos métodos: por un lado estará el getOperationInxex que deberá devolver el código interno de la operación. Las operaciones deben de tener un nombre pero en tiempo de ejecución gvSIG establecerá una correspondencia entre los nombres de operaciones y los códigos. Por convenio, todas las operaciones deberán tener una variable pública y estática de tipo int que se incializará llamdo al método getGeometryOperationCode del GeometryManager. Este método fijará el valor del código de operación que podrá ser consultado para ejecutar una operación concreta por una tercera clase.
Además del getOperationInxex, una operación tendrá un método llamado invoke que será el que se invoke cuando se tenga que ejecutar la operación. Los parámetros de entrada son la geometría sobre la cual se aplica la operación y un contexto de operación que se comentará más adelante.
En el siguiente ejemplo se va a crear una operación llamada println que al invocarse imprime por consola la geometría sobre la cual se ejecuta.
public class PrintLn extends GeometryOperation {
public static final String NAME = "println";
public static final int CODE = GeometryLocator.getGeometryManager().getGeometryOperationCode(NAME);
public int getOperationIndex() {
return CODE;
}
public Object invoke(Geometry geom, GeometryOperationContext ctx) throws GeometryOperationException {
System.out.println(geom.toString());
return null;
}
}
Una vez que hemos creado la operación deberemos registrarla en la aplicación. El siguiente apartado muestra un ejemplo de cómo hacerlo.