.. include-document:: org.gvsig.fmap.geom/reference-links
:rest:
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.
.. code-block:: java
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.