svn-gvsig-desktop / tags / v1_0_2_Build_900 / extensions / extCAD / src / com / iver / cit / gvsig / gui / cad / MyFinishAction.java @ 10562
History | View | Annotate | Download (10.6 KB)
1 | 4380 | fjp | package com.iver.cit.gvsig.gui.cad; |
---|---|---|---|
2 | |||
3 | 6157 | caballero | import java.awt.Component; |
4 | 4416 | fjp | import java.io.File; |
5 | 4740 | fjp | import java.sql.Connection; |
6 | import java.sql.DriverManager; |
||
7 | 4767 | fjp | import java.sql.Types; |
8 | 4416 | fjp | |
9 | 6157 | caballero | import javax.swing.JOptionPane; |
10 | |||
11 | 4380 | fjp | import jwizardcomponent.FinishAction; |
12 | import jwizardcomponent.JWizardComponents; |
||
13 | |||
14 | 4740 | fjp | import org.cresques.cts.IProjection; |
15 | |||
16 | import com.hardcode.driverManager.Driver; |
||
17 | 6157 | caballero | import com.iver.andami.PluginServices; |
18 | 5152 | fjp | import com.iver.andami.messages.NotificationManager; |
19 | 4421 | fjp | import com.iver.cit.gvsig.CADExtension; |
20 | 6022 | caballero | import com.iver.cit.gvsig.StartEditing; |
21 | 4416 | fjp | import com.iver.cit.gvsig.fmap.MapControl; |
22 | 5893 | fjp | import com.iver.cit.gvsig.fmap.core.FShape; |
23 | 4740 | fjp | import com.iver.cit.gvsig.fmap.core.ICanReproject; |
24 | 7703 | luisw2 | import com.iver.cit.gvsig.fmap.crs.CRSFactory; |
25 | 4740 | fjp | import com.iver.cit.gvsig.fmap.drivers.DBLayerDefinition; |
26 | 5152 | fjp | import com.iver.cit.gvsig.fmap.drivers.DXFLayerDefinition; |
27 | 5893 | fjp | import com.iver.cit.gvsig.fmap.drivers.DriverIOException; |
28 | 4385 | fjp | import com.iver.cit.gvsig.fmap.drivers.FieldDescription; |
29 | 4416 | fjp | import com.iver.cit.gvsig.fmap.drivers.ITableDefinition; |
30 | import com.iver.cit.gvsig.fmap.drivers.SHPLayerDefinition; |
||
31 | 4387 | fjp | import com.iver.cit.gvsig.fmap.drivers.VectorialFileDriver; |
32 | 4740 | fjp | import com.iver.cit.gvsig.fmap.drivers.VectorialJDBCDriver; |
33 | import com.iver.cit.gvsig.fmap.drivers.jdbc.postgis.PostGISWriter; |
||
34 | 5152 | fjp | import com.iver.cit.gvsig.fmap.edition.EditionException; |
35 | 4416 | fjp | import com.iver.cit.gvsig.fmap.edition.VectorialEditableAdapter; |
36 | 5893 | fjp | import com.iver.cit.gvsig.fmap.edition.rules.IRule; |
37 | import com.iver.cit.gvsig.fmap.edition.rules.RulePolygon; |
||
38 | 5152 | fjp | import com.iver.cit.gvsig.fmap.edition.writers.dxf.DxfFieldsMapping; |
39 | 4937 | fjp | import com.iver.cit.gvsig.fmap.edition.writers.dxf.DxfWriter; |
40 | 4416 | fjp | import com.iver.cit.gvsig.fmap.edition.writers.shp.ShpWriter; |
41 | 4421 | fjp | import com.iver.cit.gvsig.fmap.layers.FLyrVect; |
42 | 4385 | fjp | import com.iver.cit.gvsig.fmap.layers.LayerFactory; |
43 | import com.iver.cit.gvsig.gui.cad.panels.ChooseGeometryType; |
||
44 | 5152 | fjp | import com.iver.cit.gvsig.gui.cad.panels.FileBasedPanel; |
45 | 4385 | fjp | import com.iver.cit.gvsig.gui.cad.panels.JPanelFieldDefinition; |
46 | 4740 | fjp | import com.iver.cit.gvsig.gui.cad.panels.PostGISpanel; |
47 | import com.iver.cit.gvsig.jdbc_spatial.gui.jdbcwizard.ConnectionSettings; |
||
48 | 8765 | jjdelcerro | import com.iver.cit.gvsig.project.documents.view.gui.View; |
49 | 4385 | fjp | |
50 | 4380 | fjp | public class MyFinishAction extends FinishAction |
51 | { |
||
52 | JWizardComponents myWizardComponents; |
||
53 | FinishAction oldAction; |
||
54 | 4416 | fjp | ITableDefinition lyrDef = null;
|
55 | 4487 | fjp | View view;
|
56 | 4416 | fjp | String actionComand;
|
57 | 6022 | caballero | public MyFinishAction(JWizardComponents wizardComponents, View view, String actionComand) { |
58 | 4380 | fjp | super(wizardComponents);
|
59 | oldAction = wizardComponents.getFinishAction(); |
||
60 | myWizardComponents = wizardComponents; |
||
61 | 4487 | fjp | this.view = view;
|
62 | 4416 | fjp | this.actionComand = actionComand;
|
63 | 4380 | fjp | // TODO Auto-generated constructor stub
|
64 | } |
||
65 | |||
66 | public void performAction() { |
||
67 | 4487 | fjp | FLyrVect lyr = null;
|
68 | MapControl mapCtrl = view.getMapControl(); |
||
69 | 6022 | caballero | try {
|
70 | 4416 | fjp | // ChooseWriteDriver driverPanel = (ChooseWriteDriver) myWizardComponents.getWizardPanel(0);
|
71 | 4740 | fjp | mapCtrl.getMapContext().beginAtomicEvent(); |
72 | 4416 | fjp | if (actionComand.equals("SHP")) |
73 | 4387 | fjp | { |
74 | 6157 | caballero | FileBasedPanel shpPanel = (FileBasedPanel) myWizardComponents.getWizardPanel(2);
|
75 | File newFile = new File(shpPanel.getPath()); |
||
76 | if( newFile.exists()){
|
||
77 | int resp = JOptionPane.showConfirmDialog( |
||
78 | (Component) PluginServices.getMainFrame(),PluginServices.getText(this,"fichero_ya_existe_seguro_desea_guardarlo"), |
||
79 | PluginServices.getText(this,"guardar"), JOptionPane.YES_NO_OPTION); |
||
80 | if (resp != JOptionPane.YES_OPTION) { |
||
81 | return;
|
||
82 | } |
||
83 | } |
||
84 | 5152 | fjp | ChooseGeometryType geometryTypePanel = (ChooseGeometryType) myWizardComponents.getWizardPanel(0);
|
85 | JPanelFieldDefinition fieldDefinitionPanel = (JPanelFieldDefinition) myWizardComponents.getWizardPanel(1);
|
||
86 | 6022 | caballero | |
87 | |||
88 | 5152 | fjp | String layerName = geometryTypePanel.getLayerName();
|
89 | String selectedDriver = geometryTypePanel.getSelectedDriver();
|
||
90 | int geometryType = geometryTypePanel.getSelectedGeometryType();
|
||
91 | FieldDescription[] fieldsDesc = fieldDefinitionPanel.getFieldsDescription();
|
||
92 | 6022 | caballero | |
93 | Driver drv = LayerFactory.getDM().getDriver(selectedDriver);
|
||
94 | |||
95 | 6157 | caballero | |
96 | |||
97 | 4416 | fjp | SHPLayerDefinition lyrDef = new SHPLayerDefinition();
|
98 | lyrDef.setFieldsDesc(fieldsDesc); |
||
99 | lyrDef.setFile(newFile); |
||
100 | lyrDef.setName(layerName); |
||
101 | lyrDef.setShapeType(geometryType); |
||
102 | ShpWriter writer= (ShpWriter)LayerFactory.getWM().getWriter("Shape Writer");
|
||
103 | 4438 | fjp | writer.setFile(newFile); |
104 | writer.initialize(lyrDef); |
||
105 | 4416 | fjp | writer.preProcess(); |
106 | writer.postProcess(); |
||
107 | 6022 | caballero | |
108 | |||
109 | 4421 | fjp | lyr = (FLyrVect) LayerFactory.createLayer(layerName, |
110 | 4416 | fjp | (VectorialFileDriver) drv, newFile, mapCtrl.getProjection()); |
111 | 6022 | caballero | |
112 | 4387 | fjp | } |
113 | 4937 | fjp | else if (actionComand.equals("DXF")) |
114 | { |
||
115 | 6473 | caballero | FileBasedPanel dxfPanel = (FileBasedPanel) myWizardComponents.getWizardPanel(0);
|
116 | File newFile = new File(dxfPanel.getPath()); |
||
117 | if( newFile.exists()){
|
||
118 | int resp = JOptionPane.showConfirmDialog( |
||
119 | (Component) PluginServices.getMainFrame(),PluginServices.getText(this,"fichero_ya_existe_seguro_desea_guardarlo"), |
||
120 | PluginServices.getText(this,"guardar"), JOptionPane.YES_NO_OPTION); |
||
121 | if (resp != JOptionPane.YES_OPTION) { |
||
122 | return;
|
||
123 | } |
||
124 | } |
||
125 | 5152 | fjp | DXFLayerDefinition lyrDef = new DXFLayerDefinition();
|
126 | 4937 | fjp | lyrDef.setFile(newFile); |
127 | 5152 | fjp | String layerName = newFile.getName();
|
128 | 4937 | fjp | lyrDef.setName(layerName); |
129 | DxfWriter writer= (DxfWriter)LayerFactory.getWM().getWriter("DXF Writer");
|
||
130 | writer.setFile(newFile); |
||
131 | 5152 | fjp | DxfFieldsMapping fieldsMapping = new DxfFieldsMapping();
|
132 | fieldsMapping.setLayerField("Layer");
|
||
133 | fieldsMapping.setColorField("Color");
|
||
134 | fieldsMapping.setElevationField("Elevation");
|
||
135 | fieldsMapping.setThicknessField("Thickness");
|
||
136 | fieldsMapping.setTextField("Text");
|
||
137 | fieldsMapping.setHeightText("HeightText");
|
||
138 | fieldsMapping.setRotationText("RotationText");
|
||
139 | writer.setFieldMapping(fieldsMapping); |
||
140 | writer.setProjection(mapCtrl.getProjection()); |
||
141 | 4937 | fjp | writer.initialize(lyrDef); |
142 | writer.preProcess(); |
||
143 | writer.postProcess(); |
||
144 | 5152 | fjp | Driver drv = LayerFactory.getDM().getDriver("gvSIG DXF Memory Driver"); |
145 | 6022 | caballero | |
146 | 4937 | fjp | lyr = (FLyrVect) LayerFactory.createLayer(layerName, |
147 | (VectorialFileDriver) drv, newFile, mapCtrl.getProjection()); |
||
148 | 6022 | caballero | |
149 | } |
||
150 | 5152 | fjp | else if (actionComand.equals("POSTGIS")) |
151 | 4387 | fjp | { |
152 | 5152 | fjp | ChooseGeometryType geometryTypePanel = (ChooseGeometryType) myWizardComponents.getWizardPanel(0);
|
153 | JPanelFieldDefinition fieldDefinitionPanel = (JPanelFieldDefinition) myWizardComponents.getWizardPanel(1);
|
||
154 | 6022 | caballero | |
155 | |||
156 | 5152 | fjp | String layerName = geometryTypePanel.getLayerName();
|
157 | String selectedDriver = geometryTypePanel.getSelectedDriver();
|
||
158 | int geometryType = geometryTypePanel.getSelectedGeometryType();
|
||
159 | FieldDescription[] fieldsDesc = fieldDefinitionPanel.getFieldsDescription();
|
||
160 | 6022 | caballero | |
161 | Driver drv = LayerFactory.getDM().getDriver(selectedDriver);
|
||
162 | |||
163 | 4740 | fjp | VectorialJDBCDriver dbDriver = (VectorialJDBCDriver) drv; |
164 | PostGISpanel postgisPanel = (PostGISpanel) myWizardComponents.getWizardPanel(2);
|
||
165 | ConnectionSettings cs = postgisPanel.getConnSettings(); |
||
166 | 4416 | fjp | if (cs == null) |
167 | return;
|
||
168 | 4740 | fjp | Connection conex = DriverManager.getConnection(cs.getConnectionString(), |
169 | 4416 | fjp | cs.getUser(), cs.getPassw()); |
170 | |||
171 | 4740 | fjp | DBLayerDefinition dbLayerDef = new DBLayerDefinition();
|
172 | 4416 | fjp | dbLayerDef.setCatalogName(cs.getDb()); |
173 | 4740 | fjp | dbLayerDef.setTableName(layerName); |
174 | dbLayerDef.setShapeType(geometryType); |
||
175 | 4767 | fjp | dbLayerDef.setFieldsDesc(fieldsDesc); |
176 | 4416 | fjp | dbLayerDef.setFieldGeometry("the_geom");
|
177 | 4748 | fjp | dbLayerDef.setFieldID("gid");
|
178 | 6022 | caballero | |
179 | 4748 | fjp | dbLayerDef.setWhereClause("");
|
180 | 4740 | fjp | String strSRID = mapCtrl.getProjection().getAbrev()
|
181 | 4416 | fjp | .substring(5);
|
182 | 6022 | caballero | dbLayerDef.setSRID_EPSG(strSRID); |
183 | 4748 | fjp | dbLayerDef.setConnection(conex); |
184 | 4740 | fjp | |
185 | 4748 | fjp | PostGISWriter writer= new PostGISWriter(); //(PostGISWriter)LayerFactory.getWM().getWriter("PostGIS Writer"); |
186 | 4740 | fjp | writer.setWriteAll(true);
|
187 | writer.setCreateTable(true);
|
||
188 | writer.initialize(dbLayerDef); |
||
189 | |||
190 | 4767 | fjp | // Creamos la tabla.
|
191 | 4740 | fjp | writer.preProcess(); |
192 | writer.postProcess(); |
||
193 | 6022 | caballero | |
194 | 4740 | fjp | if (dbDriver instanceof ICanReproject) |
195 | 6022 | caballero | { |
196 | 4740 | fjp | ((ICanReproject)dbDriver).setDestProjection(strSRID); |
197 | } |
||
198 | 6022 | caballero | |
199 | // Creamos el driver. OJO: Hay que a?adir el campo ID a la
|
||
200 | 4767 | fjp | // definici?n de campos.
|
201 | 6022 | caballero | |
202 | 4767 | fjp | boolean bFound = false; |
203 | for (int i=0; i < dbLayerDef.getFieldsDesc().length; i++) |
||
204 | { |
||
205 | FieldDescription f = dbLayerDef.getFieldsDesc()[i]; |
||
206 | if (f.getFieldName().equalsIgnoreCase(dbLayerDef.getFieldID()))
|
||
207 | { |
||
208 | bFound = true;
|
||
209 | break;
|
||
210 | } |
||
211 | } |
||
212 | // Si no est?, lo a?adimos
|
||
213 | if (!bFound)
|
||
214 | { |
||
215 | int numFieldsAnt = dbLayerDef.getFieldsDesc().length;
|
||
216 | FieldDescription[] newFields = new FieldDescription[dbLayerDef.getFieldsDesc().length + 1]; |
||
217 | for (int i=0; i < numFieldsAnt; i++) |
||
218 | { |
||
219 | newFields[i] = dbLayerDef.getFieldsDesc()[i]; |
||
220 | } |
||
221 | newFields[numFieldsAnt] = new FieldDescription();
|
||
222 | newFields[numFieldsAnt].setFieldDecimalCount(0);
|
||
223 | newFields[numFieldsAnt].setFieldType(Types.INTEGER);
|
||
224 | newFields[numFieldsAnt].setFieldLength(7);
|
||
225 | newFields[numFieldsAnt].setFieldName(dbLayerDef.getFieldID()); |
||
226 | dbLayerDef.setFieldsDesc(newFields); |
||
227 | 6022 | caballero | |
228 | 4767 | fjp | } |
229 | |||
230 | 4740 | fjp | dbDriver.setData(conex, dbLayerDef); |
231 | 6022 | caballero | IProjection proj = null;
|
232 | 4740 | fjp | if (drv instanceof ICanReproject) |
233 | 6022 | caballero | { |
234 | 7703 | luisw2 | proj = CRSFactory.getCRS("EPSG:" + ((ICanReproject)dbDriver).getSourceProjection());
|
235 | 4740 | fjp | } |
236 | 6022 | caballero | |
237 | 4740 | fjp | lyr = (FLyrVect) LayerFactory.createDBLayer(dbDriver, layerName, proj); |
238 | 6022 | caballero | |
239 | 4387 | fjp | } |
240 | 6022 | caballero | else // Si no es ni lo uno ni lo otro, |
241 | 4387 | fjp | { |
242 | 6022 | caballero | |
243 | |||
244 | 4387 | fjp | } |
245 | 4380 | fjp | } catch (Exception e) { |
246 | // TODO Auto-generated catch block
|
||
247 | e.printStackTrace(); |
||
248 | } |
||
249 | 4487 | fjp | lyr.setVisible(true);
|
250 | 6022 | caballero | |
251 | 4487 | fjp | mapCtrl.getMapContext().getLayers().addLayer(lyr); |
252 | 6022 | caballero | |
253 | 4487 | fjp | mapCtrl.getMapContext().endAtomicEvent(); |
254 | lyr.addLayerListener(CADExtension.getEditionManager()); |
||
255 | lyr.setActive(true);
|
||
256 | 6473 | caballero | |
257 | 5152 | fjp | try {
|
258 | lyr.setEditing(true);
|
||
259 | 5893 | fjp | VectorialEditableAdapter vea = (VectorialEditableAdapter) lyr.getSource(); |
260 | vea.getRules().clear(); |
||
261 | 6002 | fjp | // TODO: ESTO ES PROVISIONAL, DESCOMENTAR LUEGO
|
262 | 6013 | fjp | if (vea.getShapeType() == FShape.POLYGON)
|
263 | { |
||
264 | IRule rulePol = new RulePolygon();
|
||
265 | vea.getRules().add(rulePol); |
||
266 | } |
||
267 | 6022 | caballero | StartEditing.startCommandsApplicable(view,lyr); |
268 | 5893 | fjp | vea.getCommandRecord().addCommandListener(mapCtrl); |
269 | view.showConsole(); |
||
270 | 6022 | caballero | |
271 | 5893 | fjp | // Para cerrar el cuadro de di?logo.
|
272 | oldAction.performAction(); |
||
273 | 5152 | fjp | } catch (EditionException e) {
|
274 | e.printStackTrace(); |
||
275 | NotificationManager.addError(e); |
||
276 | 6013 | fjp | } catch (DriverIOException e) {
|
277 | 5893 | fjp | e.printStackTrace(); |
278 | 6013 | fjp | NotificationManager.addError(e); |
279 | 5893 | fjp | |
280 | 5152 | fjp | } |
281 | 5893 | fjp | |
282 | 6022 | caballero | |
283 | 4380 | fjp | } |
284 | 6022 | caballero | |
285 | 4380 | fjp | } |