Statistics
| Revision:

svn-gvsig-desktop / tags / v1_0_2_Build_900 / extensions / extCAD / src / com / iver / cit / gvsig / StopEditingToGT2PostGIS.java @ 10562

History | View | Annotate | Download (5.41 KB)

1 3786 fjp
package com.iver.cit.gvsig;
2
3 3952 fjp
import java.io.IOException;
4
import java.util.HashMap;
5 3786 fjp
6 3952 fjp
import org.geotools.data.FeatureStore;
7
import org.geotools.data.FeatureWriter;
8
import org.geotools.data.postgis.PostgisDataStore;
9
import org.geotools.data.postgis.PostgisDataStoreFactory;
10
import org.geotools.factory.FactoryConfigurationError;
11
import org.geotools.feature.FeatureType;
12
import org.geotools.feature.SchemaException;
13 3786 fjp
14 3952 fjp
import com.hardcode.gdbms.engine.data.driver.DriverException;
15 3786 fjp
import com.iver.andami.PluginServices;
16
import com.iver.andami.plugins.Extension;
17 6878 cesar
import com.iver.cit.gvsig.fmap.MapContext;
18 5184 caballero
import com.iver.cit.gvsig.fmap.edition.EditionEvent;
19 3952 fjp
import com.iver.cit.gvsig.fmap.edition.EditionException;
20 3786 fjp
import com.iver.cit.gvsig.fmap.edition.VectorialEditableAdapter;
21 9378 jmvivo
import com.iver.cit.gvsig.fmap.layers.FLayer;
22 3786 fjp
import com.iver.cit.gvsig.fmap.layers.FLayers;
23
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
24 9378 jmvivo
import com.iver.cit.gvsig.fmap.layers.LayersIterator;
25 3952 fjp
import com.iver.cit.gvsig.jdbc_spatial.DlgConnection;
26
import com.iver.cit.gvsig.jdbc_spatial.gui.jdbcwizard.ConnectionSettings;
27 8765 jjdelcerro
import com.iver.cit.gvsig.project.documents.view.IProjectView;
28
import com.iver.cit.gvsig.project.documents.view.gui.View;
29 3952 fjp
import com.iver.cit.gvsig.writers.WriterGT2;
30 3786 fjp
31
32
/**
33
 * DOCUMENT ME!
34
 *
35
 * @author Vicente Caballero Navarro
36
 */
