Revision 6471
trunk/extensions/extCAD/src/com/iver/cit/gvsig/ExportTo.java | ||
---|---|---|
34 | 34 |
import com.iver.cit.gvsig.fmap.drivers.FieldDescription; |
35 | 35 |
import com.iver.cit.gvsig.fmap.drivers.SHPLayerDefinition; |
36 | 36 |
import com.iver.cit.gvsig.fmap.drivers.VectorialDriver; |
37 |
import com.iver.cit.gvsig.fmap.drivers.dxf.DXFMemoryDriver; |
|
37 | 38 |
import com.iver.cit.gvsig.fmap.drivers.jdbc.postgis.PostGISWriter; |
39 |
import com.iver.cit.gvsig.fmap.drivers.jdbc.postgis.PostGisDriver; |
|
38 | 40 |
import com.iver.cit.gvsig.fmap.drivers.shp.IndexedShpDriver; |
39 | 41 |
import com.iver.cit.gvsig.fmap.edition.DefaultRowEdited; |
40 | 42 |
import com.iver.cit.gvsig.fmap.edition.EditionException; |
... | ... | |
154 | 156 |
} |
155 | 157 |
|
156 | 158 |
writer.postProcess(); |
157 |
|
|
158 |
int res = JOptionPane.showConfirmDialog( |
|
159 |
if (reader != null){ |
|
160 |
int res = JOptionPane.showConfirmDialog(
|
|
159 | 161 |
(JComponent) PluginServices.getMDIManager().getActiveView() |
160 |
, PluginServices.getText(this, "capa_exportada"), PluginServices.getText(this,"export_to"), |
|
162 |
, PluginServices.getText(this, "insertar_en_la_vista_la_capa_creada"), |
|
163 |
PluginServices.getText(this,"insertar_capa"), |
|
161 | 164 |
JOptionPane.YES_NO_OPTION); |
162 |
if (reader != null) |
|
163 |
{ |
|
165 |
|
|
164 | 166 |
if (res == JOptionPane.YES_OPTION) |
165 | 167 |
{ |
166 | 168 |
FLayer newLayer = LayerFactory.createLayer( |
... | ... | |
285 | 287 |
writer.setWriteAll(true); |
286 | 288 |
writer.setCreateTable(true); |
287 | 289 |
writer.initialize(dbLayerDef); |
288 |
writeFeatures(mapContext, layer, writer, null); |
|
290 |
PostGisDriver postGISDriver=new PostGisDriver(); |
|
291 |
postGISDriver.setLyrDef(dbLayerDef); |
|
292 |
postGISDriver.open(); |
|
289 | 293 |
|
294 |
writeFeatures(mapContext, layer, writer, postGISDriver); |
|
295 |
|
|
290 | 296 |
} catch (DriverException e) { |
291 | 297 |
e.printStackTrace(); |
292 | 298 |
throw new EditionException(e); |
... | ... | |
305 | 311 |
{ |
306 | 312 |
PluginServices.cancelableBackgroundExecution(new WriterTask(mapContext, layer, writer, reader)); |
307 | 313 |
} |
308 |
private void writeMultiFeatures(FMap mapContext, FLyrVect layers, IWriter[] writers, Driver reader) throws DriverException, DriverIOException{
|
|
314 |
private void writeMultiFeatures(FMap mapContext, FLyrVect layers, IWriter[] writers, Driver[] readers) throws DriverException, DriverIOException{
|
|
309 | 315 |
MultiWriterTask mwt=new MultiWriterTask(); |
310 | 316 |
for (int i=0;i<writers.length;i++) { |
311 |
mwt.addTask(new WriterTask(mapContext, layers, writers[i], reader)); |
|
317 |
mwt.addTask(new WriterTask(mapContext, layers, writers[i], readers[i]));
|
|
312 | 318 |
} |
313 | 319 |
PluginServices.cancelableBackgroundExecution(mwt); |
314 | 320 |
} |
... | ... | |
421 | 427 |
DxfFieldsMapping fieldsMapping = new DxfFieldsMapping(); |
422 | 428 |
// TODO: Recuperar aqu? los campos del cuadro de di?logo. |
423 | 429 |
writer.setFieldMapping(fieldsMapping); |
424 |
|
|
425 |
writeFeatures(mapContext, layer, writer, null); |
|
430 |
DXFMemoryDriver dxfDriver=new DXFMemoryDriver(); |
|
431 |
dxfDriver.open(newFile); |
|
432 |
writeFeatures(mapContext, layer, writer, dxfDriver); |
|
426 | 433 |
} |
427 | 434 |
|
428 | 435 |
} catch (DriverException e) { |
... | ... | |
431 | 438 |
} catch (com.hardcode.gdbms.engine.data.driver.DriverException e) { |
432 | 439 |
e.printStackTrace(); |
433 | 440 |
throw new EditionException(e); |
441 |
} catch (IOException e) { |
|
442 |
// TODO Auto-generated catch block |
|
443 |
e.printStackTrace(); |
|
434 | 444 |
} |
435 | 445 |
|
436 | 446 |
} |
... | ... | |
457 | 467 |
} |
458 | 468 |
newFile = new File(path); |
459 | 469 |
|
460 |
ShpWriter writer = (ShpWriter) LayerFactory.getWM().getWriter( |
|
461 |
"Shape Writer"); |
|
470 |
|
|
462 | 471 |
SHPLayerDefinition lyrDef = new SHPLayerDefinition(); |
463 | 472 |
SelectableDataSource sds = layer.getRecordset(); |
464 | 473 |
FieldDescription[] fieldsDescrip = sds.getFieldsDescription(); |
... | ... | |
466 | 475 |
if (layer.getShapeType() == FShape.MULTI) // Exportamos a 3 |
467 | 476 |
// ficheros |
468 | 477 |
{ |
478 |
ShpWriter writer1 = (ShpWriter) LayerFactory.getWM().getWriter( |
|
479 |
"Shape Writer"); |
|
480 |
Driver[] drivers=new Driver[3]; |
|
469 | 481 |
ShpWriter[] writers=new ShpWriter[3]; |
482 |
|
|
470 | 483 |
// puntos |
471 | 484 |
String aux = path.replaceFirst(".shp", "_points.shp"); |
485 |
|
|
472 | 486 |
File filePoints = new File(aux); |
473 | 487 |
lyrDef.setFile(filePoints); |
474 | 488 |
lyrDef.setName(filePoints.getName()); |
475 | 489 |
lyrDef.setShapeType(FShape.POINT); |
476 |
writer.setFile(filePoints); |
|
490 |
writer1.setFile(filePoints);
|
|
477 | 491 |
lyrDef.setFile(filePoints); |
478 |
writer.initialize(lyrDef); |
|
479 |
writers[0]=writer; |
|
480 |
//writeFeatures(mapContext, layer, writer, null); |
|
492 |
writer1.initialize(lyrDef); |
|
493 |
writers[0]=writer1; |
|
494 |
drivers[0]=getOpenShpDriver(filePoints); |
|
495 |
//drivers[0]=null; |
|
481 | 496 |
|
497 |
ShpWriter writer2 = (ShpWriter) LayerFactory.getWM().getWriter( |
|
498 |
"Shape Writer"); |
|
482 | 499 |
// Lineas |
483 | 500 |
aux = path.replaceFirst(".shp", "_line.shp"); |
484 | 501 |
File fileLines = new File(aux); |
485 | 502 |
lyrDef.setFile(fileLines); |
486 | 503 |
lyrDef.setName(fileLines.getName()); |
487 | 504 |
lyrDef.setShapeType(FShape.LINE); |
488 |
writer.setFile(fileLines); |
|
505 |
writer2.setFile(fileLines);
|
|
489 | 506 |
lyrDef.setFile(fileLines); |
490 |
writer.initialize(lyrDef); |
|
491 |
writers[1]=writer; |
|
507 |
writer2.initialize(lyrDef); |
|
508 |
writers[1]=writer2; |
|
509 |
drivers[1]=getOpenShpDriver(fileLines); |
|
510 |
//drivers[1]=null; |
|
492 | 511 |
|
493 |
//writeFeatures(mapContext, layer, writer, null);
|
|
494 |
|
|
512 |
ShpWriter writer3 = (ShpWriter) LayerFactory.getWM().getWriter(
|
|
513 |
"Shape Writer"); |
|
495 | 514 |
// Pol?gonos |
496 | 515 |
aux = path.replaceFirst(".shp", "_polygons.shp"); |
497 | 516 |
File filePolygons = new File(aux); |
498 | 517 |
lyrDef.setFile(filePolygons); |
499 | 518 |
lyrDef.setName(filePolygons.getName()); |
500 | 519 |
lyrDef.setShapeType(FShape.POLYGON); |
501 |
writer.setFile(filePolygons); |
|
520 |
writer3.setFile(filePolygons);
|
|
502 | 521 |
lyrDef.setFile(filePolygons); |
503 |
writer.initialize(lyrDef); |
|
504 |
writers[2]=writer; |
|
522 |
writer3.initialize(lyrDef); |
|
523 |
writers[2]=writer3; |
|
524 |
drivers[2]=getOpenShpDriver(filePolygons); |
|
525 |
//drivers[2]=null; |
|
505 | 526 |
|
506 |
//writeFeatures(mapContext, layer, writer, null); |
|
507 |
writeMultiFeatures(mapContext,layer, writers, null); |
|
527 |
writeMultiFeatures(mapContext,layer, writers, drivers); |
|
508 | 528 |
} else { |
509 |
// Esto cuando se quiere exportar a un fichero nuevo falla.
|
|
510 |
// IndexedShpDriver drv = new IndexedShpDriver();
|
|
511 |
// drv.open(newFile);
|
|
529 |
ShpWriter writer = (ShpWriter) LayerFactory.getWM().getWriter(
|
|
530 |
"Shape Writer");
|
|
531 |
IndexedShpDriver drv = getOpenShpDriver(newFile);
|
|
512 | 532 |
|
513 | 533 |
lyrDef.setFile(newFile); |
514 | 534 |
lyrDef.setName(newFile.getName()); |
515 | 535 |
lyrDef.setShapeType(layer.getShapeType()); |
516 | 536 |
writer.setFile(newFile); |
517 | 537 |
writer.initialize(lyrDef); |
538 |
writeFeatures(mapContext, layer, writer, drv); |
|
518 | 539 |
|
519 |
// writeFeatures(mapContext, layer, writer, drv); |
|
520 |
writeFeatures(mapContext, layer, writer, null); |
|
521 |
|
|
522 | 540 |
} |
523 | 541 |
} |
524 | 542 |
} catch (DriverException e) { |
... | ... | |
532 | 550 |
// e.printStackTrace(); |
533 | 551 |
// throw new EditionException(e); |
534 | 552 |
// } |
553 |
catch (IOException e) { |
|
554 |
// TODO Auto-generated catch block |
|
555 |
e.printStackTrace(); |
|
556 |
} |
|
535 | 557 |
|
536 | 558 |
} |
537 |
|
|
538 | 559 |
/** |
539 | 560 |
* This method saves a layer to GML |
540 | 561 |
* @param mapContext |
... | ... | |
585 | 606 |
// } |
586 | 607 |
|
587 | 608 |
} |
588 |
|
|
609 |
private IndexedShpDriver getOpenShpDriver(File fileShp) throws IOException { |
|
610 |
IndexedShpDriver drv = new IndexedShpDriver(); |
|
611 |
if (!fileShp.exists()) { |
|
612 |
fileShp.createNewFile(); |
|
613 |
File newFileSHX=new File(fileShp.getAbsolutePath().replaceAll(".shp",".shx")); |
|
614 |
newFileSHX.createNewFile(); |
|
615 |
File newFileDBF=new File(fileShp.getAbsolutePath().replaceAll(".shp",".dbf")); |
|
616 |
newFileDBF.createNewFile(); |
|
617 |
} |
|
618 |
drv.open(fileShp); |
|
619 |
return drv; |
|
620 |
} |
|
589 | 621 |
/** |
590 | 622 |
* @see com.iver.andami.plugins.IExtension#isEnabled() |
591 | 623 |
*/ |
Also available in: Unified diff