Revision 37522 branches/v2_0_0_prep/extensions/extDalTransformEventTheme/src/org/gvsig/app/eventtheme/dal/feature/EventThemeTransform.java

View differences:

EventThemeTransform.java
34 34
import org.gvsig.fmap.dal.DataStore;
35 35
import org.gvsig.fmap.dal.DataTypes;
36 36
import org.gvsig.fmap.dal.exception.DataException;
37
import org.gvsig.fmap.dal.exception.InitializeException;
37 38
import org.gvsig.fmap.dal.feature.AbstractFeatureStoreTransform;
38 39
import org.gvsig.fmap.dal.feature.EditableFeature;
39 40
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
......
46 47
import org.gvsig.fmap.geom.Geometry.TYPES;
47 48
import org.gvsig.fmap.geom.GeometryLocator;
48 49
import org.gvsig.fmap.geom.GeometryManager;
50
import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
49 51
import org.gvsig.fmap.geom.exception.CreateGeometryException;
52
import org.gvsig.fmap.geom.primitive.Envelope;
50 53
import org.gvsig.fmap.geom.primitive.Point;
54
import org.gvsig.fmap.geom.type.GeometryTypeNotSupportedException;
55
import org.gvsig.fmap.geom.type.GeometryTypeNotValidException;
51 56
import org.gvsig.tools.ToolsLocator;
52 57
import org.gvsig.tools.dynobject.DynStruct;
58
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException;
53 59
import org.gvsig.tools.persistence.PersistenceManager;
54 60
import org.gvsig.tools.persistence.PersistentState;
55 61
import org.gvsig.tools.persistence.exception.PersistenceException;
......
64 70
 * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera</a>
65 71
 */
66 72
public class EventThemeTransform extends AbstractFeatureStoreTransform {
67
    
73

  
68 74
    public static final String PERSISTENCE_DEFINITION_NAME = "EventThemeTransform";
69
    
75

  
70 76
    private String xFieldName = null;
71 77
    private String yFieldName = null;
72 78
    private String geometryFieldName = null;
73 79
    private IProjection projection = null;
74 80
    private FeatureType originalFeatureType;
75
    private GeometryManager geometryManager = GeometryLocator.getGeometryManager();
81
    private GeometryManager geometryManager = GeometryLocator.getGeometryManager();    
82
    private Envelope envelope;
76 83

  
77 84
    public EventThemeTransform() {
78 85
        super();
......
109 116
        EditableFeatureType type = originalFeatureType.getEditable();
110 117
        if (type.get(this.geometryFieldName) == null){
111 118
            EditableFeatureAttributeDescriptor attributeDescriptor = type.add(this.geometryFieldName,  DataTypes.GEOMETRY);
112
            attributeDescriptor.setGeometryType(TYPES.POINT);
113
            attributeDescriptor.setGeometrySubType(SUBTYPES.GEOM2D);
119
            try {
120
                attributeDescriptor.setGeometryType(geometryManager.getGeometryType(TYPES.POINT, SUBTYPES.GEOM2D));
121
            } catch (GeometryTypeNotSupportedException e) {
122
                throw new InitializeException(e);
123
            } catch (GeometryTypeNotValidException e) {
124
                throw new InitializeException(e);
125
            }           
114 126
            attributeDescriptor.setSRS(projection);
115 127
        }
116 128

  
129
        try {
130
            envelope = geometryManager.createEnvelope(SUBTYPES.GEOM2D);
131
        } catch (CreateEnvelopeException e) {
132
            throw new org.gvsig.fmap.dal.feature.exception.CreateGeometryException(e);
133
        }
134

  
117 135
        type.setDefaultGeometryAttributeName(this.geometryFieldName);
118 136
        FeatureType[] types = new FeatureType[] { type.getNotEditableCopy() };
119 137
        setFeatureTypes(Arrays.asList(types), types[0]);
......
132 150
                new Double(source.get(yFieldName).toString()),
133 151
                SUBTYPES.GEOM2D);
134 152
            target.set(geometryFieldName, point);
135
            target.setDefaultGeometry(point);				
153
            target.setDefaultGeometry(point);	
154
            envelope.add(point.getEnvelope());
136 155
        } catch (CreateGeometryException e) {
137 156
            throw new org.gvsig.fmap.dal.feature.exception.CreateGeometryException(TYPES.POINT, SUBTYPES.GEOM2D, e);
138 157
        }		
......
232 251
        }
233 252
    }
234 253

  
254
    public Object getDynValue(String name) throws DynFieldNotFoundException {
255
        if (DataStore.METADATA_CRS.equals(name)){
256
            return projection;
257
        }else if(DataStore.METADATA_ENVELOPE.equals(name)){
258
            return envelope;
259
        }
260
        return null;
261
    }
262

  
263
    public boolean hasDynValue(String name) {
264
        return ((DataStore.METADATA_CRS.equals(name)) || 
265
            (DataStore.METADATA_ENVELOPE.equals(name)));
266
    }    
235 267
}
236 268

  

Also available in: Unified diff