root / branches / v2_0_0_prep / extensions / extEditing / src / org / gvsig / editing / gui / cad / MyFinishAction.java @ 37138
History | View | Annotate | Download (15.3 KB)
1 |
/* gvSIG. Geographic Information System of the Valencian Government
|
---|---|
2 |
*
|
3 |
* Copyright (C) 2007-2008 Infrastructures and Transports Department
|
4 |
* of the Valencian Government (CIT)
|
5 |
*
|
6 |
* This program is free software; you can redistribute it and/or
|
7 |
* modify it under the terms of the GNU General Public License
|
8 |
* as published by the Free Software Foundation; either version 2
|
9 |
* of the License, or (at your option) any later version.
|
10 |
*
|
11 |
* This program is distributed in the hope that it will be useful,
|
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14 |
* GNU General Public License for more details.
|
15 |
*
|
16 |
* You should have received a copy of the GNU General Public License
|
17 |
* along with this program; if not, write to the Free Software
|
18 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
19 |
* MA 02110-1301, USA.
|
20 |
*
|
21 |
*/
|
22 |
package org.gvsig.editing.gui.cad; |
23 |
|
24 |
import java.awt.Component; |
25 |
import java.io.File; |
26 |
|
27 |
import javax.swing.JOptionPane; |
28 |
|
29 |
import jwizardcomponent.FinishAction; |
30 |
import jwizardcomponent.JWizardComponents; |
31 |
|
32 |
import org.slf4j.Logger; |
33 |
import org.slf4j.LoggerFactory; |
34 |
|
35 |
import org.gvsig.andami.PluginServices; |
36 |
import org.gvsig.andami.messages.NotificationManager; |
37 |
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel; |
38 |
import org.gvsig.editing.CADExtension; |
39 |
import org.gvsig.editing.EditionManager; |
40 |
import org.gvsig.editing.gui.cad.panels.ChooseGeometryType; |
41 |
import org.gvsig.editing.gui.cad.panels.FileBasedPanel; |
42 |
import org.gvsig.editing.gui.cad.panels.JPanelFieldDefinition; |
43 |
import org.gvsig.fmap.dal.DALLocator; |
44 |
import org.gvsig.fmap.dal.DataManager; |
45 |
import org.gvsig.fmap.dal.DataStoreParameters; |
46 |
import org.gvsig.fmap.dal.DataTypes; |
47 |
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor; |
48 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
49 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
50 |
import org.gvsig.fmap.dal.feature.FeatureType; |
51 |
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters; |
52 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer; |
53 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters; |
54 |
import org.gvsig.fmap.dal.store.shp.SHPNewStoreParameters; |
55 |
import org.gvsig.fmap.mapcontext.MapContextLocator; |
56 |
import org.gvsig.fmap.mapcontext.MapContextManager; |
57 |
import org.gvsig.fmap.mapcontext.layers.LayerFactory; |
58 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
59 |
import org.gvsig.fmap.mapcontrol.MapControl; |
60 |
|
61 |
public class MyFinishAction extends FinishAction { |
62 |
|
63 |
private static final Logger logger = LoggerFactory |
64 |
.getLogger(MyFinishAction.class); |
65 |
|
66 |
JWizardComponents myWizardComponents; |
67 |
FinishAction oldAction; |
68 |
FeatureType featureType = null;
|
69 |
DefaultViewPanel view; |
70 |
String actionComand;
|
71 |
|
72 |
public MyFinishAction(JWizardComponents wizardComponents,
|
73 |
DefaultViewPanel view, String actionComand) {
|
74 |
super(wizardComponents);
|
75 |
oldAction = wizardComponents.getFinishAction(); |
76 |
myWizardComponents = wizardComponents; |
77 |
this.view = view;
|
78 |
this.actionComand = actionComand;
|
79 |
// TODO Auto-generated constructor stub
|
80 |
} |
81 |
|
82 |
public void performAction() { |
83 |
FLyrVect lyr = null;
|
84 |
MapControl mapCtrl = view.getMapControl(); |
85 |
try {
|
86 |
mapCtrl.getMapContext().beginAtomicEvent(); |
87 |
if (actionComand.equals("SHP")) { |
88 |
FileBasedPanel shpPanel = |
89 |
(FileBasedPanel) myWizardComponents.getWizardPanel(2);
|
90 |
String path = shpPanel.getPath();
|
91 |
if (!path.toLowerCase().endsWith(".shp")) { |
92 |
path += ".shp";
|
93 |
} |
94 |
File newFile = new File(path); |
95 |
if (newFile.exists()) {
|
96 |
int resp =
|
97 |
JOptionPane.showConfirmDialog(
|
98 |
(Component) PluginServices.getMainFrame(),
|
99 |
PluginServices.getText(this,
|
100 |
"fichero_ya_existe_seguro_desea_guardarlo"),
|
101 |
PluginServices.getText(this, "guardar"), |
102 |
JOptionPane.YES_NO_OPTION);
|
103 |
if (resp != JOptionPane.YES_OPTION) { |
104 |
return;
|
105 |
} |
106 |
} |
107 |
ChooseGeometryType geometryTypePanel = |
108 |
(ChooseGeometryType) myWizardComponents.getWizardPanel(0);
|
109 |
JPanelFieldDefinition fieldDefinitionPanel = |
110 |
(JPanelFieldDefinition) myWizardComponents |
111 |
.getWizardPanel(1);
|
112 |
|
113 |
String layerName = geometryTypePanel.getLayerName();
|
114 |
String selectedDriver = geometryTypePanel.getSelectedDriver();
|
115 |
int geometryType = geometryTypePanel.getSelectedGeometryType();
|
116 |
EditableFeatureType featureType = |
117 |
fieldDefinitionPanel.getFeatureType(); |
118 |
|
119 |
EditableFeatureAttributeDescriptor efad = |
120 |
featureType.add("GEOMETRY", DataTypes.GEOMETRY);
|
121 |
efad.setGeometryType(geometryType); |
122 |
featureType.setDefaultGeometryAttributeName("GEOMETRY");
|
123 |
|
124 |
DataManager datamanager = DALLocator.getDataManager(); |
125 |
FilesystemServerExplorerParameters explorerParams; |
126 |
explorerParams = |
127 |
(FilesystemServerExplorerParameters) datamanager |
128 |
.createServerExplorerParameters(FilesystemServerExplorer.NAME); |
129 |
explorerParams.setRoot(newFile.getParent()); |
130 |
FilesystemServerExplorer explorer = |
131 |
(FilesystemServerExplorer) datamanager |
132 |
.createServerExplorer(explorerParams); |
133 |
NewFeatureStoreParameters newParams = |
134 |
(NewFeatureStoreParameters) explorer |
135 |
.getAddParameters(newFile); |
136 |
newParams.setDefaultFeatureType(featureType); |
137 |
((SHPNewStoreParameters) newParams).setCRS(mapCtrl |
138 |
.getProjection()); |
139 |
((SHPNewStoreParameters) newParams) |
140 |
.setGeometryType(geometryType); |
141 |
explorer.add(newParams.getDataStoreName(), newParams, true);
|
142 |
FeatureStore target = |
143 |
(FeatureStore) datamanager.openStore( |
144 |
newParams.getDataStoreName(), newParams); |
145 |
target.edit(FeatureStore.MODE_APPEND); |
146 |
target.finishEditing(); |
147 |
target.dispose(); |
148 |
|
149 |
lyr = |
150 |
(FLyrVect) LayerFactory.getInstance().createLayer( |
151 |
layerName, newParams); |
152 |
lyr.setActive(true);
|
153 |
lyr.setVisible(true);
|
154 |
mapCtrl.getMapContext().getLayers().addLayer(lyr); |
155 |
mapCtrl.getMapContext().endAtomicEvent(); |
156 |
EditionManager em = CADExtension.getEditionManager(); |
157 |
em.setMapControl(mapCtrl); |
158 |
lyr.addLayerListener(em); |
159 |
lyr.setEditing(true);
|
160 |
lyr.dispose(); |
161 |
view.showConsole(); |
162 |
} |
163 |
|
164 |
if (actionComand.equals("DXF")) { |
165 |
FileBasedPanel filePanel = |
166 |
(FileBasedPanel) myWizardComponents.getWizardPanel(0);
|
167 |
String path = filePanel.getPath();
|
168 |
if (!path.toLowerCase().endsWith(".dxf")) { |
169 |
path += ".dxf";
|
170 |
} |
171 |
File newFile = new File(path); |
172 |
if (newFile.exists()) {
|
173 |
int resp =
|
174 |
JOptionPane.showConfirmDialog(
|
175 |
(Component) PluginServices.getMainFrame(),
|
176 |
PluginServices.getText(this,
|
177 |
"fichero_ya_existe_seguro_desea_guardarlo"),
|
178 |
PluginServices.getText(this, "guardar"), |
179 |
JOptionPane.YES_NO_OPTION);
|
180 |
if (resp != JOptionPane.YES_OPTION) { |
181 |
return;
|
182 |
} |
183 |
} |
184 |
String filename = newFile.getName();
|
185 |
|
186 |
DataManager datamanager = DALLocator.getDataManager(); |
187 |
|
188 |
FilesystemServerExplorerParameters explorerParams = |
189 |
(FilesystemServerExplorerParameters) datamanager |
190 |
.createServerExplorerParameters(FilesystemServerExplorer.NAME); |
191 |
explorerParams.setRoot(newFile.getParent()); |
192 |
FilesystemServerExplorer explorer = |
193 |
(FilesystemServerExplorer) datamanager.openServerExplorer( |
194 |
FilesystemServerExplorer.NAME, explorerParams); |
195 |
|
196 |
NewFeatureStoreParameters newParams = |
197 |
(NewFeatureStoreParameters) explorer |
198 |
.getAddParameters(newFile); |
199 |
newParams.setDynValue("File", newFile);
|
200 |
newParams.setDynValue("CRS", mapCtrl.getProjection());
|
201 |
explorer.add(newParams.getDataStoreName(), newParams, true);
|
202 |
|
203 |
DataStoreParameters parameters = null;
|
204 |
parameters = datamanager.createStoreParameters("DXF");
|
205 |
parameters.setDynValue("File", newFile);
|
206 |
parameters.setDynValue("CRS", mapCtrl.getProjection());
|
207 |
|
208 |
MapContextManager mcm = |
209 |
MapContextLocator.getMapContextManager(); |
210 |
lyr = (FLyrVect) mcm.createLayer(filename, parameters); |
211 |
|
212 |
lyr.setActive(true);
|
213 |
lyr.setVisible(true);
|
214 |
mapCtrl.getMapContext().getLayers().addLayer(lyr); |
215 |
mapCtrl.getMapContext().endAtomicEvent(); |
216 |
EditionManager em = CADExtension.getEditionManager(); |
217 |
em.setMapControl(mapCtrl); |
218 |
lyr.addLayerListener(em); |
219 |
lyr.setEditing(true);
|
220 |
lyr.dispose(); |
221 |
view.showConsole(); |
222 |
} |
223 |
|
224 |
// else if (actionComand.equals("POSTGIS"))
|
225 |
// {
|
226 |
// ChooseGeometryType geometryTypePanel = (ChooseGeometryType)
|
227 |
// myWizardComponents.getWizardPanel(0);
|
228 |
// JPanelFieldDefinition fieldDefinitionPanel =
|
229 |
// (JPanelFieldDefinition) myWizardComponents.getWizardPanel(1);
|
230 |
//
|
231 |
//
|
232 |
// String layerName = geometryTypePanel.getLayerName();
|
233 |
// String selectedDriver = geometryTypePanel.getSelectedDriver();
|
234 |
// int geometryType = geometryTypePanel.getSelectedGeometryType();
|
235 |
// FieldDescription[] fieldsDesc =
|
236 |
// fieldDefinitionPanel.getFieldsDescription();
|
237 |
//
|
238 |
// Driver drv = LayerFactory.getDM().getDriver(selectedDriver);
|
239 |
//
|
240 |
// IVectorialJDBCDriver dbDriver = (IVectorialJDBCDriver) drv;
|
241 |
// PostGISpanel postgisPanel = (PostGISpanel)
|
242 |
// myWizardComponents.getWizardPanel(2);
|
243 |
// ConnectionSettings cs = postgisPanel.getConnSettings();
|
244 |
// if (cs == null)
|
245 |
// return;
|
246 |
// IConnection conex =
|
247 |
// ConnectionFactory.createConnection(cs.getConnectionString(),
|
248 |
// cs.getUser(), cs.getPassw());
|
249 |
//
|
250 |
// DBLayerDefinition dbLayerDef = new DBLayerDefinition();
|
251 |
// dbLayerDef.setCatalogName(cs.getDb());
|
252 |
// dbLayerDef.setSchema(cs.getSchema());
|
253 |
// dbLayerDef.setTableName(layerName);
|
254 |
// dbLayerDef.setShapeType(geometryType);
|
255 |
// dbLayerDef.setFieldsDesc(fieldsDesc);
|
256 |
// dbLayerDef.setFieldGeometry("the_geom");
|
257 |
// dbLayerDef.setFieldID("gid");
|
258 |
//
|
259 |
// dbLayerDef.setWhereClause("");
|
260 |
// String strSRID = mapCtrl.getProjection().getAbrev()
|
261 |
// .substring(5);
|
262 |
// dbLayerDef.setSRID_EPSG(strSRID);
|
263 |
// dbLayerDef.setConnection(conex);
|
264 |
//
|
265 |
// PostGISWriter writer= new PostGISWriter();
|
266 |
// //(PostGISWriter)LayerFactory.getWM().getWriter("PostGIS Writer");
|
267 |
// writer.setWriteAll(true);
|
268 |
// writer.setCreateTable(true);
|
269 |
// writer.initialize(dbLayerDef);
|
270 |
//
|
271 |
// // Creamos la tabla.
|
272 |
// writer.preProcess();
|
273 |
// writer.postProcess();
|
274 |
//
|
275 |
// if (dbDriver instanceof ICanReproject)
|
276 |
// {
|
277 |
// ((ICanReproject)dbDriver).setDestProjection(strSRID);
|
278 |
// }
|
279 |
//
|
280 |
// // Creamos el driver. OJO: Hay que a�adir el campo ID a la
|
281 |
// // definici�n de campos.
|
282 |
//
|
283 |
// boolean bFound = false;
|
284 |
// for (int i=0; i < dbLayerDef.getFieldsDesc().length; i++)
|
285 |
// {
|
286 |
// FieldDescription f = dbLayerDef.getFieldsDesc()[i];
|
287 |
// if (f.getFieldName().equalsIgnoreCase(dbLayerDef.getFieldID()))
|
288 |
// {
|
289 |
// bFound = true;
|
290 |
// break;
|
291 |
// }
|
292 |
// }
|
293 |
// // Si no est�, lo a�adimos
|
294 |
// if (!bFound)
|
295 |
// {
|
296 |
// int numFieldsAnt = dbLayerDef.getFieldsDesc().length;
|
297 |
// FieldDescription[] newFields = new
|
298 |
// FieldDescription[dbLayerDef.getFieldsDesc().length + 1];
|
299 |
// for (int i=0; i < numFieldsAnt; i++)
|
300 |
// {
|
301 |
// newFields[i] = dbLayerDef.getFieldsDesc()[i];
|
302 |
// }
|
303 |
// newFields[numFieldsAnt] = new FieldDescription();
|
304 |
// newFields[numFieldsAnt].setFieldDecimalCount(0);
|
305 |
// newFields[numFieldsAnt].setFieldType(Types.INTEGER);
|
306 |
// newFields[numFieldsAnt].setFieldLength(7);
|
307 |
// newFields[numFieldsAnt].setFieldName(dbLayerDef.getFieldID());
|
308 |
// dbLayerDef.setFieldsDesc(newFields);
|
309 |
//
|
310 |
// }
|
311 |
//
|
312 |
// dbDriver.setData(conex, dbLayerDef);
|
313 |
// IProjection proj = null;
|
314 |
// if (drv instanceof ICanReproject)
|
315 |
// {
|
316 |
// proj = CRSFactory.getCRS("EPSG:" +
|
317 |
// ((ICanReproject)dbDriver).getSourceProjection(null,null));
|
318 |
// }
|
319 |
//
|
320 |
// lyr = (FLyrVect) LayerFactory.createDBLayer(dbDriver, layerName,
|
321 |
// proj);
|
322 |
//
|
323 |
// }
|
324 |
// else // Si no es ni lo uno ni lo otro,
|
325 |
// {
|
326 |
//
|
327 |
//
|
328 |
// }
|
329 |
|
330 |
} catch (Exception e) { |
331 |
logger.error("Can't create the layer", e);
|
332 |
NotificationManager.showMessageError(e.getLocalizedMessage(), e); |
333 |
return;
|
334 |
} |
335 |
|
336 |
// try {
|
337 |
// lyr.setEditing(true);
|
338 |
// VectorialEditableAdapter vea = (VectorialEditableAdapter)
|
339 |
// lyr.getSource();
|
340 |
// vea.getRules().clear();
|
341 |
// // TODO: ESTO ES PROVISIONAL, DESCOMENTAR LUEGO
|
342 |
// if (vea.getShapeType() == FShape.POLYGON)
|
343 |
// {
|
344 |
// IRule rulePol = new RulePolygon();
|
345 |
// vea.getRules().add(rulePol, false);
|
346 |
// }
|
347 |
// StartEditing.startCommandsApplicable(view,lyr);
|
348 |
// vea.getCommandRecord().addCommandListener(mapCtrl);
|
349 |
// view.showConsole();
|
350 |
|
351 |
// Para cerrar el cuadro de di�logo.
|
352 |
oldAction.performAction(); |
353 |
// } catch (ReadException e) {
|
354 |
// NotificationManager.showMessageError(e.getMessage(),e);
|
355 |
// } catch (StartEditionLayerException e) {
|
356 |
// NotificationManager.showMessageError(e.getMessage(),e);
|
357 |
// }
|
358 |
|
359 |
} |
360 |
|
361 |
} |