Revision 6313 trunk/extensions/extCAD/src/com/iver/cit/gvsig/ExportTo.java

View differences:

ExportTo.java
2 2

  
3 3
import java.awt.Component;
4 4
import java.io.File;
5
import java.io.IOException;
5 6
import java.sql.Connection;
6 7
import java.sql.DriverManager;
7 8
import java.sql.SQLException;
......
11 12
import javax.swing.JOptionPane;
12 13
import javax.swing.ProgressMonitor;
13 14

  
15
import com.hardcode.driverManager.Driver;
14 16
import com.hardcode.driverManager.DriverLoadException;
15 17
import com.hardcode.gdbms.engine.values.Value;
16 18
import com.iver.andami.PluginServices;
......
26 28
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
27 29
import com.iver.cit.gvsig.fmap.drivers.FieldDescription;
28 30
import com.iver.cit.gvsig.fmap.drivers.SHPLayerDefinition;
31
import com.iver.cit.gvsig.fmap.drivers.VectorialDriver;
29 32
import com.iver.cit.gvsig.fmap.drivers.jdbc.postgis.PostGISWriter;
33
import com.iver.cit.gvsig.fmap.drivers.shp.IndexedShpDriver;
30 34
import com.iver.cit.gvsig.fmap.edition.DefaultRowEdited;
31 35
import com.iver.cit.gvsig.fmap.edition.EditionException;
32 36
import com.iver.cit.gvsig.fmap.edition.IWriter;
......
57 61
		ReadableVectorial va;
58 62
		SelectableDataSource sds;
59 63
		FBitSet bitSet;
60
		public WriterTask(FLyrVect lyr, IWriter writer) throws DriverException, DriverIOException
64
		FMap mapContext;
65
		VectorialDriver reader;
66
		
67
		public WriterTask(FMap mapContext, FLyrVect lyr, IWriter writer, Driver reader) throws DriverException, DriverIOException
61 68
		{
69
			this.mapContext = mapContext;
62 70
			this.lyrVect = lyr;
63 71
			this.writer = writer;
72
			this.reader = (VectorialDriver) reader;
64 73

  
65 74
			setInitialStep(0);
66 75
			setDeterminatedProcess(true);
......
127 136

  
128 137
			writer.postProcess();
129 138

  
130
			JOptionPane.showMessageDialog(
139
			int res = JOptionPane.showConfirmDialog(
131 140
					(JComponent) PluginServices.getMDIManager().getActiveView()
132 141
					, PluginServices.getText(this, "capa_exportada"), PluginServices.getText(this,"export_to"),
133
					JOptionPane.INFORMATION_MESSAGE);
142
					JOptionPane.YES_NO_OPTION);
143
			if (reader != null)
144
			{
145
				if (res == JOptionPane.YES_OPTION)
146
				{
147
					FLayer newLayer = LayerFactory.createLayer(
148
							writer.getTableDefinition().getName(), reader, mapContext.getProjection());
149
					mapContext.getLayers().addLayer(newLayer);
150
				}
151
			}
134 152

  
135 153
		}
136 154

  
......
173 191
							}
174 192
						} // if numSelec > 0
175 193
						if (actionCommand.equals("SHP")) {
176
							saveToShp(lv);
194
							saveToShp(mapa, lv);
177 195
						}
178 196
						if (actionCommand.equals("DXF")) {
179
							saveToDxf(lv);
197
							saveToDxf(mapa, lv);
180 198
						}
181 199
						if (actionCommand.equals("POSTGIS")) {
182
							saveToPostGIS(lv);
200
							saveToPostGIS(mapa, lv);
183 201
						}
184 202
					} // actives[i]
185 203
				} // for
......
197 215
		}
198 216
	}
