Revision 37522 branches/v2_0_0_prep/extensions/extDalTransformEventTheme/src/org/gvsig/app/eventtheme/dal/feature/EventThemeTransform.java
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