41 |
41 |
import org.gvsig.fmap.dal.feature.EditableFeatureType;
|
42 |
42 |
import org.gvsig.fmap.dal.feature.Feature;
|
43 |
43 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
|
|
44 |
import org.gvsig.fmap.dal.feature.FeatureSet;
|
44 |
45 |
import org.gvsig.fmap.dal.feature.FeatureStore;
|
45 |
46 |
import org.gvsig.fmap.dal.feature.FeatureType;
|
46 |
47 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
|
... | ... | |
54 |
55 |
import org.gvsig.fmap.geom.type.GeometryTypeNotSupportedException;
|
55 |
56 |
import org.gvsig.fmap.geom.type.GeometryTypeNotValidException;
|
56 |
57 |
import org.gvsig.tools.ToolsLocator;
|
|
58 |
import org.gvsig.tools.dispose.DisposableIterator;
|
57 |
59 |
import org.gvsig.tools.dynobject.DynStruct;
|
58 |
60 |
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException;
|
59 |
61 |
import org.gvsig.tools.persistence.PersistenceManager;
|
... | ... | |
127 |
129 |
}
|
128 |
130 |
|
129 |
131 |
try {
|
130 |
|
envelope = geometryManager.createEnvelope(SUBTYPES.GEOM2D);
|
|
132 |
/*
|
|
133 |
* creates and updates envelope with all features
|
|
134 |
*/
|
|
135 |
initEnvelope(store);
|
131 |
136 |
} catch (CreateEnvelopeException e) {
|
132 |
137 |
throw new org.gvsig.fmap.dal.feature.exception.CreateGeometryException(e);
|
133 |
138 |
}
|
... | ... | |
137 |
142 |
setFeatureTypes(Arrays.asList(types), types[0]);
|
138 |
143 |
}
|
139 |
144 |
|
|
145 |
/**
|
|
146 |
* creates and updates envelope with all features
|
|
147 |
*
|
|
148 |
*/
|
|
149 |
private void initEnvelope(FeatureStore fsto) throws CreateEnvelopeException {
|
|
150 |
|
|
151 |
envelope = geometryManager.createEnvelope(SUBTYPES.GEOM2D);
|
|
152 |
FeatureSet fset = null;
|
|
153 |
DisposableIterator diter = null;
|
|
154 |
Feature feat = null;
|
|
155 |
try {
|
|
156 |
fset = fsto.getFeatureSet();
|
|
157 |
diter = fset.fastIterator();
|
|
158 |
while (diter.hasNext()) {
|
|
159 |
feat = (Feature) diter.next();
|
|
160 |
this.updateEnvelope(feat);
|
|
161 |
}
|
|
162 |
diter.dispose();
|
|
163 |
} catch (Exception dex) {
|
|
164 |
throw new CreateEnvelopeException(SUBTYPES.GEOM2D, dex);
|
|
165 |
}
|
|
166 |
}
|
|
167 |
|
140 |
168 |
/* (non-Javadoc)
|
141 |
169 |
* @see org.gvsig.fmap.dal.feature.FeatureStoreTransform#applyTransform(org.gvsig.fmap.dal.feature.Feature, org.gvsig.fmap.dal.feature.EditableFeature)
|
142 |
170 |
*/
|
143 |
171 |
public void applyTransform(Feature source, EditableFeature target)
|
144 |
172 |
throws DataException {
|
|
173 |
|
145 |
174 |
this.copySourceToTarget(source, target);
|
146 |
175 |
|
147 |
|
try {
|
|
176 |
try {
|
148 |
177 |
Point point = geometryManager.createPoint(
|
149 |
178 |
new Double(source.get(xFieldName).toString()),
|
150 |
179 |
new Double(source.get(yFieldName).toString()),
|
151 |
180 |
SUBTYPES.GEOM2D);
|
152 |
181 |
target.set(geometryFieldName, point);
|
153 |
|
target.setDefaultGeometry(point);
|
|
182 |
target.setDefaultGeometry(point);
|
154 |
183 |
envelope.add(point.getEnvelope());
|
155 |
184 |
} catch (CreateGeometryException e) {
|
156 |
185 |
throw new org.gvsig.fmap.dal.feature.exception.CreateGeometryException(TYPES.POINT, SUBTYPES.GEOM2D, e);
|
157 |
|
}
|
|
186 |
}
|
|
187 |
|
158 |
188 |
}
|
|
189 |
|
|
190 |
/**
|
|
191 |
* Used internally to initialize envelope
|
|
192 |
*
|
|
193 |
*/
|
|
194 |
private void updateEnvelope(Feature feat) throws CreateGeometryException {
|
159 |
195 |
|
|
196 |
Point point = geometryManager.createPoint(
|
|
197 |
new Double(feat.get(xFieldName).toString()),
|
|
198 |
new Double(feat.get(yFieldName).toString()),
|
|
199 |
SUBTYPES.GEOM2D);
|
|
200 |
envelope.add(point.getEnvelope());
|
|
201 |
}
|
|
202 |
|
160 |
203 |
/**
|
161 |
204 |
* @param source
|
162 |
205 |
* @param target
|