37 5005 jorpiell
public class StopEditingToGT2PostGIS extends Extension {
38 3952 fjp
        static PostgisDataStoreFactory postGisFactory = new PostgisDataStoreFactory();
39 3786 fjp
    /**
40 5005 jorpiell
     * @see com.iver.andami.plugins.IExtension#initialize()
41 3786 fjp
     */
42 5005 jorpiell
    public void initialize() {
43 3786 fjp
    }
44
45
    /**
46 5005 jorpiell
     * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
47 3786 fjp
     */
48
    public void execute(String s) {
49 6877 cesar
        com.iver.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager()
50 6880 cesar
                                                             .getActiveWindow();
51 3786 fjp
52
        View vista = (View) f;
53 8765 jjdelcerro
        IProjectView model = vista.getModel();
54 6878 cesar
        MapContext mapa = model.getMapContext();
55 3786 fjp
            FLayers layers = mapa.getLayers();
56
            if (s.equals("STOPEDITING")){
57 9378 jmvivo
            LayersIterator iter = new LayersIterator(layers);
58
            FLayer layer;
59
            while (iter.hasNext()) {
60
                    layer = iter.nextLayer();
61
                if (layer instanceof FLyrVect &&
62
                        layer.isEditing()) {
63
                    stopEditing((FLyrVect)layer);
64 3786 fjp
65
                    return;
66
                }
67
            }
68
            }
69
            PluginServices.getMainFrame().enableControls();
70
    }
71
72
    /**
73 5005 jorpiell
         * @see com.iver.andami.plugins.IExtension#isEnabled()
74 3952 fjp
         */
75 3786 fjp
    public boolean isEnabled() {
76
        return true;
77
    }
78
79 5184 caballero
80
81
82 3786 fjp
    /**
83 3952 fjp
         * DOCUMENT ME!
84
         */
85 3786 fjp
    public void stopEditing(FLyrVect layer) {
86 3952 fjp
                    DlgConnection dlg;
87
                        try {
88
                    dlg = new DlgConnection();
89
                    dlg.setModal(true);
90
                    dlg.setVisible(true);
91
                    ConnectionSettings cs = dlg.getConnSettings();
92
                    if (cs == null)
93
                        return;
94 5184 caballero
95 3952 fjp
                        PostgisDataStore dataStore;
96
                    HashMap params = new HashMap();
97
                    // Param[] dbParams = postGisFactory.getParametersInfo();
98
                    params.put("dbtype", "postgis"); //$NON-NLS-1$
99
                    params.put("host", cs.getHost());
100
                    params.put("port", new Integer(cs.getPort()));
101 5184 caballero
102 3952 fjp
                    params.put("database", cs.getDb());
103 5184 caballero
104 3952 fjp
                    params.put("user", cs.getUser());
105
                    params.put("passwd", cs.getPassw());
106 5184 caballero
107 3952 fjp
                    params.put("wkb enabled", Boolean.TRUE);
108
                    params.put("loose bbox", Boolean.TRUE);
109 5184 caballero
110 3952 fjp
                    params.put("namespace", ""); //$NON-NLS-1$
111
112
                                dataStore = (PostgisDataStore) postGisFactory.createDataStore(params);
113 5184 caballero
114 3952 fjp
                         FeatureType featType = WriterGT2.getFeatureType(layer, "the_geom",
115
                                         "autopist2");
116
                                // dataStore.createSchema(featType);
117 5184 caballero
118 3952 fjp
                                String featureName = "autopist2"; // dataStore.getTypeNames()["autopist2"];
119
                                FeatureStore featStore = (FeatureStore) dataStore.getFeatureSource(featureName);
120 5184 caballero
121 3952 fjp
                                // Necesitamos crear de verdad los ficheros antes de usarlos
122
                                // para meter las features
123
                                FeatureWriter featWriter = dataStore.getFeatureWriterAppend(featureName, featStore.getTransaction());
124
                                featWriter.close();
125
                                // Aqu? ya tenemos un fichero vac?o, listo para usar.
126 5184 caballero
127
128 3952 fjp
                                WriterGT2 writer = new WriterGT2(featStore, true);
129 5184 caballero
130 3952 fjp
                    VectorialEditableAdapter vea = (VectorialEditableAdapter) layer.getSource();
131 5184 caballero
                    vea.stopEdition(writer,EditionEvent.GRAPHIC);
132 3952 fjp
                    layer.setSource(vea.getOriginalAdapter());
133
                    layer.setEditing(false);
134
                        } catch (IOException e) {
135
                                // TODO Auto-generated catch block
136
                                e.printStackTrace();
137
                        } catch (EditionException e) {
138
                                // TODO Auto-generated catch block
139
                                e.printStackTrace();
140
                        } catch (DriverException e) {
141
                                // TODO Auto-generated catch block
142
                                e.printStackTrace();
143
                        } catch (com.iver.cit.gvsig.fmap.DriverException e) {
144
                                // TODO Auto-generated catch block
145
                                e.printStackTrace();
146
                        } catch (FactoryConfigurationError e) {
147
                                // TODO Auto-generated catch block
148
                                e.printStackTrace();
149
                        } catch (SchemaException e) {
150
                                // TODO Auto-generated catch block
151 5184 caballero
                                e.printStackTrace();
152
                        }
153
154 3786 fjp
    }
155
156 3952 fjp
157 3786 fjp
    /**
158 5005 jorpiell
         * @see com.iver.andami.plugins.IExtension#isVisible()
159 3952 fjp
         */
160 3786 fjp
    public boolean isVisible() {
161 3952 fjp
        if (EditionUtilities.getEditionStatus() == EditionUtilities.EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE)
162
                return true;
163 6604 caballero
               return false;
164 3786 fjp
165
    }
166
}