Revision 478
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 | ||
---|---|---|
34 | 34 |
import org.gvsig.fmap.dal.DataServerExplorer; |
35 | 35 |
import org.gvsig.fmap.dal.DataStoreParameters; |
36 | 36 |
import org.gvsig.fmap.dal.exception.DataException; |
37 |
import org.gvsig.fmap.dal.exception.ValidateDataParametersException; |
|
37 | 38 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
38 | 39 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
39 | 40 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
... | ... | |
58 | 59 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
59 | 60 |
import org.gvsig.tools.ToolsLocator; |
60 | 61 |
import org.gvsig.tools.dataTypes.DataTypesManager; |
62 |
import org.gvsig.tools.locator.LocatorException; |
|
61 | 63 |
|
62 | 64 |
import com.vividsolutions.jts.geom.Geometry; |
63 | 65 |
|
... | ... | |
248 | 250 |
} |
249 | 251 |
|
250 | 252 |
public void create(final FLyrVect layer) { |
251 |
|
|
252 | 253 |
m_Layer = layer; |
253 | 254 |
try { |
254 | 255 |
featureStore = layer.getFeatureStore(); |
... | ... | |
262 | 263 |
|
263 | 264 |
@SuppressWarnings("deprecation") |
264 | 265 |
public void open() { |
265 |
|
|
266 | 266 |
if (m_Layer == null) { |
267 | 267 |
try { |
268 | 268 |
m_Layer = |
... | ... | |
273 | 273 |
throw new RuntimeException(e); |
274 | 274 |
} |
275 | 275 |
} |
276 |
|
|
277 | 276 |
} |
278 | 277 |
|
279 | 278 |
public void close() { |
... | ... | |
286 | 285 |
* @return length of field |
287 | 286 |
*/ |
288 | 287 |
public int getDataTypeLength(final int dataType) { |
289 |
|
|
290 | 288 |
switch (dataType) { |
291 | 289 |
case Types.NUMERIC: |
292 | 290 |
case Types.DOUBLE: |
... | ... | |
307 | 305 |
return 1; |
308 | 306 |
} |
309 | 307 |
return 0; |
310 |
|
|
311 | 308 |
} |
312 | 309 |
|
313 | 310 |
@SuppressWarnings("unchecked") |
... | ... | |
337 | 334 |
while (features.hasNext()) { |
338 | 335 |
final FeatureAttributeDescriptor featureAttributeDescriptor = |
339 | 336 |
features.next(); |
340 |
// if (!featureAttributeDescriptor.getName().equals( |
|
341 |
// featureType.getDefaultGeometryAttributeName())) { |
|
342 |
// ef.set( |
|
343 |
// featureAttributeDescriptor.getName().substring( |
|
344 |
// 0, |
|
345 |
// Math.min(11, featureAttributeDescriptor.getName() |
|
346 |
// .length())), values[i]); |
|
347 |
// i++; |
|
348 |
// } |
|
349 | 337 |
if (!featureAttributeDescriptor.getName().equals( |
350 | 338 |
featureType.getDefaultGeometryAttributeName())) { |
351 | 339 |
ef.set(featureAttributeDescriptor.getName(), values[i]); |
... | ... | |
360 | 348 |
} |
361 | 349 |
|
362 | 350 |
public IFeatureIterator iterator() { |
363 |
|
|
364 | 351 |
if (m_Layer != null) { |
365 | 352 |
return new DALIFeatureIterator(m_Layer, getFilters()); |
366 | 353 |
} else { |
... | ... | |
370 | 357 |
} |
371 | 358 |
|
372 | 359 |
public String getFieldName(final int i) { |
373 |
|
|
374 | 360 |
if (featureStore != null) { |
375 | 361 |
return ((FeatureAttributeDescriptor) featureType.get(i)).getName(); |
376 | 362 |
} |
377 | 363 |
return null; |
378 |
|
|
379 | 364 |
} |
380 | 365 |
|
381 | 366 |
public Class<?> getFieldType(final int i) { |
... | ... | |
393 | 378 |
|
394 | 379 |
@Override |
395 | 380 |
public int getShapesCount() { |
396 |
|
|
397 | 381 |
if (featureStore != null) { |
398 | 382 |
try { |
399 |
return (int) featureStore.getFeatureSet().getSize();
|
|
383 |
return (int)featureStore.getFeatureSet().getSize();
|
|
400 | 384 |
} catch (final DataException e) { |
401 | 385 |
Sextante.addErrorToLog(e); |
402 | 386 |
return 0; |
403 | 387 |
} |
404 | 388 |
} |
405 | 389 |
return 0; |
406 |
|
|
407 | 390 |
} |
408 | 391 |
|
409 | 392 |
public int getShapeType() { |
... | ... | |
416 | 399 |
} |
417 | 400 |
|
418 | 401 |
private int getShapeTypeFromGvSIGShapeType(final int shapeType) { |
419 |
|
|
420 | 402 |
switch (shapeType) { |
421 | 403 |
case org.gvsig.fmap.geom.Geometry.TYPES.SURFACE: |
422 | 404 |
return IVectorLayer.SHAPE_TYPE_POLYGON; |
... | ... | |
429 | 411 |
default: |
430 | 412 |
return IVectorLayer.SHAPE_TYPE_POLYGON; |
431 | 413 |
} |
432 |
|
|
433 | 414 |
} |
434 | 415 |
|
435 | 416 |
private int getgvSIGShapeType(final int shapeType) { |
436 |
|
|
437 | 417 |
switch (shapeType) { |
438 | 418 |
case IVectorLayer.SHAPE_TYPE_POLYGON: |
439 | 419 |
return org.gvsig.fmap.geom.Geometry.TYPES.SURFACE; |
... | ... | |
450 | 430 |
default: |
451 | 431 |
return org.gvsig.fmap.geom.Geometry.TYPES.SURFACE; |
452 | 432 |
} |
453 |
|
|
454 | 433 |
} |
455 | 434 |
|
456 | 435 |
public String getName() { |
457 |
|
|
458 | 436 |
if (m_Layer != null) { |
459 | 437 |
return m_Layer.getName(); |
460 | 438 |
} else { |
... | ... | |
463 | 441 |
} |
464 | 442 |
|
465 | 443 |
public void postProcess() { |
466 |
|
|
467 | 444 |
if (featureStore == null) { |
468 | 445 |
return; |
469 | 446 |
} |
470 | 447 |
try { |
471 | 448 |
featureStore.finishEditing(); |
449 |
String name = featureStore.getProviderName(); |
|
450 |
DataStoreParameters params = featureStore.getParameters(); |
|
451 |
featureStore.dispose(); |
|
452 |
featureStore = (FeatureStore) DALLocator.getDataManager().openStore(name, params); |
|
453 |
featureStore.edit(FeatureStore.MODE_APPEND); |
|
454 |
featureType = featureStore.getDefaultFeatureType(); |
|
472 | 455 |
} catch (final DataException e) { |
473 | 456 |
// No puede finalizar la edici�n. Es posible que se haya cerrado |
474 | 457 |
// previamente. |
475 |
} |
|
476 |
|
|
477 |
/* |
|
478 |
* FLyrVect vectorLayer = null; |
|
479 |
* if (inputParameters instanceof String) { |
|
480 |
* vectorLayer = (FLyrVect) FileTools.openLayer((String) |
|
481 |
* inputParameters, s_Name, m_Projection); |
|
482 |
* } |
|
483 |
* if (inputParameters instanceof OutputParameters) { |
|
484 |
* vectorLayer = (FLyrVect) FileTools.openLayer(((OutputParameters) |
|
485 |
* inputParameters).getDataParameters(), s_Name, |
|
486 |
* m_Projection); |
|
487 |
* } |
|
488 |
* create(vectorLayer); |
|
489 |
*/ |
|
490 |
|
|
458 |
} catch (ValidateDataParametersException e) { |
|
459 |
org.slf4j.LoggerFactory.getLogger(FlyrVectIVectorLayer.class).debug("Error opening store", e); |
|
460 |
} catch (LocatorException e) { |
|
461 |
org.slf4j.LoggerFactory.getLogger(FlyrVectIVectorLayer.class).debug("Error opening store", e); |
|
462 |
} |
|
491 | 463 |
} |
492 | 464 |
|
493 | 465 |
public String getFilename() { |
... | ... | |
495 | 467 |
return fileName; |
496 | 468 |
else |
497 | 469 |
return m_sName; |
498 |
/*if (featureStore != null) { |
|
499 |
final DataStoreParameters dsp = featureStore.getParameters(); |
|
500 |
if (dsp instanceof FilesystemStoreParameters) { |
|
501 |
return ((FilesystemStoreParameters) dsp).getFile() |
|
502 |
.getAbsolutePath(); |
|
503 |
} else { |
|
504 |
return null; |
|
505 |
} |
|
506 |
} else { |
|
507 |
return m_sName; |
|
508 |
}*/ |
|
509 |
|
|
510 | 470 |
} |
511 | 471 |
|
512 | 472 |
public Object getCRS() { |
... | ... | |
516 | 476 |
} |
517 | 477 |
|
518 | 478 |
public void setName(final String name) { |
519 |
|
|
520 | 479 |
m_sName = name; |
521 |
// inputParameters = name; |
|
522 |
|
|
523 | 480 |
} |
524 | 481 |
|
525 | 482 |
@Override |
526 | 483 |
public Object getBaseDataObject() { |
527 |
|
|
528 | 484 |
return m_Layer; |
529 |
|
|
530 | 485 |
} |
531 | 486 |
|
532 | 487 |
public void free() { |
533 |
|
|
534 | 488 |
m_Layer.dispose(); |
535 | 489 |
featureStore.dispose(); |
536 | 490 |
|
... | ... | |
539 | 493 |
} |
540 | 494 |
|
541 | 495 |
public IOutputChannel getOutputChannel() { |
542 |
|
|
543 | 496 |
if (featureStore != null) { |
544 | 497 |
final DataStoreParameters dsp = featureStore.getParameters(); |
545 | 498 |
if (dsp instanceof FilesystemStoreParameters) { |
... | ... | |
553 | 506 |
} else { |
554 | 507 |
return m_Channel; |
555 | 508 |
} |
556 |
|
|
557 | 509 |
} |
558 | 510 |
|
559 | 511 |
public boolean canBeEdited() { |
560 |
|
|
561 | 512 |
// we support only file-based, so we can overwrite |
562 | 513 |
return true; |
563 | 514 |
|
Also available in: Unified diff