Revision 6471

View differences:

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