Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extCAD / src / com / iver / cit / gvsig / gui / cad / MyFinishAction.java @ 4740

History | View | Annotate | Download (6.02 KB)

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

    
3
import java.io.File;
4
import java.sql.Connection;
5
import java.sql.DriverManager;
6
import java.sql.Statement;
7

    
8
import jwizardcomponent.FinishAction;
9
import jwizardcomponent.JWizardComponents;
10

    
11
import org.cresques.cts.IProjection;
12
import org.cresques.cts.ProjectionPool;
13

    
14
import com.hardcode.driverManager.Driver;
15
import com.iver.cit.gvsig.CADExtension;
16
import com.iver.cit.gvsig.fmap.MapControl;
17
import com.iver.cit.gvsig.fmap.core.ICanReproject;
18
import com.iver.cit.gvsig.fmap.drivers.DBLayerDefinition;
19
import com.iver.cit.gvsig.fmap.drivers.FieldDescription;
20
import com.iver.cit.gvsig.fmap.drivers.ITableDefinition;
21
import com.iver.cit.gvsig.fmap.drivers.SHPLayerDefinition;
22
import com.iver.cit.gvsig.fmap.drivers.VectorialDatabaseDriver;
23
import com.iver.cit.gvsig.fmap.drivers.VectorialFileDriver;
24
import com.iver.cit.gvsig.fmap.drivers.VectorialJDBCDriver;
25
import com.iver.cit.gvsig.fmap.drivers.jdbc.postgis.PostGISWriter;
26
import com.iver.cit.gvsig.fmap.edition.VectorialEditableAdapter;
27
import com.iver.cit.gvsig.fmap.edition.writers.shp.ShpWriter;
28
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
29
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
30
import com.iver.cit.gvsig.gui.View;
31
import com.iver.cit.gvsig.gui.cad.panels.ChooseGeometryType;
32
import com.iver.cit.gvsig.gui.cad.panels.JPanelFieldDefinition;
33
import com.iver.cit.gvsig.gui.cad.panels.PostGISpanel;
34
import com.iver.cit.gvsig.gui.cad.panels.ShpPanel;
35
import com.iver.cit.gvsig.jdbc_spatial.gui.jdbcwizard.ConnectionSettings;
36

    
37
public class MyFinishAction extends FinishAction
38
{
39
        JWizardComponents myWizardComponents;
40
        FinishAction oldAction;
41
        ITableDefinition lyrDef = null;
42
        View view;
43
        String actionComand;
44
        public MyFinishAction(JWizardComponents wizardComponents, View view, String actionComand) {                
45
                super(wizardComponents);
46
                oldAction = wizardComponents.getFinishAction();
47
                myWizardComponents = wizardComponents;
48
                this.view = view;
49
                this.actionComand = actionComand;
50
                // TODO Auto-generated constructor stub
51
        }
52

    
53
        public void performAction() {
54
                FLyrVect lyr = null;
55
                MapControl mapCtrl = view.getMapControl();
56
                try {                        
57
                        // ChooseWriteDriver driverPanel = (ChooseWriteDriver) myWizardComponents.getWizardPanel(0);
58
                        ChooseGeometryType geometryTypePanel = (ChooseGeometryType) myWizardComponents.getWizardPanel(0);
59
                        JPanelFieldDefinition fieldDefinitionPanel = (JPanelFieldDefinition) myWizardComponents.getWizardPanel(1);
60
                        
61
                         
62
                        String layerName = geometryTypePanel.getLayerName();
63
                        String selectedDriver = geometryTypePanel.getSelectedDriver();
64
                        int geometryType = geometryTypePanel.getSelectedGeometryType();
65
                        FieldDescription[] fieldsDesc = fieldDefinitionPanel.getFieldsDescription();
66
                        
67
                        Driver drv = LayerFactory.getDM().getDriver(selectedDriver);                    
68
                        mapCtrl.getMapContext().beginAtomicEvent();
69
                        if (actionComand.equals("SHP"))
70
                        {
71
                            ShpPanel shpPanel = (ShpPanel) myWizardComponents.getWizardPanel(2);
72
                        File newFile = new File(shpPanel.getPath());
73
                        SHPLayerDefinition lyrDef = new SHPLayerDefinition();
74
                        lyrDef.setFieldsDesc(fieldsDesc);
75
                        lyrDef.setFile(newFile);
76
                        lyrDef.setName(layerName);
77
                        lyrDef.setShapeType(geometryType);
78
                            ShpWriter writer= (ShpWriter)LayerFactory.getWM().getWriter("Shape Writer");
79
                            writer.setFile(newFile);
80
                            writer.initialize(lyrDef);
81
                            writer.preProcess();
82
                            writer.postProcess();
83
                            
84
                                
85
                lyr = (FLyrVect) LayerFactory.createLayer(layerName,
86
                        (VectorialFileDriver) drv, newFile, mapCtrl.getProjection());
87
                                
88
                        }
89
                        else if (drv instanceof VectorialJDBCDriver)
90
                        {
91
                                VectorialJDBCDriver dbDriver = (VectorialJDBCDriver) drv;
92
                            PostGISpanel postgisPanel = (PostGISpanel) myWizardComponents.getWizardPanel(2);
93
                                ConnectionSettings cs = postgisPanel.getConnSettings();
94
                                if (cs == null)
95
                                        return;
96
                                Connection conex = DriverManager.getConnection(cs.getConnectionString(),
97
                                                cs.getUser(), cs.getPassw());
98

    
99
                                Statement st = conex.createStatement();
100

    
101
                                DBLayerDefinition dbLayerDef = new DBLayerDefinition();
102
                                dbLayerDef.setCatalogName(cs.getDb());
103
                                dbLayerDef.setTableName(layerName);
104
                                dbLayerDef.setShapeType(geometryType);
105
                                dbLayerDef.setFieldGeometry("the_geom");
106
                                dbLayerDef.setFieldsDesc(fieldsDesc);
107
                                String strSRID = mapCtrl.getProjection().getAbrev()
108
                                                .substring(5);
109
                                dbLayerDef.setSRID_EPSG(strSRID); 
110

    
111
                            PostGISWriter writer= (PostGISWriter)LayerFactory.getWM().getWriter("PostGIS Writer");
112
                            writer.setWriteAll(true);
113
                            writer.setCreateTable(true);
114
                            writer.initialize(dbLayerDef);
115

    
116
                            writer.preProcess();
117
                            writer.postProcess();
118
                            
119
                    if (dbDriver instanceof ICanReproject)
120
                    {                    
121
                        ((ICanReproject)dbDriver).setDestProjection(strSRID);
122
                    }
123
                    dbDriver.setData(conex, dbLayerDef);
124
                    IProjection proj = null; 
125
                    if (drv instanceof ICanReproject)
126
                    {                                        
127
                        proj = ProjectionPool.get("EPSG:" + ((ICanReproject)dbDriver).getSourceProjection()); 
128
                    }
129
                                
130
                            lyr = (FLyrVect) LayerFactory.createDBLayer(dbDriver, layerName, proj);
131
                                
132
                        }
133
                        else // Si no es ni lo uno ni lo otro, 
134
                        {
135
                                
136
                                
137
                        }
138
                } catch (Exception e) {
139
                        // TODO Auto-generated catch block
140
                        e.printStackTrace();
141
                }
142
        lyr.setVisible(true);
143
                mapCtrl.getMapContext().getLayers().addLayer(lyr);
144
                
145
                mapCtrl.getMapContext().endAtomicEvent();
146
                lyr.addLayerListener(CADExtension.getEditionManager());
147
                lyr.setActive(true);
148
                lyr.setEditing(true);
149
        VectorialEditableAdapter vea = (VectorialEditableAdapter) lyr.getSource();
150
        // TODO: Provisional, para que al poner
151
        // un tema en edici?n el CADToolAdapter se entere
152
        CADExtension.getCADToolAdapter().setVectorialAdapter(vea);
153
        vea.getCommandRecord().addCommandListener(mapCtrl);
154
        view.showConsole();
155
                
156
                // Para cerrar el cuadro de di?logo.
157
                oldAction.performAction();
158
                
159
        }
160
          
161
}
162