Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.swing / org.gvsig.fmap.dal.swing.impl / src / main / java / org / gvsig / fmap / dal / swing / impl / searchPostProcess / distinctOn / STExtentAggregateOperation.java @ 47359

History | View | Annotate | Download (2.27 KB)

1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.fmap.dal.swing.impl.searchPostProcess.distinctOn;
7

    
8
//    public static void selfRegister(){
9

    
10
import java.util.List;
11
import org.gvsig.fmap.dal.DataTypes;
12
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
13
import org.gvsig.fmap.geom.Geometry;
14
import org.gvsig.fmap.geom.GeometryUtils;
15
import org.gvsig.fmap.geom.primitive.Envelope;
16
import static org.gvsig.tools.dynobject.DynField.RELATION_TYPE_NONE;
17

    
18

    
19
 public class STExtentAggregateOperation extends AbstractAggregateOperation {
20
    
21
    public static class SumAggregateOperationFactory implements AggregateOperationFactory{
22

    
23
        public static final String NAME = "ST_Extent";
24

    
25
        @Override
26
        public String getName() {
27
            return NAME;
28
        }
29

    
30
        @Override
31
        public AggregateOperation create(Object... os) {
32
            return new STExtentAggregateOperation();
33
        }
34

    
35
        @Override
36
        public boolean isApplicable(Object... value) {
37
            return Geometry.class.isAssignableFrom((Class<?>) value[0]);
38
        }
39
        
40
    }
41
    
42
    Envelope extent;
43

    
44
    public STExtentAggregateOperation() {
45
        this.extent = GeometryUtils.createEnvelope(Geometry.SUBTYPES.GEOM2D);
46
    }
47

    
48
    @Override
49
    public boolean isApplicable(Object... value) {
50
        return value[0] instanceof Geometry;
51
    }
52

    
53
    @Override
54
    public void reset() {
55
        this.extent.clear();
56
    }
57

    
58
    @Override
59
    public void perform(Object value) {
60
        if (value == null) {
61
            return;
62
        }
63
        this.extent.add((Geometry) value);
64
    }
65

    
66
    @Override
67
    public Object getValue() {
68
        return this.extent.getGeometry();
69
    }
70

    
71
    @Override
72
    public void fixAttributeDescriptor(EditableFeatureAttributeDescriptor descriptor) {
73
        super.fixAttributeDescriptor(descriptor);
74
        
75
        descriptor.setDataType(DataTypes.GEOMETRY);
76
        descriptor.setGeometryType(Geometry.TYPES.POLYGON, Geometry.SUBTYPES.GEOM2D);
77

    
78
        descriptor.setRelationType(RELATION_TYPE_NONE);
79
        descriptor.getForeingKey().clean();
80
        descriptor.setAvailableValues((List)null);
81

    
82
    }
83
    
84
    
85
}