Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / extensions / extEditing / src / com / iver / cit / gvsig / gui / cad / MyFinishAction.java @ 26312

History | View | Annotate | Download (12.5 KB)

1
package com.iver.cit.gvsig.gui.cad;
2

    
3
import java.awt.Component;
4
import java.io.File;
5
import java.sql.Driver;
6
import java.sql.Types;
7
import java.util.Iterator;
8

    
9
import javax.swing.JOptionPane;
10

    
11
import jwizardcomponent.FinishAction;
12
import jwizardcomponent.JWizardComponents;
13

    
14
import org.cresques.cts.IProjection;
15
import org.gvsig.fmap.crs.CRSFactory;
16
import org.gvsig.fmap.dal.DALLocator;
17
import org.gvsig.fmap.dal.DataManager;
18
import org.gvsig.fmap.dal.DataTypes;
19
import org.gvsig.fmap.dal.exception.ReadException;
20
import org.gvsig.fmap.dal.feature.EditableFeature;
21
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
22
import org.gvsig.fmap.dal.feature.EditableFeatureType;
23
import org.gvsig.fmap.dal.feature.Feature;
24
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
25
import org.gvsig.fmap.dal.feature.FeatureStore;
26
import org.gvsig.fmap.dal.feature.FeatureType;
27
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
28
import org.gvsig.fmap.dal.feature.impl.DefaultEditableFeatureType;
29
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
30
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
31
import org.gvsig.fmap.geom.primitive.FShape;
32
import org.gvsig.fmap.mapcontext.exceptions.StartEditionLayerException;
33
import org.gvsig.fmap.mapcontext.layers.LayerFactory;
34
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
35
import org.gvsig.fmap.mapcontrol.MapControl;
36
import org.gvsig.project.document.table.gui.Statistics.MyObjectStatistics;
37

    
38
import com.iver.andami.PluginServices;
39
import com.iver.andami.messages.NotificationManager;
40
import com.iver.cit.gvsig.CADExtension;
41
import com.iver.cit.gvsig.StartEditing;
42
import com.iver.cit.gvsig.gui.cad.panels.ChooseGeometryType;
43
import com.iver.cit.gvsig.gui.cad.panels.FileBasedPanel;
44
import com.iver.cit.gvsig.gui.cad.panels.JPanelFieldDefinition;
45
import com.iver.cit.gvsig.gui.cad.panels.PostGISpanel;
46
import com.iver.cit.gvsig.project.documents.view.gui.View;
47
import com.iver.cit.gvsig.vectorialdb.ConnectionSettings;
48

    
49
public class MyFinishAction extends FinishAction
50
{
51
        JWizardComponents myWizardComponents;
52
        FinishAction oldAction;
53
        FeatureType featureType = null;
54
        View view;
55
        String actionComand;
56
        public MyFinishAction(JWizardComponents wizardComponents, View view, String actionComand) {
57
                super(wizardComponents);
58
                oldAction = wizardComponents.getFinishAction();
59
                myWizardComponents = wizardComponents;
60
                this.view = view;
61
                this.actionComand = actionComand;
62
                // TODO Auto-generated constructor stub
63
        }
64

    
65
        public void performAction() {
66
                FLyrVect lyr = null;
67
                MapControl mapCtrl = view.getMapControl();
68
                try {
69
                        // ChooseWriteDriver driverPanel = (ChooseWriteDriver) myWizardComponents.getWizardPanel(0);
70
                        mapCtrl.getMapContext().beginAtomicEvent();
71
                        if (actionComand.equals("SHP")){
72
                                FileBasedPanel shpPanel = (FileBasedPanel) myWizardComponents.getWizardPanel(2);
73
                                String path=shpPanel.getPath();
74
                                if (!path.toLowerCase().endsWith(".shp")){
75
                                        path+=".shp";
76
                                }
77
                                File newFile = new File(path);
78
                                if( newFile.exists()){
79
                                        int resp = JOptionPane.showConfirmDialog(
80
                                                        (Component) PluginServices.getMainFrame(),PluginServices.getText(this,"fichero_ya_existe_seguro_desea_guardarlo"),
81
                                                        PluginServices.getText(this,"guardar"), JOptionPane.YES_NO_OPTION);
82
                                        if (resp != JOptionPane.YES_OPTION) {
83
                                                return;
84
                                        }
85
                                }
86
                                ChooseGeometryType geometryTypePanel = (ChooseGeometryType) myWizardComponents.getWizardPanel(0);
87
                                JPanelFieldDefinition fieldDefinitionPanel = (JPanelFieldDefinition) myWizardComponents.getWizardPanel(1);
88

    
89

    
90
                                String layerName = geometryTypePanel.getLayerName();
91
                                String selectedDriver = geometryTypePanel.getSelectedDriver();
92
                                int geometryType = geometryTypePanel.getSelectedGeometryType();
93
                                EditableFeatureType featureType = fieldDefinitionPanel.getFeatureType();
94

    
95
                                EditableFeatureAttributeDescriptor efad=featureType.add("GEOMETRY", DataTypes.GEOMETRY);
96
                                efad.setGeometryType(geometryType);
97
                                featureType.setDefaultGeometryAttributeName("GEOMETRY");
98

    
99
                                DataManager datamanager=DALLocator.getDataManager();
100
                                FilesystemServerExplorerParameters explorerParams=(FilesystemServerExplorerParameters) datamanager.createServerExplorerParameters(FilesystemServerExplorer.NAME);
101
                                explorerParams.setRoot(newFile.getParent());
102
                                FilesystemServerExplorer explorer=(FilesystemServerExplorer) datamanager.createServerExplorer(explorerParams);
103
                                NewFeatureStoreParameters newParams = (NewFeatureStoreParameters) explorer.getAddParameters(newFile);
104

    
105
                                try {
106
                                        newParams.setDefaultFeatureType(featureType);
107
                                        explorer.add(newParams, true);
108
                                        DataManager manager = DALLocator.getDataManager();
109
                                        FeatureStore target = (FeatureStore) manager
110
                                                .createStore(newParams);
111
//                                        FeatureType targetType = target.getDefaultFeatureType();
112
                                        target.edit(FeatureStore.MODE_APPEND);
113
//                                        target.update(featureType);
114
                                        target.finishEditing();
115
                                        target.dispose();
116
                                } catch (Exception e) {
117
                                        e.printStackTrace();
118
                                }
119
                                lyr=(FLyrVect)LayerFactory.getInstance().createLayer(layerName, newParams, mapCtrl.getProjection());
120
                                lyr.setActive(true);
121
                                lyr.setVisible(true);
122
                                mapCtrl.getMapContext().getLayers().addLayer(lyr);
123
                                mapCtrl.getMapContext().endAtomicEvent();
124
                                lyr.addLayerListener(CADExtension.getEditionManager());
125
                                lyr.setEditing(true);
126
                        }
127

    
128

    
129

    
130

    
131

    
132

    
133

    
134

    
135

    
136

    
137

    
138

    
139

    
140

    
141
//                                Driver drv = LayerFactory.getDM().getDriver(selectedDriver);
142
//
143
//
144
//
145
//                        SHPLayerDefinition lyrDef = new SHPLayerDefinition();
146
//                        lyrDef.setFieldsDesc(fieldsDesc);
147
//                        lyrDef.setFile(newFile);
148
//                        lyrDef.setName(layerName);
149
//                        lyrDef.setShapeType(geometryType);
150
//                            ShpWriter writer= (ShpWriter)LayerFactory.getWM().getWriter("Shape Writer");
151
//                            writer.setFile(newFile);
152
//                            writer.initialize(lyrDef);
153
//                            writer.preProcess();
154
//                            writer.postProcess();
155
//
156
//
157
//                lyr = (FLyrVect) LayerFactory.createLayer(layerName,
158
//                        (VectorialFileDriver) drv, newFile, mapCtrl.getProjection());
159
//
160
//                        }
161
//                        else if (actionComand.equals("DXF"))
162
//                        {
163
//                            FileBasedPanel dxfPanel = (FileBasedPanel) myWizardComponents.getWizardPanel(0);
164
//                            String path=dxfPanel.getPath();
165
//                                if (!path.toLowerCase().endsWith(".dxf")){
166
//                                        path+=".dxf";
167
//                                }
168
//                            File newFile = new File(path);
169
//                        if( newFile.exists()){
170
//                                        int resp = JOptionPane.showConfirmDialog(
171
//                                                        (Component) PluginServices.getMainFrame(),PluginServices.getText(this,"fichero_ya_existe_seguro_desea_guardarlo"),
172
//                                                        PluginServices.getText(this,"guardar"), JOptionPane.YES_NO_OPTION);
173
//                                        if (resp != JOptionPane.YES_OPTION) {
174
//                                                return;
175
//                                        }
176
//                                }
177
//                        DXFLayerDefinition lyrDef = new DXFLayerDefinition();
178
//                        lyrDef.setFile(newFile);
179
//                        String layerName = newFile.getName();
180
//                        lyrDef.setName(layerName);
181
//                            DxfWriter writer= (DxfWriter)LayerFactory.getWM().getWriter("DXF Writer");
182
//                            writer.setFile(newFile);
183
//                            DxfFieldsMapping fieldsMapping = new DxfFieldsMapping();
184
//                            fieldsMapping.setLayerField("Layer");
185
//                            fieldsMapping.setColorField("Color");
186
//                            fieldsMapping.setElevationField("Elevation");
187
//                            fieldsMapping.setThicknessField("Thickness");
188
//                            fieldsMapping.setTextField("Text");
189
//                            fieldsMapping.setHeightText("HeightText");
190
//                            fieldsMapping.setRotationText("RotationText");
191
//                            writer.setFieldMapping(fieldsMapping);
192
//                            writer.setProjection(mapCtrl.getProjection());
193
//                            writer.initialize(lyrDef);
194
//                            writer.preProcess();
195
//                            writer.postProcess();
196
//                            Driver drv = LayerFactory.getDM().getDriver("gvSIG DXF Memory Driver");
197
//
198
//                lyr = (FLyrVect) LayerFactory.createLayer(layerName,
199
//                        (VectorialFileDriver) drv, newFile, mapCtrl.getProjection());
200
//
201
//                        }
202
//                        else if (actionComand.equals("POSTGIS"))
203
//                        {
204
//                                ChooseGeometryType geometryTypePanel = (ChooseGeometryType) myWizardComponents.getWizardPanel(0);
205
//                                JPanelFieldDefinition fieldDefinitionPanel = (JPanelFieldDefinition) myWizardComponents.getWizardPanel(1);
206
//
207
//
208
//                                String layerName = geometryTypePanel.getLayerName();
209
//                                String selectedDriver = geometryTypePanel.getSelectedDriver();
210
//                                int geometryType = geometryTypePanel.getSelectedGeometryType();
211
//                                FieldDescription[] fieldsDesc = fieldDefinitionPanel.getFieldsDescription();
212
//
213
//                                Driver drv = LayerFactory.getDM().getDriver(selectedDriver);
214
//
215
//                                IVectorialJDBCDriver dbDriver = (IVectorialJDBCDriver) drv;
216
//                            PostGISpanel postgisPanel = (PostGISpanel) myWizardComponents.getWizardPanel(2);
217
//                                ConnectionSettings cs = postgisPanel.getConnSettings();
218
//                                if (cs == null)
219
//                                        return;
220
//                                IConnection conex = ConnectionFactory.createConnection(cs.getConnectionString(),
221
//                                                cs.getUser(), cs.getPassw());
222
//
223
//                                DBLayerDefinition dbLayerDef = new DBLayerDefinition();
224
//                                dbLayerDef.setCatalogName(cs.getDb());
225
//                                dbLayerDef.setSchema(cs.getSchema());
226
//                                dbLayerDef.setTableName(layerName);
227
//                                dbLayerDef.setShapeType(geometryType);
228
//                                dbLayerDef.setFieldsDesc(fieldsDesc);
229
//                                dbLayerDef.setFieldGeometry("the_geom");
230
//                                dbLayerDef.setFieldID("gid");
231
//
232
//                                dbLayerDef.setWhereClause("");
233
//                                String strSRID = mapCtrl.getProjection().getAbrev()
234
//                                                .substring(5);
235
//                                dbLayerDef.setSRID_EPSG(strSRID);
236
//                                dbLayerDef.setConnection(conex);
237
//
238
//                            PostGISWriter writer= new PostGISWriter(); //(PostGISWriter)LayerFactory.getWM().getWriter("PostGIS Writer");
239
//                            writer.setWriteAll(true);
240
//                            writer.setCreateTable(true);
241
//                            writer.initialize(dbLayerDef);
242
//
243
//                            // Creamos la tabla.
244
//                            writer.preProcess();
245
//                            writer.postProcess();
246
//
247
//                    if (dbDriver instanceof ICanReproject)
248
//                    {
249
//                        ((ICanReproject)dbDriver).setDestProjection(strSRID);
250
//                    }
251
//
252
//                    // Creamos el driver. OJO: Hay que a?adir el campo ID a la
253
//                    // definici?n de campos.
254
//
255
//                    boolean bFound = false;
256
//                    for (int i=0; i < dbLayerDef.getFieldsDesc().length; i++)
257
//                    {
258
//                            FieldDescription f = dbLayerDef.getFieldsDesc()[i];
259
//                            if (f.getFieldName().equalsIgnoreCase(dbLayerDef.getFieldID()))
260
//                            {
261
//                                    bFound = true;
262
//                                    break;
263
//                            }
264
//                    }
265
//                    // Si no est?, lo a?adimos
266
//                    if (!bFound)
267
//                    {
268
//                            int numFieldsAnt = dbLayerDef.getFieldsDesc().length;
269
//                            FieldDescription[] newFields = new FieldDescription[dbLayerDef.getFieldsDesc().length + 1];
270
//                        for (int i=0; i < numFieldsAnt; i++)
271
//                        {
272
//                                newFields[i] = dbLayerDef.getFieldsDesc()[i];
273
//                        }
274
//                        newFields[numFieldsAnt] = new FieldDescription();
275
//                        newFields[numFieldsAnt].setFieldDecimalCount(0);
276
//                        newFields[numFieldsAnt].setFieldType(Types.INTEGER);
277
//                        newFields[numFieldsAnt].setFieldLength(7);
278
//                        newFields[numFieldsAnt].setFieldName(dbLayerDef.getFieldID());
279
//                        dbLayerDef.setFieldsDesc(newFields);
280
//
281
//                    }
282
//
283
//                    dbDriver.setData(conex, dbLayerDef);
284
//                    IProjection proj = null;
285
//                    if (drv instanceof ICanReproject)
286
//                    {
287
//                             proj = CRSFactory.getCRS("EPSG:" + ((ICanReproject)dbDriver).getSourceProjection(null,null));
288
//                    }
289
//
290
//                            lyr = (FLyrVect) LayerFactory.createDBLayer(dbDriver, layerName, proj);
291
//
292
//                        }
293
//                        else // Si no es ni lo uno ni lo otro,
294
//                        {
295
//
296
//
297
//                        }
298
                } catch (Exception e) {
299
                        NotificationManager.showMessageError(e.getMessage(),e);
300
                        return;
301
                }
302

    
303

    
304

    
305

    
306
//                try {
307
//                        lyr.setEditing(true);
308
//                VectorialEditableAdapter vea = (VectorialEditableAdapter) lyr.getSource();
309
//                        vea.getRules().clear();
310
//                        // TODO: ESTO ES PROVISIONAL, DESCOMENTAR LUEGO
311
//                        if (vea.getShapeType() == FShape.POLYGON)
312
//                        {
313
//                                IRule rulePol = new RulePolygon();
314
//                                vea.getRules().add(rulePol, false);
315
//                        }
316
//                        StartEditing.startCommandsApplicable(view,lyr);
317
//                vea.getCommandRecord().addCommandListener(mapCtrl);
318
//                view.showConsole();
319

    
320
                        // Para cerrar el cuadro de di?logo.
321
                        oldAction.performAction();
322
//                } catch (ReadException e) {
323
//                        NotificationManager.showMessageError(e.getMessage(),e);
324
//                } catch (StartEditionLayerException e) {
325
//                        NotificationManager.showMessageError(e.getMessage(),e);
326
//                }
327

    
328

    
329
        }
330

    
331
}
332