Statistics
| Revision:

root / branches / v2_0_0_prep / extensions / extEditing / src / com / iver / cit / gvsig / ExportTo.java @ 25069

History | View | Annotate | Download (26.5 KB)

1
package com.iver.cit.gvsig;
2

    
3
import java.awt.Component;
4
import java.io.File;
5

    
6
import javax.swing.JFileChooser;
7

    
8
import org.gvsig.fmap.dal.DALLocator;
9
import org.gvsig.fmap.dal.DataServerExplorer;
10
import org.gvsig.fmap.dal.DataServerExplorerParameters;
11
import org.gvsig.fmap.dal.DataManager;
12
import org.gvsig.fmap.dal.exception.DataException;
13
import org.gvsig.fmap.dal.exception.ReadException;
14
import org.gvsig.fmap.mapcontext.MapContext;
15
import org.gvsig.fmap.mapcontext.layers.FLayer;
16
import org.gvsig.fmap.mapcontext.layers.FLayers;
17
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
18
import org.gvsig.tools.exception.DriverException;
19

    
20
import com.iver.andami.PluginServices;
21
import com.iver.andami.messages.NotificationManager;
22
import com.iver.andami.plugins.Extension;
23
import com.iver.cit.gvsig.project.documents.view.IProjectView;
24
import com.iver.cit.gvsig.project.documents.view.gui.View;
25
import com.iver.utiles.SimpleFileFilter;
26

    
27
public class ExportTo extends Extension {
28
        private String lastPath = null;
29
//        private class WriterTask extends AbstractMonitorableTask
30
//        {
31
//                FLyrVect lyrVect;
32
//                IWriter writer;
33
//                int rowCount;
34
//                ReadableVectorial va;
35
//                SelectableDataSource sds;
36
//                FBitSet bitSet;
37
//                MapContext mapContext;
38
//                VectorialDriver reader;
39
//
40
//                public WriterTask(MapContext mapContext, FLyrVect lyr, IWriter writer, Driver reader) throws ReadDriverException
41
//                {
42
//                        this.mapContext = mapContext;
43
//                        this.lyrVect = lyr;
44
//                        this.writer = writer;
45
//                        this.reader = (VectorialDriver) reader;
46
//
47
//                        setInitialStep(0);
48
//                        setDeterminatedProcess(true);
49
//                        setStatusMessage(PluginServices.getText(this, "exportando_features"));
50
//
51
//                        va = lyrVect.getSource();
52
//                        sds = lyrVect.getRecordset();
53
//
54
//                        bitSet = sds.getSelection();
55
//
56
//                        if (bitSet.cardinality() == 0)
57
//                                rowCount = va.getShapeCount();
58
//                        else
59
//                                rowCount = bitSet.cardinality();
60
//
61
//                        setFinalStep(rowCount);
62
//
63
//                }
64
//                public void run() throws Exception {
65
//                        va.start();
66
//                        ICoordTrans ct = lyrVect.getCoordTrans();
67
//                        DriverAttributes attr = va.getDriverAttributes();
68
//                        boolean bMustClone = false;
69
//                        if (attr != null) {
70
//                                if (attr.isLoadedInMemory()) {
71
//                                        bMustClone = attr.isLoadedInMemory();
72
//                                }
73
//                        }
74
//                        if (lyrVect instanceof FLyrAnnotation && lyrVect.getShapeType()!=FShape.POINT) {
75
//                                SHPLayerDefinition lyrDef=(SHPLayerDefinition)writer.getTableDefinition();
76
//                                lyrDef.setShapeType(FShape.POINT);
77
//                                writer.initialize(lyrDef);
78
//                        }
79
//
80
//                        // Creamos la tabla.
81
//                        writer.preProcess();
82
//
83
//                        if (bitSet.cardinality() == 0) {
84
//                                rowCount = va.getShapeCount();
85
//                                for (int i = 0; i < rowCount; i++) {
86
//                                        IGeometry geom = va.getShape(i);
87
//                                        if (geom == null) {
88
//                                                continue;
89
//                                        }
90
//                                        if (lyrVect instanceof FLyrAnnotation && geom.getGeometryType()!=FShape.POINT) {
91
//                                                Point2D p=FLabel.createLabelPoint((FShape)geom.getInternalShape());
92
//                                                geom=ShapeFactory.createPoint2D(p.getX(),p.getY());
93
//                                        }
94
//                                        if (ct != null) {
95
//                                                if (bMustClone)
96
//                                                        geom = geom.cloneGeometry();
97
//                                                geom.reProject(ct);
98
//                                        }
99
//                                        reportStep();
100
//                                        setNote(PluginServices.getText(this, "exporting_") + i);
101
//                                        if (isCanceled())
102
//                                                break;
103
//
104
//                                        if (geom != null) {
105
//                                                Value[] values = sds.getRow(i);
106
//                                                IFeature feat = new DefaultFeature(geom, values, "" + i);
107
//                                                DefaultRowEdited edRow = new DefaultRowEdited(feat,
108
//                                                                DefaultRowEdited.STATUS_ADDED, i);
109
//                                                writer.process(edRow);
110
//                                        }
111
//                                }
112
//                        } else {
113
//                                int counter = 0;
114
//                                for (int i = bitSet.nextSetBit(0); i >= 0; i = bitSet
115
//                                                .nextSetBit(i + 1)) {
116
//                                        IGeometry geom = va.getShape(i);
117
//                                        if (geom == null) {
118
//                                                continue;
119
//                                        }
120
//                                        if (lyrVect instanceof FLyrAnnotation && geom.getGeometryType()!=FShape.POINT) {
121
//                                                Point2D p=FLabel.createLabelPoint((FShape)geom.getInternalShape());
122
//                                                geom=ShapeFactory.createPoint2D(p.getX(),p.getY());
123
//                                        }
124
//                                        if (ct != null) {
125
//                                                if (bMustClone)
126
//                                                        geom = geom.cloneGeometry();
127
//                                                geom.reProject(ct);
128
//                                        }
129
//                                        reportStep();
130
//                                        setNote(PluginServices.getText(this, "exporting_") + counter);
131
//                                        if (isCanceled())
132
//                                                break;
133
//
134
//                                        if (geom != null) {
135
//                                                Value[] values = sds.getRow(i);
136
//                                                IFeature feat = new DefaultFeature(geom, values, "" + i);
137
//                                                DefaultRowEdited edRow = new DefaultRowEdited(feat,
138
//                                                                DefaultRowEdited.STATUS_ADDED, i);
139
//
140
//                                                writer.process(edRow);
141
//                                        }
142
//                                }
143
//
144
//                        }
145
//
146
//                        writer.postProcess();
147
//                        va.stop();
148
//                        if (reader != null){
149
//                                int res = JOptionPane.showConfirmDialog(
150
//                                        (JComponent) PluginServices.getMDIManager().getActiveWindow()
151
//                                        , PluginServices.getText(this, "insertar_en_la_vista_la_capa_creada"),
152
//                                        PluginServices.getText(this,"insertar_capa"),
153
//                                        JOptionPane.YES_NO_OPTION);
154
//
155
//                                if (res == JOptionPane.YES_OPTION)
156
//                                {
157
//                                        PostProcessSupport.executeCalls();
158
//                                        ILayerDefinition lyrDef = (ILayerDefinition) writer.getTableDefinition();
159
//                                        FLayer newLayer = LayerFactory.createLayer(
160
//                                                        lyrDef.getName(), reader, mapContext.getProjection());
161
//                                        mapContext.getLayers().addLayer(newLayer);
162
//                                }
163
//                        }
164
//
165
//                }
166
//                /* (non-Javadoc)
167
//                 * @see com.iver.utiles.swing.threads.IMonitorableTask#finished()
168
//                 */
169
//                public void finished() {
170
//                        // TODO Auto-generated method stub
171
//
172
//                }
173
//
174
//        }
175
//        private class MultiWriterTask extends AbstractMonitorableTask{
176
//                Vector tasks=new Vector();
177
//                public void addTask(WriterTask wt) {
178
//                        tasks.add(wt);
179
//                }
180
//                public void run() throws Exception {
181
//                        for (int i = 0; i < tasks.size(); i++) {
182
//                                ((WriterTask)tasks.get(i)).run();
183
//                        }
184
//                        tasks.clear();
185
//                }
186
//                /* (non-Javadoc)
187
//                 * @see com.iver.utiles.swing.threads.IMonitorableTask#finished()
188
//                 */
189
//                public void finished() {
190
//                        // TODO Auto-generated method stub
191
//
192
//                }
193
//
194
//
195
//        }
196
        /**
197
         * @see com.iver.andami.plugins.IExtension#initialize()
198
         */
199
        public void initialize() {
200
        }
201

    
202
        /**
203
         * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
204
         */
205
        public void execute(String actionCommand) {
206
                com.iver.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager()
207
                                .getActiveWindow();
208

    
209
                if (f instanceof View) {
210
                        View vista = (View) f;
211
                        IProjectView model = vista.getModel();
212
                        MapContext mapa = model.getMapContext();
213
                        FLayers layers = mapa.getLayers();
214
                        FLayer[] actives = layers.getActives();
215
                        try {
216
                                // NOTA: SI HAY UNA SELECCI?N, SOLO SE SALVAN LOS SELECCIONADOS
217
                                for (int i = 0; i < actives.length; i++) {
218
                                        if (actives[i] instanceof FLyrVect) {
219
                                                FLyrVect lv = (FLyrVect) actives[i];
220
                                                saveToDXF(mapa,lv);
221

    
222

    
223

    
224
                                                /////////
225

    
226
//                                                int numSelec = lv.getRecordset().getSelection()
227
//                                                                .cardinality();
228
//                                                if (numSelec > 0) {
229
//                                                        int resp = JOptionPane.showConfirmDialog(
230
//                                                                        (Component) PluginServices.getMainFrame(),
231
//                                                                        PluginServices.getText(this,"se_van_a_guardar_") + numSelec
232
//                                                                                        + PluginServices.getText(this,"features_desea_continuar"),
233
//                                                                        PluginServices.getText(this,"export_to"), JOptionPane.YES_NO_OPTION);
234
//                                                        if (resp != JOptionPane.YES_OPTION) {
235
//                                                                continue;
236
//                                                        }
237
//                                                } // if numSelec > 0
238
//                                                if (actionCommand.equals("SHP")) {
239
//                                                        saveToShp(mapa, lv);
240
//                                                }
241
//                                                if (actionCommand.equals("DXF")) {
242
//                                                        saveToDxf(mapa, lv);
243
//                                                }
244
//                                                if (actionCommand.equals("POSTGIS")) {
245
//                                                        saveToPostGIS(mapa, lv);
246
//                                                }
247
//                                                if (actionCommand.equals("GML")) {
248
//                                                        saveToGml(mapa, lv);
249
//                                                }
250
                                        } // actives[i]
251
                                } // for
252
                        } catch (ReadException e) {
253
                                NotificationManager.showMessageError(e.getMessage(),e);
254
                        } catch (DataException e) {
255
                                NotificationManager.showMessageError(e.getMessage(),e);
256
                        }
257

    
258
                }
259
        }
260

    
261
//        public void saveToPostGIS(MapContext mapContext, FLyrVect layer){
262
//                try {
263
//                        String tableName = JOptionPane.showInputDialog(PluginServices
264
//                                        .getText(this, "intro_tablename"));
265
//                        if (tableName == null)
266
//                                return;
267
//                        tableName = tableName.toLowerCase();
268
//                        DlgConnection dlg = new DlgConnection();
269
//                        dlg.setModal(true);
270
//                        dlg.setVisible(true);
271
//                        ConnectionSettings cs = dlg.getConnSettings();
272
//                        if (cs == null)
273
//                                return;
274
//                        IConnection conex = ConnectionFactory.createConnection(cs
275
//                                        .getConnectionString(), cs.getUser(), cs.getPassw());
276
//
277
//
278
//                        DBLayerDefinition originalDef = null;
279
//                        if (layer.getSource().getDriver() instanceof IVectorialDatabaseDriver) {
280
//                                originalDef=((IVectorialDatabaseDriver) layer.getSource().getDriver()).getLyrDef();
281
//                        }
282
//
283
//
284
//                        DBLayerDefinition dbLayerDef = new DBLayerDefinition();
285
//                        // Fjp:
286
//                        // Cambio: En Postgis, el nombre de cat?logo est? siempre vac?o. Es algo heredado de Oracle, que no se usa.
287
//                        // dbLayerDef.setCatalogName(cs.getDb());
288
//                        dbLayerDef.setCatalogName("");
289
//
290
//                        // A?adimos el schema dentro del layer definition para poder tenerlo en cuenta.
291
//                        dbLayerDef.setSchema(cs.getSchema());
292
//
293
//                        dbLayerDef.setTableName(tableName);
294
//                        dbLayerDef.setName(tableName);
295
//                        dbLayerDef.setShapeType(layer.getShapeType());
296
//                        SelectableDataSource sds = layer.getRecordset();
297
//
298
//                        FieldDescription[] fieldsDescrip = sds.getFieldsDescription();
299
//                        dbLayerDef.setFieldsDesc(fieldsDescrip);
300
//                // Creamos el driver. OJO: Hay que a?adir el campo ID a la
301
//                // definici?n de campos.
302
//
303
//                        if (originalDef != null){
304
//                                dbLayerDef.setFieldID(originalDef.getFieldID());
305
//                                dbLayerDef.setFieldGeometry(originalDef.getFieldGeometry());
306
//
307
//                        }else{
308
//                                // Search for id field name
309
//                                int index=0;
310
//                                String fieldName="gid";
311
//                                while (findFileByName(fieldsDescrip,fieldName) != -1){
312
//                                        index++;
313
//                                        fieldName="gid"+index;
314
//                                }
315
//                                dbLayerDef.setFieldID(fieldName);
316
//
317
//                                // search for geom field name
318
//                                index=0;
319
//                                fieldName="the_geom";
320
//                                while (findFileByName(fieldsDescrip,fieldName) != -1){
321
//                                        index++;
322
//                                        fieldName="the_geom"+index;
323
//                                }
324
//                                dbLayerDef.setFieldGeometry(fieldName);
325
//
326
//                        }
327
//
328
//                        // if id field dosen't exist we add it
329
//                        if (findFileByName(fieldsDescrip,dbLayerDef.getFieldID()) == -1)
330
//                        {
331
//                        int numFieldsAnt = fieldsDescrip.length;
332
//                        FieldDescription[] newFields = new FieldDescription[dbLayerDef.getFieldsDesc().length + 1];
333
//                    for (int i=0; i < numFieldsAnt; i++)
334
//                    {
335
//                            newFields[i] = fieldsDescrip[i];
336
//                    }
337
//                    newFields[numFieldsAnt] = new FieldDescription();
338
//                    newFields[numFieldsAnt].setFieldDecimalCount(0);
339
//                    newFields[numFieldsAnt].setFieldType(Types.INTEGER);
340
//                    newFields[numFieldsAnt].setFieldLength(7);
341
//                    newFields[numFieldsAnt].setFieldName("gid");
342
//                    dbLayerDef.setFieldsDesc(newFields);
343
//
344
//                }
345
//
346
//
347
//                        dbLayerDef.setWhereClause("");
348
//                        String strSRID = layer.getProjection().getAbrev();
349
//                        dbLayerDef.setSRID_EPSG(strSRID);
350
//                        dbLayerDef.setConnection(conex);
351
//
352
//                        PostGISWriter writer=(PostGISWriter)LayerFactory.getWM().getWriter("PostGIS Writer");
353
//                        writer.setWriteAll(true);
354
//                        writer.setCreateTable(true);
355
//                        writer.initialize(dbLayerDef);
356
//                        PostGisDriver postGISDriver=new PostGisDriver();
357
//                        postGISDriver.setLyrDef(dbLayerDef);
358
//                        postGISDriver.open();
359
//                        PostProcessSupport.clearList();
360
//                        Object[] params = new Object[2];
361
//                        params[0] = conex;
362
//                        params[1] = dbLayerDef;
363
//                        PostProcessSupport.addToPostProcess(postGISDriver, "setData",
364
//                                        params, 1);
365
//
366
//                        writeFeatures(mapContext, layer, writer, postGISDriver);
367
//
368
//                } catch (DriverLoadException e) {
369
//                        NotificationManager.addError(e.getMessage(),e);
370
//                } catch (DBException e) {
371
//                        NotificationManager.addError(e.getMessage(),e);
372
//                } catch (InitializeWriterException e) {
373
//                        NotificationManager.addError(e.getMessage(),e);
374
//                } catch (ReadDriverException e) {
375
//                        NotificationManager.addError(e.getMessage(),e);
376
//                }
377
//
378
//        }
379

    
380
        /**
381
         * Lanza un thread en background que escribe las features. Cuando termina, pregunta al usuario si quiere
382
         * a?adir la nueva capa a la vista. Para eso necesita un driver de lectura ya configurado.
383
         * @param mapContext
384
         * @param layer
385
         * @param writer
386
         * @param reader
387
         * @throws ReadDriverException
388
         * @throws DriverException
389
         * @throws DriverIOException
390
         */
391
//        private void writeFeatures(MapContext mapContext, FLyrVect layer, IWriter writer, Driver reader) throws ReadDriverException
392
//        {
393
//                PluginServices.cancelableBackgroundExecution(new WriterTask(mapContext, layer, writer, reader));
394
//        }
395
//        private void writeMultiFeatures(MapContext mapContext, FLyrVect layers, IWriter[] writers, Driver[] readers) throws ReadDriverException{
396
//                MultiWriterTask mwt=new MultiWriterTask();
397
//                for (int i=0;i<writers.length;i++) {
398
//                        mwt.addTask(new WriterTask(mapContext, layers, writers[i], readers[i]));
399
//                }
400
//                PluginServices.cancelableBackgroundExecution(mwt);
401
//        }
402
        /**
403
         * @param layer
404
         *            FLyrVect to obtain features. If selection, only selected
405
         *            features will be precessed.
406
         * @param writer
407
         *            (Must be already initialized)
408
         * @throws DataException
409
         * @throws ReadException
410
         * @throws ReadDriverException
411
         * @throws ProcessWriterException
412
         * @throws ExpansionFileReadException
413
         * @throws EditionException
414
         * @throws DriverException
415
         * @throws DriverIOException
416
         * @throws com.hardcode.gdbms.engine.data.driver.DriverException
417
         */
418
//        public void writeFeaturesNoThread(FLyrVect layer, IWriter writer) throws ReadDriverException, VisitorException, ExpansionFileReadException{
419
//                ReadableVectorial va = layer.getSource();
420
//                SelectableDataSource sds = layer.getRecordset();
421
//
422
//                // Creamos la tabla.
423
//                writer.preProcess();
424
//
425
//                int rowCount;
426
//                FBitSet bitSet = layer.getRecordset().getSelection();
427
//
428
//                if (bitSet.cardinality() == 0)
429
//                        rowCount = va.getShapeCount();
430
//                else
431
//                        rowCount = bitSet.cardinality();
432
//
433
//                ProgressMonitor progress = new ProgressMonitor(
434
//                                (JComponent) PluginServices.getMDIManager().getActiveWindow(),
435
//                                PluginServices.getText(this, "exportando_features"),
436
//                                PluginServices.getText(this, "exportando_features"), 0,
437
//                                rowCount);
438
//
439
//                progress.setMillisToDecideToPopup(200);
440
//                progress.setMillisToPopup(500);
441
//
442
//                if (bitSet.cardinality() == 0) {
443
//                        rowCount = va.getShapeCount();
444
//                        for (int i = 0; i < rowCount; i++) {
445
//                                IGeometry geom = va.getShape(i);
446
//
447
//                                progress.setProgress(i);
448
//                                if (progress.isCanceled())
449
//                                        break;
450
//
451
//                                if (geom != null) {
452
//                                        Value[] values = sds.getRow(i);
453
//                                        IFeature feat = new DefaultFeature(geom, values, "" + i);
454
//                                        DefaultRowEdited edRow = new DefaultRowEdited(feat,
455
//                                                        IRowEdited.STATUS_ADDED, i);
456
//                                        writer.process(edRow);
457
//                                }
458
//                        }
459
//                } else {
460
//                        int counter = 0;
461
//                        for (int i = bitSet.nextSetBit(0); i >= 0; i = bitSet
462
//                                        .nextSetBit(i + 1)) {
463
//                                IGeometry geom = va.getShape(i);
464
//
465
//                                progress.setProgress(counter++);
466
//                                if (progress.isCanceled())
467
//                                        break;
468
//
469
//                                if (geom != null) {
470
//                                        Value[] values = sds.getRow(i);
471
//                                        IFeature feat = new DefaultFeature(geom, values, "" + i);
472
//                                        DefaultRowEdited edRow = new DefaultRowEdited(feat,
473
//                                                        IRowEdited.STATUS_ADDED, i);
474
//
475
//                                        writer.process(edRow);
476
//                                }
477
//                        }
478
//
479
//                }
480
//
481
//                writer.postProcess();
482
//                progress.close();
483
//        }
484

    
485
//        public void saveToDxf(MapContext mapContext, FLyrVect layer)  {
486
//                try {
487
//                        JFileChooser jfc = new JFileChooser(lastPath);
488
//                        SimpleFileFilter filterShp = new SimpleFileFilter("dxf",
489
//                                        PluginServices.getText(this, "dxf_files"));
490
//                        jfc.setFileFilter(filterShp);
491
//                        if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
492
//                                File newFile = jfc.getSelectedFile();
493
//                                String path = newFile.getAbsolutePath();
494
//                                if (!(path.toLowerCase().endsWith(".dxf"))) {
495
//                                        path = path + ".dxf";
496
//                                }
497
//                                newFile = new File(path);
498
//
499
//                                DxfWriter writer = (DxfWriter) LayerFactory.getWM().getWriter(
500
//                                                "DXF Writer");
501
//                                SHPLayerDefinition lyrDef = new SHPLayerDefinition();
502
//                                SelectableDataSource sds = layer.getRecordset();
503
//                                FieldDescription[] fieldsDescrip = sds.getFieldsDescription();
504
//                                lyrDef.setFieldsDesc(fieldsDescrip);
505
//                                lyrDef.setFile(newFile);
506
//                                lyrDef.setName(newFile.getName());
507
//                                lyrDef.setShapeType(layer.getShapeType());
508
//                                writer.setFile(newFile);
509
//                                writer.initialize(lyrDef);
510
//                                writer.setProjection(layer.getProjection());
511
//                                DxfFieldsMapping fieldsMapping = new DxfFieldsMapping();
512
//                                // TODO: Recuperar aqu? los campos del cuadro de di?logo.
513
//                                writer.setFieldMapping(fieldsMapping);
514
//                                DXFMemoryDriver dxfDriver=new DXFMemoryDriver();
515
//                                dxfDriver.open(newFile);
516
//                                writeFeatures(mapContext, layer, writer, dxfDriver);
517
//                                String fileName = newFile.getAbsolutePath();
518
//                                lastPath  = fileName.substring(0, fileName.lastIndexOf(File.separatorChar));
519
//                        }
520
//
521
//                } catch (ReadDriverException e) {
522
//                        NotificationManager.addError(e.getMessage(),e);
523
//                } catch (InitializeWriterException e) {
524
//                        NotificationManager.addError(e.getMessage(),e);
525
//                } catch (DriverLoadException e) {
526
//                        NotificationManager.addError(e.getMessage(),e);
527
//                }
528
//
529
//        }
530

    
531
        public void saveToDXF(MapContext mapContext, FLyrVect lv) throws ReadException, DataException {
532
                JFileChooser jfc = new JFileChooser(lastPath);
533
                SimpleFileFilter filterShp = new SimpleFileFilter("dxf",
534
                                PluginServices.getText(this, "dxf_files"));
535
                jfc.setFileFilter(filterShp);
536
                if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
537
                        File newFile = jfc.getSelectedFile();
538
                        String path = newFile.getAbsolutePath();
539
                        if (!(path.toLowerCase().endsWith(".dxf"))) {
540
                                path = path + ".dxf";
541
                        }
542
                        newFile = new File(path);
543

    
544
                        DataManager datamanager=DALLocator.getDataManager();
545
                        DataServerExplorerParameters explorerParameters=datamanager.createServerExplorerParameters(DXFDataExplorer.DATASOURCE_NAME);
546
                        explorerParameters.setAttribute("file", newFile);
547
                        DataServerExplorer explorer=(DataServerExplorer)datamanager.createServerExplorer(explorerParameters);
548
                        FeatureStoreParameters storeParameters=(FeatureStoreParameters)datamanager.createStoreParameters(DXFStore.DATASTORE_NAME);
549

    
550
                        lv.getFeatureStore().export(explorer, storeParameters);
551
                }
552
        }
