Statistics
| Revision:

gvsig-vectorediting / org.gvsig.vectorediting / trunk / org.gvsig.vectorediting / org.gvsig.vectorediting.lib / org.gvsig.vectorediting.lib.prov / org.gvsig.vectorediting.lib.prov.editvertex / src / main / java / org / gvsig / vectorediting / lib / prov / editvertex / operation / EditVertexOperationUtils.java @ 368

History | View | Annotate | Download (2.49 KB)

1
package org.gvsig.vectorediting.lib.prov.editvertex.operation;
2

    
3

    
4
import java.util.HashMap;
5
import java.util.Map;
6

    
7
import org.slf4j.Logger;
8
import org.slf4j.LoggerFactory;
9

    
10
import org.gvsig.fmap.geom.Geometry;
11
import org.gvsig.fmap.geom.primitive.Arc;
12
import org.gvsig.fmap.geom.primitive.Circle;
13
import org.gvsig.fmap.geom.primitive.Curve;
14
import org.gvsig.fmap.geom.primitive.Ellipse;
15
import org.gvsig.fmap.geom.primitive.EllipticArc;
16
import org.gvsig.fmap.geom.primitive.OrientablePrimitive;
17
import org.gvsig.fmap.geom.primitive.Point;
18
import org.gvsig.fmap.geom.primitive.Primitive;
19
import org.gvsig.fmap.geom.primitive.Spline;
20
import org.gvsig.fmap.geom.primitive.Surface;
21

    
22

    
23
public class EditVertexOperationUtils {
24

    
25
    private static Logger logger = LoggerFactory.getLogger(EditVertexOperationUtils.class);
26

    
27
    private static Map<Integer, EditVertexOperation> operations = new HashMap<Integer, EditVertexOperation>();
28

    
29
    private EditVertexOperationUtils() {
30
    }
31

    
32
    public static void register(EditVertexOperation operation, int geometryType){
33
        operations.put(geometryType, operation);
34
    }
35

    
36
    public static EditVertexOperation getOperation(Primitive geom) {
37
        Integer type = geom.getGeometryType().getType();
38

    
39
        if(isPolygon(geom)){
40
            type = Geometry.TYPES.POLYGON;
41
        } else if(isLine(geom)){
42
            type = Geometry.TYPES.LINE;
43
        }
44
        EditVertexOperation operation = operations.get(type);
45

    
46
        return operation;
47
    }
48

    
49
    private static boolean isPolygon(Geometry geometry) {
50

    
51
        if(!(geometry instanceof Surface)){
52
            return false;
53
        }
54
        if (geometry instanceof Ellipse) {
55
            return false;
56
        }
57
        if (geometry instanceof EllipticArc) {
58
            return false;
59
        }
60
        if (geometry instanceof Circle) {
61
            return false;
62
        }
63
        return true;
64
    }
65

    
66
    private static boolean isLine(Geometry geometry) {
67

    
68
        if(!(geometry instanceof Curve)){
69
            return false;
70
        }
71
        if (geometry instanceof Arc) {
72
            return false;
73
        }
74
        if (geometry instanceof Spline) {
75
            return false;
76
        }
77
        return true;
78
    }
79

    
80
    public static void setVertex(OrientablePrimitive geom, int index, Point p) {
81
        Point point = geom.getVertex(index);
82
        int min = p.getDimension() < point.getDimension()?p.getDimension():point.getDimension();
83
        for(int i=0; i<min; i++){
84
            point.setCoordinateAt(i, p.getCoordinateAt(i));
85
        }
86
    }
87

    
88
}