Revision 588
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/FlyrVectIVectorLayer.java | ||
---|---|---|
26 | 26 |
import java.awt.geom.Rectangle2D; |
27 | 27 |
import java.io.File; |
28 | 28 |
import java.sql.Types; |
29 |
import java.util.ArrayList; |
|
29 | 30 |
import java.util.Iterator; |
31 |
import java.util.List; |
|
30 | 32 |
|
31 | 33 |
import org.cresques.cts.IProjection; |
32 | 34 |
import org.gvsig.fmap.dal.DALLocator; |
... | ... | |
54 | 56 |
import org.gvsig.fmap.geom.type.GeometryType; |
55 | 57 |
import org.gvsig.fmap.geom.type.GeometryTypeNotSupportedException; |
56 | 58 |
import org.gvsig.fmap.geom.type.GeometryTypeNotValidException; |
59 |
import org.gvsig.fmap.mapcontext.MapContextLocator; |
|
57 | 60 |
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException; |
58 |
import org.gvsig.fmap.mapcontext.layers.LayerFactory; |
|
59 | 61 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
60 | 62 |
import org.gvsig.tools.ToolsLocator; |
61 | 63 |
import org.gvsig.tools.dataTypes.DataTypesManager; |
... | ... | |
84 | 86 |
private IOutputChannel m_Channel; |
85 | 87 |
private String fileName = null; |
86 | 88 |
|
89 |
private List<String> names = new ArrayList<String>(); |
|
90 |
private List<Class<?>> types = new ArrayList<Class<?>>(); |
|
91 |
|
|
92 |
|
|
93 |
|
|
87 | 94 |
// private Object inputParameters = null; |
88 | 95 |
|
89 | 96 |
public FlyrVectIVectorLayer() { |
... | ... | |
115 | 122 |
featureStore = |
116 | 123 |
(FeatureStore) DATA_MANAGER.openStore( |
117 | 124 |
newParams.getDataStoreName(), newParams); |
125 |
initializeNamesAndTypes(); |
|
118 | 126 |
featureStore.edit(FeatureStore.MODE_APPEND); |
119 | 127 |
} |
120 | 128 |
|
... | ... | |
135 | 143 |
crs, fieldSize); |
136 | 144 |
} |
137 | 145 |
|
138 |
/* |
|
139 |
* NewFeatureStoreParameters param = |
|
140 |
* (NewFeatureStoreParameters)inputParams; |
|
141 |
* featureType = param.getDefaultFeatureType(); |
|
142 |
* loadFeatureType(sFields, types, iShapeType, crs, featureType, |
|
143 |
* fieldSize); |
|
144 |
* |
|
145 |
* param.setDefaultFeatureType(featureType); |
|
146 |
* |
|
147 |
* DataManager manager = DALLocator.getDataManager(); |
|
148 |
* featureStore = (FeatureStore) manager.createStore(param); |
|
149 |
* featureStore.edit(FeatureStore.MODE_APPEND); |
|
150 |
*/ |
|
151 |
|
|
152 | 146 |
} catch (Exception e) { |
153 | 147 |
Sextante.addErrorToLog(e); |
154 | 148 |
} |
... | ... | |
171 | 165 |
final FilesystemServerExplorer explorer = |
172 | 166 |
(FilesystemServerExplorer) DATA_MANAGER.openServerExplorer( |
173 | 167 |
FilesystemServerExplorer.NAME, explorerParams); |
168 |
File file = new File(sFilename); |
|
174 | 169 |
final NewFeatureStoreParameters newParams = |
175 |
(NewFeatureStoreParameters) explorer.getAddParameters(new File( |
|
176 |
sFilename)); |
|
170 |
(NewFeatureStoreParameters) explorer.getAddParameters(file); |
|
177 | 171 |
|
172 |
|
|
178 | 173 |
EditableFeatureType editableFeatureType = |
179 | 174 |
newParams.getDefaultFeatureType(); |
180 | 175 |
featureType = editableFeatureType; |
... | ... | |
185 | 180 |
newParams.setDynValue("crs", m_Projection); |
186 | 181 |
|
187 | 182 |
explorer.add(newParams.getDataStoreName(), newParams, true); |
188 |
featureStore = |
|
189 |
(FeatureStore) DATA_MANAGER.openStore( |
|
190 |
newParams.getDataStoreName(), newParams); |
|
183 |
|
|
184 |
DataStoreParameters params = DATA_MANAGER.createStoreParameters(newParams.getDataStoreName()); |
|
185 |
params.setDynValue("shpfile", sFilename); |
|
186 |
params.setDynValue("crs", m_Projection); |
|
187 |
|
|
188 |
featureStore = (FeatureStore) DATA_MANAGER.openStore(params.getDataStoreName(), params); |
|
191 | 189 |
featureStore.edit(FeatureStore.MODE_APPEND); |
192 | 190 |
featureType = featureStore.getDefaultFeatureType(); |
191 |
initializeNamesAndTypes(); |
|
193 | 192 |
|
194 | 193 |
} catch (final Exception e) { |
195 | 194 |
Sextante.addErrorToLog(e); |
... | ... | |
206 | 205 |
// No se hace nada porque el resultado de los geoprocesos deben dejar una ?nica columna de geometr?a |
207 | 206 |
// que a?adimos al final |
208 | 207 |
} else { |
209 |
featureType.add(fields[i], iTypes[i]).setSize(fieldSize[i]) |
|
208 |
featureType.add(fields[i], iTypes[i]) |
|
209 |
.setAllowNull(true) |
|
210 |
.setSize(fieldSize[i]) |
|
210 | 211 |
.setPrecision(PRECISION); |
211 | 212 |
} |
212 | 213 |
} |
... | ... | |
254 | 255 |
try { |
255 | 256 |
featureStore = layer.getFeatureStore(); |
256 | 257 |
featureType = featureStore.getDefaultFeatureType(); |
258 |
initializeNamesAndTypes(); |
|
257 | 259 |
m_Projection = layer.getProjection(); |
258 | 260 |
} catch (final Exception e) { |
259 | 261 |
Sextante.addErrorToLog(e); |
... | ... | |
261 | 263 |
|
262 | 264 |
} |
263 | 265 |
|
264 |
@SuppressWarnings("deprecation") |
|
265 | 266 |
public void open() { |
266 | 267 |
if (m_Layer == null) { |
267 | 268 |
try { |
268 |
m_Layer = |
|
269 |
(FLyrVect) LayerFactory.getInstance().createLayer(
|
|
269 |
|
|
270 |
m_Layer = (FLyrVect) MapContextLocator.getMapContextManager().createLayer(
|
|
270 | 271 |
getFilename(), featureStore); |
271 | 272 |
} catch (final LoadLayerException e) { |
272 | 273 |
Sextante.addErrorToLog(e); |
... | ... | |
336 | 337 |
features.next(); |
337 | 338 |
if (!featureAttributeDescriptor.getName().equals( |
338 | 339 |
featureType.getDefaultGeometryAttributeName())) { |
339 |
ef.set(featureAttributeDescriptor.getName(), values[i]);
|
|
340 |
ef.set(featureAttributeDescriptor.getName(), values[i]);
|
|
340 | 341 |
} |
341 | 342 |
i++; |
342 | 343 |
} |
... | ... | |
364 | 365 |
} |
365 | 366 |
|
366 | 367 |
public Class<?> getFieldType(final int i) { |
367 |
return featureStore == null ? null : featureType |
|
368 |
.getAttributeDescriptor(i).getDataType().getDefaultClass(); |
|
368 |
return types.get(i); |
|
369 | 369 |
} |
370 | 370 |
|
371 | 371 |
public int getFieldCount() { |
372 | 372 |
if (featureStore != null) { |
373 |
return featureType.size();
|
|
373 |
return names.size();
|
|
374 | 374 |
} |
375 | 375 |
return 0; |
376 |
|
|
377 | 376 |
} |
378 | 377 |
|
379 | 378 |
@Override |
... | ... | |
452 | 451 |
featureStore = (FeatureStore) DALLocator.getDataManager().openStore(name, params); |
453 | 452 |
featureType = featureStore.getDefaultFeatureType(); |
454 | 453 |
} catch (final DataException e) { |
455 |
// No puede finalizar la edici�n. Es posible que se haya cerrado |
|
456 |
// previamente. |
|
454 |
// No puede finalizar la edici?n. Es posible que se haya cerrado previamente. |
|
457 | 455 |
} catch (ValidateDataParametersException e) { |
458 | 456 |
org.slf4j.LoggerFactory.getLogger(FlyrVectIVectorLayer.class).debug("Error opening store", e); |
459 | 457 |
} catch (LocatorException e) { |
... | ... | |
527 | 525 |
return null; |
528 | 526 |
} |
529 | 527 |
} |
528 |
|
|
529 |
|
|
530 |
|
|
531 |
public String[] getFieldNames() { |
|
532 |
return (String[]) names.toArray(new String[names.size()]); |
|
533 |
} |
|
534 |
|
|
535 |
public int getFieldIndexByName(final String sFieldName) { |
|
536 |
String[] names = getFieldNames(); |
|
537 |
for (int i = 0; i < names.length; i++) { |
|
538 |
if(names[i].equalsIgnoreCase(sFieldName)) { |
|
539 |
return i; |
|
540 |
} |
|
541 |
} |
|
542 |
return -1; |
|
543 |
} |
|
544 |
|
|
545 |
public Class<?>[] getFieldTypes() { |
|
546 |
return (Class<?>[]) types.toArray(new Class<?>[types.size()]); |
|
547 |
} |
|
548 |
|
|
549 |
private void initializeNamesAndTypes() { |
|
550 |
|
|
551 |
int defaultGeometryAttributeIndex = this.featureType.getDefaultGeometryAttributeIndex(); |
|
552 |
for(int i = 0; i < this.featureType.size(); i++){ |
|
553 |
if(i!=defaultGeometryAttributeIndex){ |
|
554 |
FeatureAttributeDescriptor attributeDescriptor = this.featureType.getAttributeDescriptor(i); |
|
555 |
names.add(attributeDescriptor.getName()); |
|
556 |
types.add(attributeDescriptor.getDataType().getDefaultClass()); |
|
557 |
} |
|
558 |
} |
|
559 |
|
|
560 |
} |
|
530 | 561 |
} |
Also available in: Unified diff