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 |
|