Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.db / org.gvsig.fmap.dal.db.jdbc / src / main / java / org / gvsig / fmap / dal / store / jdbc2 / spi / operations / OperationsFactoryBase.java @ 46277

History | View | Annotate | Download (10.8 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2020 gvSIG Association.
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 3
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.fmap.dal.store.jdbc2.spi.operations;
25

    
26
import java.util.Iterator;
27
import java.util.List;
28
import org.apache.commons.lang3.StringUtils;
29
import org.apache.commons.lang3.tuple.Pair;
30
import org.cresques.cts.IProjection;
31
import org.gvsig.expressionevaluator.Expression;
32
import org.gvsig.fmap.dal.SQLBuilder;
33
import org.gvsig.fmap.dal.exception.DataException;
34
import org.gvsig.fmap.dal.feature.EditableFeatureType;
35
import org.gvsig.fmap.dal.feature.FeatureQuery;
36
import org.gvsig.fmap.dal.feature.FeatureType;
37
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices;
38
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters;
39
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
40
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
41
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
42
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
43
import org.gvsig.fmap.geom.primitive.Envelope;
44

    
45
public class OperationsFactoryBase implements OperationsFactory {
46

    
47
    public static class DefaultTableReference implements TableReference {
48

    
49
        private final String database;
50
        private final String schema;
51
        private final String table;
52
        private final String subquery;
53

    
54
        public DefaultTableReference(String database, String schema, String table, String subquery) {
55
            this.database = StringUtils.defaultIfBlank(database, null);
56
            this.schema = StringUtils.defaultIfBlank(schema, null);
57
            this.table = StringUtils.defaultIfBlank(table, null);
58
            this.subquery = StringUtils.defaultIfBlank(subquery, null);
59
        }
60
        
61
        @Override
62
        public String getDatabase() {
63
            return this.database;
64
        }
65

    
66
        @Override
67
        public String getSchema() {
68
            return this.schema;
69
        }
70

    
71
        @Override
72
        public String getTable() {
73
            return this.table;
74
        }
75

    
76
        @Override
77
        public String getSubquery() {
78
            return this.subquery;
79
        }
80

    
81
        @Override
82
        public boolean hasDatabase() {
83
            return this.database != null;
84
        }
85
        
86
        @Override
87
        public boolean hasSchema() {
88
            return this.schema != null;
89
        }
90
        
91
        @Override
92
        public boolean hasTable() {
93
            return this.table != null;
94
        }
95
        
96
        @Override
97
        public boolean hasSubquery() {
98
            return this.subquery != null;
99
        }
100

    
101
        @Override
102
        public String toString() {
103
            StringBuilder builder = new StringBuilder();
104
            if( this.hasDatabase() ) {
105
                builder.append(this.database);
106
                builder.append(".");
107
            }
108
            if( this.hasSchema()) {
109
                builder.append(this.schema);
110
                builder.append(".");
111
            }
112
            builder.append(this.table);
113
            if( this.hasSubquery() ) {
114
                builder.append("[");
115
                builder.append(this.subquery);
116
                builder.append("]");
117
            }
118
            return builder.toString();
119
        }
120
        
121
        
122
    }
123
    
124
    protected final JDBCHelper helper;
125

    
126
    public OperationsFactoryBase(JDBCHelper helper) {
127
        this.helper = helper;
128
    }
129

    
130
    @Override
131
    public TableReference createTableReference(JDBCStoreParameters params) {
132
        TableReference t = new DefaultTableReference(
133
                params.getDBName(),
134
                params.getSchema(),
135
                params.getTable(),
136
                params.getSQL()
137
        );
138
        return t;
139
    }
140

    
141
    @Override
142
    public TableReference createTableReference(JDBCNewStoreParameters params) {
143
        TableReference t = new DefaultTableReference(
144
                params.getDBName(),
145
                params.getSchema(),
146
                params.getTable(),
147
                null
148
        );
149
        return t;
150
    }
151

    
152
    @Override
153
    public TableReference createTableReference(String database, String schema, String table, String subquery) {
154
        TableReference t = new DefaultTableReference(database, schema, table, subquery);
155
        return t;
156
    }
157

    
158
    
159
    @Override
160
    public FetchFeatureTypeOperation createFetchFeatureType(
161
            EditableFeatureType type, 
162
            TableReference table, 
163
            List<String> primaryKeys, 
164
            String defaultGeometryField, 
165
            IProjection crs
166
        ) {
167
        return createFetchFeatureType(type, table, primaryKeys, defaultGeometryField, crs, -1, -1);
168
    }
169
    
170
    @Override
171
    public FetchFeatureTypeOperation createFetchFeatureType(
172
            EditableFeatureType type, 
173
            TableReference table, 
174
            List<String> primaryKeys, 
175
            String defaultGeometryField, 
176
            IProjection crs,
177
            int geometryType,
178
            int geometrySubtype
179
        ) {
180
        return new FetchFeatureTypeOperation(helper, type, table, 
181
                primaryKeys, defaultGeometryField, crs, geometryType, geometrySubtype);
182
    }
183
    
184
    @Override
185
    public FetchFeatureProviderByReferenceOperation createFetchFeatureProviderByReference(
186
            FeatureReferenceProviderServices reference, 
187
            FeatureType featureType, 
188
            TableReference table
189
        ) {
190
        return new FetchFeatureProviderByReferenceOperation(helper, reference, 
191
                featureType, table);
192
    }
193

    
194
    @Override
195
    public CalculateEnvelopeOfColumnOperation createCalculateEnvelopeOfColumn(
196
            FeatureType featureType,
197
            TableReference table, 
198
            String columnName, 
199
            String baseFilter, 
200
            Envelope workingArea, 
201
            IProjection crs
202
        ) {
203
        return new CalculateEnvelopeOfColumnOperation(helper, 
204
                featureType, table, columnName, baseFilter, workingArea, crs);
205
    }
206

    
207
    @Override
208
    public PerformChangesOperation createPerformChanges(
209
            TableReference table, 
210
            FeatureType type, 
211
            Iterator deleteds, 
212
            Iterator inserteds, 
213
            Iterator updateds, 
214
            Iterator featureTypesChanged
215
        ) {
216
        return new PerformChangesOperation(helper, table, type, 
217
                deleteds, inserteds, updateds, featureTypesChanged);
218
    }
219

    
220
    @Override
221
    public AppendOperation createAppend(
222
            TableReference table, 
223
            FeatureType type
224
        ) {
225
        return new AppendOperation(helper, table, type);
226
    }
227

    
228
    @Override
229
    public CountOperation createCount(
230
            FeatureType featureType,
231
            TableReference table, 
232
            String baseFilter, 
233
            FeatureQuery query
234
        ) {
235
        return new CountOperation(helper, featureType, table, baseFilter, query);
236
    }
237

    
238
    @Override
239
    public TableIsEmptyOperation createTableIsEmpty(
240
            FeatureType featureType,
241
            TableReference table,
242
            String baseFilter, 
243
            FeatureQuery query
244
        ) {
245
        return new TableIsEmptyOperation(helper, featureType, table, baseFilter, query);
246
    }
247

    
248
    @Override
249
    public ResultSetForSetProviderOperation createResultSetForSetProvider(
250
            TableReference table, 
251
            String baseFilter, 
252
            String baseOrder, 
253
            FeatureQuery query, 
254
            FeatureType storeType, 
255
            FeatureType setType, 
256
            long limit, 
257
            long offset, 
258
            int fetchSize
259
        ) {
260
        return new ResultSetForSetProviderOperation(helper, table, 
261
                baseFilter, baseOrder, query, storeType, setType, 
262
                limit, offset, fetchSize);
263
    }
264

    
265
    @Override
266
    public ListTablesOperation createListTables(
267
            int mode,
268
            JDBCServerExplorerParameters baseParameters, 
269
            boolean informationTables,
270
            int tablesOrViews
271
        ) {
272
        return new ListTablesOperation(
273
                helper, mode, baseParameters, informationTables, tablesOrViews );
274
    }
275
    
276
    @Override
277
    public DropTableOperation createDropTable( 
278
            TableReference tableName            
279
        ) {
280
        return new DropTableOperation(helper, tableName);
281
    }
282
    
283
    @Override
284
    public CreateTableOperation createTable(
285
            TableReference table, 
286
            FeatureType type, 
287
            List<Pair<String, SQLBuilder.Privilege>> userAndPrivileges, 
288
            List<String> additionalSQLs
289
        ) throws DataException {
290
        return new CreateTableOperation(
291
                helper, table, type, 
292
                userAndPrivileges, additionalSQLs
293
        );
294
    }
295

    
296
    @Override
297
    public CanCreateTablesOperation createCanCreateTables() {
298
        return new CanCreateTablesOperation(helper);
299
    }
300

    
301
    @Override
302
    public UpdateTableStatisticsOperation createUpdateTableStatistics(
303
            TableReference table
304
        ) {
305
        return new UpdateTableStatisticsOperation(helper, table);
306
    }
307
    
308
    @Override
309
    public CanModifyTableOperation createCanModifyTableOperation(
310
            TableReference table
311
        ) {
312
        return new CanModifyTableOperation(helper, table);
313
    }
314
    
315
    @Override
316
    public ExecuteOperation createExecute(String sql) {
317
        return new ExecuteOperation(helper, sql);
318
    }
319

    
320
    @Override
321
    public UpdatePassThroughOperation createUpdatePassThroughOperation(
322
        TableReference table,
323
        Object[] parameters, 
324
        Expression filter
325
    ) {
326
        return new UpdatePassThroughOperation(helper, table, parameters, filter);
327
    }
328

    
329
    @Override
330
    public DeletePassThroughOperation createDeletePassThroughOperation(
331
            TableReference table, 
332
            Expression filter
333
    ) {
334
        return new DeletePassThroughOperation(helper, table, filter);
335
    }
336

    
337
    @Override
338
    public RetrieveValueOperation createRetrieveValue(
339
            TableReference createTableReference, 
340
            String filter, 
341
            String order, 
342
            String fieldname) {
343
        return new RetrieveValueOperation(helper, createTableReference, filter, order, fieldname);
344
    }
345

    
346

    
347
    
348
    
349
}