553

    
554

    
555
//        public void saveToShp(MapContext mapContext, FLyrVect layer) {
556
//                try {
557
//                        JFileChooser jfc = new JFileChooser();
558
//                        SimpleFileFilter filterShp = new SimpleFileFilter("shp",
559
//                                        PluginServices.getText(this, "shp_files"));
560
//                        jfc.setFileFilter(filterShp);
561
//                        if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
562
//                                File newFile = jfc.getSelectedFile();
563
//                                String path = newFile.getAbsolutePath();
564
//                                if( newFile.exists()){
565
//                                        int resp = JOptionPane.showConfirmDialog(
566
//                                                        (Component) PluginServices.getMainFrame(),PluginServices.getText(this,"fichero_ya_existe_seguro_desea_guardarlo"),
567
//                                                        PluginServices.getText(this,"guardar"), JOptionPane.YES_NO_OPTION);
568
//                                        if (resp != JOptionPane.YES_OPTION) {
569
//                                                return;
570
//                                        }
571
//                                }
572
//                                if (!(path.toLowerCase().endsWith(".shp"))) {
573
//                                        path = path + ".shp";
574
//                                }
575
//                                newFile = new File(path);
576
//
577
//
578
//
579
//                                SelectableDataSource sds = layer.getRecordset();
580
//                                FieldDescription[] fieldsDescrip = sds.getFieldsDescription();
581
//
582
//                                if (layer.getShapeType() == FShape.MULTI) // Exportamos a 3
583
//                                // ficheros
584
//                                {
585
//                                        ShpWriter writer1 = (ShpWriter) LayerFactory.getWM().getWriter(
586
//                                        "Shape Writer");
587
//                                        Driver[] drivers=new Driver[3];
588
//                                        ShpWriter[] writers=new ShpWriter[3];
589
//
590
//                                        // puntos
591
//                                        String auxPoint = path.replaceFirst(".shp", "_points.shp");
592
//
593
//                                        SHPLayerDefinition lyrDefPoint = new SHPLayerDefinition();
594
//                                        lyrDefPoint.setFieldsDesc(fieldsDescrip);
595
//                                        File filePoints = new File(auxPoint);
596
//                                        lyrDefPoint.setFile(filePoints);
597
//                                        lyrDefPoint.setName(filePoints.getName());
598
//                                        lyrDefPoint.setShapeType(FShape.POINT);
599
//                                        writer1.setFile(filePoints);
600
//                                        writer1.initialize(lyrDefPoint);
601
//                                        writers[0]=writer1;
602
//                                        drivers[0]=getOpenShpDriver(filePoints);
603
//                                        //drivers[0]=null;
604
//
605
//
606
//
607
//                                        ShpWriter writer2 = (ShpWriter) LayerFactory.getWM().getWriter(
608
//                                        "Shape Writer");
609
//                                        // Lineas
610
//                                        String auxLine = path.replaceFirst(".shp", "_line.shp");
611
//                                        SHPLayerDefinition lyrDefLine = new SHPLayerDefinition();
612
//                                        lyrDefLine.setFieldsDesc(fieldsDescrip);
613
//
614
//                                        File fileLines = new File(auxLine);
615
//                                        lyrDefLine.setFile(fileLines);
616
//                                        lyrDefLine.setName(fileLines.getName());
617
//                                        lyrDefLine.setShapeType(FShape.LINE);
618
//                                        writer2.setFile(fileLines);
619
//                                        writer2.initialize(lyrDefLine);
620
//                                        writers[1]=writer2;
621
//                                        drivers[1]=getOpenShpDriver(fileLines);
622
//                                        //drivers[1]=null;
623
//
624
//                                        ShpWriter writer3 = (ShpWriter) LayerFactory.getWM().getWriter(
625
//                                        "Shape Writer");
626
//                                        // Pol?gonos
627
//                                        String auxPolygon = path.replaceFirst(".shp", "_polygons.shp");
628
//                                        SHPLayerDefinition lyrDefPolygon = new SHPLayerDefinition();
629
//                                        lyrDefPolygon.setFieldsDesc(fieldsDescrip);
630
//                                        File filePolygons = new File(auxPolygon);
631
//                                        lyrDefPolygon.setFile(filePolygons);
632
//                                        lyrDefPolygon.setName(filePolygons.getName());
633
//                                        lyrDefPolygon.setShapeType(FShape.POLYGON);
634
//                                        writer3.setFile(filePolygons);
635
//                                        writer3.initialize(lyrDefPolygon);
636
//                                        writers[2]=writer3;
637
//                                        drivers[2]=getOpenShpDriver(filePolygons);
638
//                                        //drivers[2]=null;
639
//
640
//                                        writeMultiFeatures(mapContext,layer, writers, drivers);
641
//                                } else {
642
//                                        ShpWriter writer = (ShpWriter) LayerFactory.getWM().getWriter(
643
//                                                "Shape Writer");
644
//                                        IndexedShpDriver drv = getOpenShpDriver(newFile);
645
//                                        SHPLayerDefinition lyrDef = new SHPLayerDefinition();
646
//                                        lyrDef.setFieldsDesc(fieldsDescrip);
647
//                                        lyrDef.setFile(newFile);
648
//                                        lyrDef.setName(newFile.getName());
649
//                                        lyrDef.setShapeType(layer.getShapeType());
650
//                                        writer.setFile(newFile);
651
//                                        writer.initialize(lyrDef);
652
//                                        // CODIGO PARA EXPORTAR UN SHP A UN CHARSET DETERMINADO
653
//                                        // ES UTIL PARA QUE UN DBF SE VEA CORRECTAMENTE EN EXCEL, POR EJEMPLO
654
////                                        Charset resul = (Charset) JOptionPane.showInputDialog((Component)PluginServices.getMDIManager().getActiveWindow(),
655
////                                                                PluginServices.getText(ExportTo.class, "select_charset_for_writing"),
656
////                                                                "Charset", JOptionPane.QUESTION_MESSAGE, null,
657
////                                                                Charset.availableCharsets().values().toArray(),
658
////                                                                writer.getCharsetForWriting().displayName());
659
////                                        if (resul == null)
660
////                                                return;
661
////                                        Charset charset = resul;
662
////                                        writer.setCharsetForWriting(charset);
663
//                                        writeFeatures(mapContext, layer, writer, drv);
664
//
665
//                                }
666
//                        }
667
//                } catch (InitializeWriterException e) {
668
//                        NotificationManager.addError(e.getMessage(),e);
669
//                } catch (OpenDriverException e) {
670
//                        NotificationManager.addError(e.getMessage(),e);
671
//                } catch (ReadDriverException e) {
672
//                        NotificationManager.addError(e.getMessage(),e);
673
//                } catch (DriverLoadException e) {
674
//                        NotificationManager.addError(e.getMessage(),e);
675
//                }
676
//
677
//        }
678
        /**
679
         * This method saves a layer to GML
680
         * @param mapContext
681
         * @param layer
682
         * @throws EditionException
683
         * @throws DriverIOException
684
         */
