Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libFMap_geometries / src / org / gvsig / fmap / geom / operation / GeometryOperation.java @ 21047

History | View | Annotate | Download (1.53 KB)

1
package org.gvsig.fmap.geom.operation;
2

    
3
import org.gvsig.fmap.geom.Geometry;
4

    
5
/**
6
 * Every geometry operation that is registered dynamically must extend this class.<br>
7
 *
8
 * The following example shows how to implement and register a custom operation:
9
 *  
10
 * <pre>
11
 * public class MyOperation extends GeometryOperation {
12
 * 
13
 *   // Check GeometryManager for alternative methods to register an operation  
14
 *   public static final int OPERATION_INDEX = 
15
 *     GeometryManager.getInstance()
16
 *        .registerGeometryOperation("MyOperation", new MyOperation(), geomType);
17
 *   
18
 *   public Object invoke(Geometry geom, GeometryOperationContext ctx) throws GeometryOperationException {
19
 *        // Operation logic goes here
20
 *   }     
21
 *   
22
 *   public int getOperationIndex() {
23
 *      return OPERATION_INDEX;
24
 *   }
25
 *   
26
 * }
27
 * </pre>
28
 *
29
 * @author jiyarza
30
 *
31
 */
32
public abstract class GeometryOperation {
33
        
34
        /**
35
         * Invokes this operation given the geometry and context 
36
         * @param geom Geometry to which apply this operation
37
         * @param ctx Parameter container
38
         * @return Place-holder object that may contain any specific return value. 
39
         * @throws GeometryOperationException The implementation is responsible to throw this exception when needed.
40
         */
41
        public abstract Object invoke(Geometry geom, GeometryOperationContext ctx) throws GeometryOperationException;
42

    
43
        /**
44
         * Returns the constant value that identifies this operation and that was obtained upon registering it. 
45
         * @return operation unique index 
46
         */
47
        public abstract int getOperationIndex();
48
}