199 217

  
200
	public void saveToPostGIS(FLyrVect layer) throws EditionException, DriverIOException {
218
	public void saveToPostGIS(FMap mapContext, FLyrVect layer) throws EditionException, DriverIOException {
201 219
		try {
202 220
			String tableName = JOptionPane.showInputDialog(PluginServices
203 221
					.getText(this, "intro_tablename"));
......
232 250
			writer.setWriteAll(true);
233 251
			writer.setCreateTable(true);
234 252
			writer.initialize(dbLayerDef);
235
			writeFeatures(layer, writer);
253
			writeFeatures(mapContext, layer, writer, null);
236 254

  
237 255
		} catch (DriverException e) {
238 256
			e.printStackTrace();
......
248 266

  
249 267
	}
250 268

  
251
	private void writeFeatures(FLyrVect layer, IWriter writer) throws DriverException, DriverIOException
269
	private void writeFeatures(FMap mapContext, FLyrVect layer, IWriter writer, Driver reader) throws DriverException, DriverIOException
252 270
	{
253
		PluginServices.cancelableBackgroundExecution(new WriterTask(layer, writer));
271
		PluginServices.cancelableBackgroundExecution(new WriterTask(mapContext, layer, writer, reader));
254 272
	}
255 273

  
256 274
	/**
......
333 351
		progress.close();
334 352
	}
335 353

  
336
	public void saveToDxf(FLyrVect layer) throws EditionException, DriverIOException {
354
	public void saveToDxf(FMap mapContext, FLyrVect layer) throws EditionException, DriverIOException {
337 355
		try {
338 356
			JFileChooser jfc = new JFileChooser();
339 357
			SimpleFileFilter filterShp = new SimpleFileFilter("dxf",
......
363 381
				// TODO: Recuperar aqu? los campos del cuadro de di?logo.
364 382
				writer.setFieldMapping(fieldsMapping);
365 383

  
366
				writeFeatures(layer, writer);
384
				writeFeatures(mapContext, layer, writer, null);
367 385
			}
368 386

  
369 387
		} catch (DriverException e) {
......
376 394

  
377 395
	}
378 396

  
379
	public void saveToShp(FLyrVect layer) throws EditionException, DriverIOException {
397
	public void saveToShp(FMap mapContext, FLyrVect layer) throws EditionException, DriverIOException {
380 398
		try {
381 399
			JFileChooser jfc = new JFileChooser();
382 400
			SimpleFileFilter filterShp = new SimpleFileFilter("shp",
......
416 434
					writer.setFile(filePoints);
417 435
					lyrDef.setFile(filePoints);
418 436
					writer.initialize(lyrDef);
419
					writeFeatures(layer, writer);
437
					writeFeatures(mapContext, layer, writer, null);
420 438

  
421 439
					// Lineas
422 440
					aux = path.replaceFirst(".shp", "_line.shp");
......
427 445
					writer.setFile(fileLines);
428 446
					lyrDef.setFile(fileLines);
429 447
					writer.initialize(lyrDef);
430
					writeFeatures(layer, writer);
448
					writeFeatures(mapContext, layer, writer, null);
431 449

  
432 450
					// Pol?gonos
433 451
					aux = path.replaceFirst(".shp", "_polygons.shp");
......
438 456
					writer.setFile(filePolygons);
439 457
					lyrDef.setFile(filePolygons);
440 458
					writer.initialize(lyrDef);
441
					writeFeatures(layer, writer);
459
					writeFeatures(mapContext, layer, writer, null);
442 460
				} else {
461
					IndexedShpDriver drv = new IndexedShpDriver();
462
					drv.open(newFile);
463
					
443 464
					lyrDef.setFile(newFile);
444 465
					lyrDef.setName(newFile.getName());
445 466
					lyrDef.setShapeType(layer.getShapeType());
446 467
					writer.setFile(newFile);
447 468
					writer.initialize(lyrDef);
448 469

  
449
					writeFeatures(layer, writer);
470
					writeFeatures(mapContext, layer, writer, drv);
450 471

  
451 472
				}
452 473
			}
......
456 477
		} catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
457 478
			e.printStackTrace();
458 479
			throw new EditionException(e);
480
		} catch (IOException e) {			
481
			e.printStackTrace();
482
			throw new EditionException(e);
459 483
		}
460 484

  
461 485
	}

Also available in: Unified diff