Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libFMap_daldb / src-test / org / gvsig / fmap / dal / store / postgresql / TestPostgreSQLWrite.java @ 29956

History | View | Annotate | Download (8.01 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

    
23
/*
24
* AUTHORS (In addition to CIT):
25
* 2009 IVER T.I   {{Task}}
26
*/
27

    
28
/**
29
 *
30
 */
31
package org.gvsig.fmap.dal.store.postgresql;
32

    
33
import java.util.Iterator;
34

    
35
import org.cresques.ProjectionLibrary;
36
import org.cresques.impl.CresquesCtsLibrary;
37
import org.gvsig.fmap.dal.DALDbLibrary;
38
import org.gvsig.fmap.dal.DataStoreParameters;
39
import org.gvsig.fmap.dal.exception.DataException;
40
import org.gvsig.fmap.dal.feature.BaseTestEditableFeatureStore;
41
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
42
import org.gvsig.fmap.dal.feature.EditableFeatureType;
43
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
44
import org.gvsig.fmap.dal.feature.FeatureQuery;
45
import org.gvsig.fmap.dal.feature.FeatureStore;
46
import org.gvsig.fmap.dal.feature.FeatureStoreTransform;
47
import org.gvsig.fmap.dal.feature.FeatureType;
48
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
49
import org.gvsig.fmap.dal.index.spatial.jts.JTSIndexLibrary;
50
import org.gvsig.fmap.dal.store.db.DBStoreLibrary;
51
import org.gvsig.fmap.dal.store.jdbc.JDBCLibrary;
52
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorer;
53
import org.gvsig.fmap.geom.Geometry;
54
import org.gvsig.fmap.geom.impl.DefaultGeometryLibrary;
55
import org.gvsig.fmap.geom.operation.towkt.ToWKT;
56
import org.gvsig.tools.evaluator.Evaluator;
57
import org.gvsig.tools.evaluator.EvaluatorData;
58
import org.gvsig.tools.evaluator.EvaluatorException;
59
import org.gvsig.tools.evaluator.EvaluatorFieldsInfo;
60

    
61

    
62

    
63
/**
64
 * @author jmvivo
65
 *
66
 */
67
// public class TestPostgreSQL extends BaseTestEditableFeatureStore {
68
public class TestPostgreSQLWrite extends BaseTestEditableFeatureStore {
69

    
70

    
71
        private JDBCServerExplorer myExplorer;
72
        private PostgreSQLNewStoreParameters newParams;
73

    
74
        protected void setUp() throws Exception {
75
                super.setUp();
76
                // FIXME
77
                // ToolsLocator.registerDefaultPersistenceManager(XMLEntityManager.class);
78

    
79
                DefaultGeometryLibrary defGeomLib = new DefaultGeometryLibrary();
80
                defGeomLib.initialize();
81

    
82

    
83
                ProjectionLibrary projLib = new ProjectionLibrary();
84
                projLib.initialize();
85

    
86
                CresquesCtsLibrary cresquesLib = new CresquesCtsLibrary();
87
                cresquesLib.initialize();
88

    
89
                DALDbLibrary libDb = new DALDbLibrary();
90
                libDb.initialize();
91

    
92
                DBStoreLibrary libDbStore = new DBStoreLibrary();
93
                libDbStore.initialize();
94

    
95
                JDBCLibrary libJDBC = new JDBCLibrary();
96
                libJDBC.initialize();
97

    
98
                PostgreSQLLibrary pgLib = new PostgreSQLLibrary();
99
                pgLib.initialize();
100

    
101
                JTSIndexLibrary jtsIndex = new JTSIndexLibrary();
102
                jtsIndex.initialize();
103

    
104
                projLib.postInitialize();
105
                cresquesLib.postInitialize();
106
                defGeomLib.postInitialize();
107

    
108
                // Initialize wkt geom operation
109
                int wktCode = ToWKT.CODE;
110

    
111
                libDb.postInitialize();
112
                libDbStore.postInitialize();
113
                libJDBC.postInitialize();
114
                pgLib.postInitialize();
115
                jtsIndex.postInitialize();
116
        }
117

    
118
        public DataStoreParameters getDefaultDataStoreParameters()
119
                        throws DataException {
120
                PostgreSQLStoreParameters pgParameters = null;
121
                pgParameters = (PostgreSQLStoreParameters) dataManager
122
                                .createStoreParameters(PostgreSQLStoreProvider.NAME);
123

    
124
                pgParameters.setHost("localhost");
125
                pgParameters.setUser("postgres");
126
                pgParameters.setPassword("postgres");
127
                pgParameters.setDBName("gis");
128
                pgParameters.setTable("muni10000_peq");
129

    
130
                return pgParameters;
131
        }
132

    
133
        public boolean hasExplorer() {
134
                return true;
135
        }
136

    
137
        public void testLoadMetadata() throws Exception {
138
                DataStoreParameters params = this.getDefaultDataStoreParameters();
139

    
140
                FeatureStore store = null;
141
                store = (FeatureStore) dataManager.createStore(params);
142
                FeatureType fType = store.getDefaultFeatureType();
143
                FeatureAttributeDescriptor geomAttr;
144

    
145

    
146

    
147
                if (fType.getDefaultGeometryAttributeIndex() >= 0) {
148
                        assertNotNull(store.getEnvelope());
149
                        geomAttr = fType.getAttributeDescriptor(fType
150
                                        .getDefaultGeometryAttributeIndex());
151
                        assertTrue(geomAttr.getGeometryType() == Geometry.TYPES.MULTISURFACE);
152
                        assertTrue(geomAttr.getGeometrySubType() == Geometry.SUBTYPES.GEOM2D);
153
                        assertNotNull(store.getDynValue("DefaultSRS"));
154

    
155
                }
156

    
157
        }
158

    
159
        public void testCloserConnection() throws Exception {
160

    
161
                DataStoreParameters params = this.getDefaultDataStoreParameters();
162

    
163
                FeatureStore store = null;
164
                store = (FeatureStore) dataManager.createStore(params);
165

    
166
                FeatureQuery query = store.createFeatureQuery();
167

    
168
                query.getOrder().add("gid", true);
169

    
170
                query.setFilter(new Evaluator() {
171

    
172
                        public Object evaluate(EvaluatorData data)
173
                                        throws EvaluatorException {
174
                                // TODO Auto-generated method stub
175
                                return Boolean.TRUE;
176
                        }
177

    
178
                        public String getCQL() {
179
                                return "true = true";
180
                        }
181

    
182
                        public String getDescription() {
183
                                // TODO Auto-generated method stub
184
                                return null;
185
                        }
186

    
187
                        public String getName() {
188
                                return "AlwaysTrue";
189
                        }
190

    
191
                        public EvaluatorFieldsInfo getFieldsInfo() {
192
                                // TODO Auto-generated method stub
193
                                return null;
194
                        }
195

    
196
                });
197

    
198
                FeatureStoreTransform transform = new StringsToLowerTransform();
199
                transform.setFeatureStore(store);
200

    
201
                store.getTransforms().add(transform);
202

    
203
                transform = new StringsToLowerTransform();
204
                transform.setFeatureStore(store);
205

    
206
                store.getTransforms().add(transform);
207

    
208
                transform = new StringsToLowerTransform();
209
                transform.setFeatureStore(store);
210

    
211
                store.getTransforms().add(transform);
212

    
213
                for (int i = 0; i < 30; i++) {
214
                        // this.fullStoreIteratorTest(store);
215

    
216
                        this.testIterationFastAndStandart(store, query);
217
                }
218

    
219

    
220
                store.dispose();
221

    
222
        }
223

    
224
        public boolean usesResources() {
225
                return true;
226
        }
227

    
228
        public NewFeatureStoreParameters getDefaultNewDataStoreParameters()
229
                        throws Exception {
230
                PostgreSQLStoreParameters parameters = (PostgreSQLStoreParameters) this
231
                                .getDefaultDataStoreParameters();
232

    
233
                FeatureStore store = null;
234

    
235
                if (this.myExplorer == null) {
236
                        store = (FeatureStore) dataManager.createStore(parameters);
237
                        myExplorer = (JDBCServerExplorer) store.getExplorer();
238
                }
239
                if (this.newParams == null) {
240
                        if (store == null){
241
                                store = (FeatureStore) dataManager.createStore(parameters);
242
                        }
243

    
244
                        newParams = (PostgreSQLNewStoreParameters) myExplorer
245
                                        .getAddParameters();
246

    
247
                        newParams.setTable(parameters.getTable() + "_test");
248
                        FeatureType ftOrg = store.getDefaultFeatureType();
249
                        EditableFeatureType ftTrg = (EditableFeatureType) newParams
250
                                        .getDefaultFeatureType();
251
                        FeatureAttributeDescriptor org;
252
                        EditableFeatureAttributeDescriptor trg;
253
                        Iterator iter = ftOrg.iterator();
254
                        while (iter.hasNext()) {
255
                                org = (FeatureAttributeDescriptor) iter.next();
256
                                trg = ftTrg.add(org.getName(), org.getDataType());
257
                                trg.setAllowNull(org.allowNull());
258
                                trg.setDefaultValue(org.getDefaultValue());
259
                                trg.setGeometrySubType(org.getGeometrySubType());
260
                                trg.setGeometryType(org.getGeometryType());
261
                                trg.setIsAutomatic(org.isAutomatic());
262
                                trg.setIsPrimaryKey(org.isPrimaryKey());
263
                                trg.setIsReadOnly(org.isReadOnly());
264
                                trg.setMaximumOccurrences(org.getMaximumOccurrences());
265
                                trg.setMinimumOccurrences(org.getMinimumOccurrences());
266
                                trg.setPrecision(org.getPrecision());
267
                                trg.setSize(org.getSize());
268
                                trg.setSRS(org.getSRS());
269
                        }
270
                        ftTrg.setDefaultGeometryAttributeName(ftOrg
271
                                        .getDefaultGeometryAttributeName());
272
                        ftTrg.setHasOID(ftOrg.hasOID());
273

    
274
                }
275
                if (store != null){
276
                        store.dispose();
277
                }
278

    
279
                return this.newParams;
280
        }
281

    
282
        public boolean resourcesNotifyChanges() {
283
                return false;
284
        }
285
}