685
//        public void saveToGml(MapContext mapContext, FLyrVect layer)  {
686
//                try {
687
//                        JFileChooser jfc = new JFileChooser();
688
//                        SimpleFileFilter filterShp = new SimpleFileFilter("gml",
689
//                                        PluginServices.getText(this, "gml_files"));
690
//                        jfc.setFileFilter(filterShp);
691
//                        if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
692
//                                File newFile = jfc.getSelectedFile();
693
//                                String path = newFile.getAbsolutePath();
694
//                                if (!(path.toLowerCase().endsWith(".gml"))) {
695
//                                        path = path + ".gml";
696
//                                }
697
//                                newFile = new File(path);
698
//
699
//                                GMLWriter writer = (GMLWriter)LayerFactory.getWM().getWriter("GML Writer");
700
//
701
//                                SHPLayerDefinition lyrDef = new SHPLayerDefinition();
702
//                                SelectableDataSource sds = layer.getRecordset();
703
//                                FieldDescription[] fieldsDescrip = sds.getFieldsDescription();
704
//                                lyrDef.setFieldsDesc(fieldsDescrip);
705
//                                lyrDef.setName(newFile.getName());
706
//                                lyrDef.setShapeType(layer.getShapeType());
707
//
708
//                                writer.setFile(newFile);
709
//                                writer.setSchema(lyrDef);
710
//                                writer.setBoundedBy(layer.getFullExtent(),layer.getProjection());
711
//                                writer.initialize(lyrDef);
712
//                                GMLDriver gmlDriver=new GMLDriver();
713
//                                gmlDriver.open(newFile);
714
//                                writeFeatures(mapContext, layer, writer, gmlDriver);
715
//                        }
716
//
717
//                } catch (SchemaEditionException e) {
718
//                        NotificationManager.addError(e.getMessage(),e);
719
//                } catch (InitializeWriterException e) {
720
//                        NotificationManager.addError(e.getMessage(),e);
721
//                } catch (ReadDriverException e) {
722
//                        NotificationManager.addError(e.getMessage(),e);
723
//                } catch (DriverLoadException e) {
724
//                        NotificationManager.addError(e.getMessage(),e);
725
//                }
726
//
727
//        }
728
//        private IndexedShpDriver getOpenShpDriver(File fileShp) throws OpenDriverException {
729
//                IndexedShpDriver drv = new IndexedShpDriver();
730
//                if (!fileShp.exists()) {
731
//                        try {
732
//                                fileShp.createNewFile();
733
//                                File newFileSHX=new File(fileShp.getAbsolutePath().replaceAll("[.]shp",".shx"));
734
//                                newFileSHX.createNewFile();
735
//                                File newFileDBF=new File(fileShp.getAbsolutePath().replaceAll("[.]shp",".dbf"));
736
//                                newFileDBF.createNewFile();
737
//                        } catch (IOException e) {
738
//                                throw new FileNotFoundDriverException("SHP",e,fileShp.getAbsolutePath());
739
//                        }
740
//                }
741
//                drv.open(fileShp);
742
//                return drv;
743
//        }
744
        /**
745
         * @see com.iver.andami.plugins.IExtension#isEnabled()
746
         */
747
        public boolean isEnabled() {
748
                int status = EditionUtilities.getEditionStatus();
749
                if (( status == EditionUtilities.EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE || status == EditionUtilities.EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE)
750
                                || (status == EditionUtilities.EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE)|| (status == EditionUtilities.EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE))
751
                {
752
                        return true;
753
                }
754
                return false;
755
        }
756

    
757
        /**
758
         * @see com.iver.andami.plugins.IExtension#isVisible()
759
         */
760
        public boolean isVisible() {
761
                com.iver.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager()
762
                                .getActiveWindow();
763

    
764
                if (f == null) {
765
                        return false;
766
                }
767

    
768
                if (f instanceof View)
769
                        return true;
770
                return false;
771
        }
772

    
773
//        private int findFileByName(FieldDescription[] fields, String fieldName){
774
//        for (int i=0; i < fields.length; i++)
775
//        {
776
//                FieldDescription f = fields[i];
777
//                if (f.getFieldName().equalsIgnoreCase(fieldName))
778
//                {
779
//                        return i;
780
//                }
781
//        }
782
//
783
//                return -1;
784
//
785
//        }
786

    
787
}