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

History | View | Annotate | Download (10.8 KB)

1 45065 jjdelcerro
/**
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 43020 jjdelcerro
package org.gvsig.fmap.dal.store.jdbc2.spi.operations;
25
26
import java.util.Iterator;
27
import java.util.List;
28 44058 jjdelcerro
import org.apache.commons.lang3.StringUtils;
29 43020 jjdelcerro
import org.apache.commons.lang3.tuple.Pair;
30
import org.cresques.cts.IProjection;
31 45473 fdiaz
import org.gvsig.expressionevaluator.Expression;
32
import org.gvsig.fmap.dal.SQLBuilder;
33 43020 jjdelcerro
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 44058 jjdelcerro
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters;
39 45165 jjdelcerro
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
40 43020 jjdelcerro
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 44361 jjdelcerro
    public static class DefaultTableReference implements TableReference {
48 44058 jjdelcerro
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 44331 jjdelcerro
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 44058 jjdelcerro
121 44331 jjdelcerro
122 44058 jjdelcerro
    }
123
124 43020 jjdelcerro
    protected final JDBCHelper helper;
125
126
    public OperationsFactoryBase(JDBCHelper helper) {
127
        this.helper = helper;
128
    }
129
130
    @Override
131 44058 jjdelcerro
    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 43020 jjdelcerro
    public FetchFeatureTypeOperation createFetchFeatureType(
161
            EditableFeatureType type,
162 44058 jjdelcerro
            TableReference table,
163 43020 jjdelcerro
            List<String> primaryKeys,
164
            String defaultGeometryField,
165
            IProjection crs
166
        ) {
167 45626 fdiaz
        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 44058 jjdelcerro
        return new FetchFeatureTypeOperation(helper, type, table,
181 45626 fdiaz
                primaryKeys, defaultGeometryField, crs, geometryType, geometrySubtype);
182 43020 jjdelcerro
    }
183 43377 jjdelcerro
184 43020 jjdelcerro
    @Override
185
    public FetchFeatureProviderByReferenceOperation createFetchFeatureProviderByReference(
186
            FeatureReferenceProviderServices reference,
187
            FeatureType featureType,
188 44058 jjdelcerro
            TableReference table
189 43020 jjdelcerro
        ) {
190
        return new FetchFeatureProviderByReferenceOperation(helper, reference,
191 44058 jjdelcerro
                featureType, table);
192 43020 jjdelcerro
    }
193
194
    @Override
195
    public CalculateEnvelopeOfColumnOperation createCalculateEnvelopeOfColumn(
196 44376 jjdelcerro
            FeatureType featureType,
197 44058 jjdelcerro
            TableReference table,
198 43020 jjdelcerro
            String columnName,
199
            String baseFilter,
200
            Envelope workingArea,
201
            IProjection crs
202
        ) {
203 44058 jjdelcerro
        return new CalculateEnvelopeOfColumnOperation(helper,
204 44376 jjdelcerro
                featureType, table, columnName, baseFilter, workingArea, crs);
205 43020 jjdelcerro
    }
206
207
    @Override
208
    public PerformChangesOperation createPerformChanges(
209 44058 jjdelcerro
            TableReference table,
210 43020 jjdelcerro
            FeatureType type,
211
            Iterator deleteds,
212
            Iterator inserteds,
213
            Iterator updateds,
214
            Iterator featureTypesChanged
215
        ) {
216 44058 jjdelcerro
        return new PerformChangesOperation(helper, table, type,
217 43020 jjdelcerro
                deleteds, inserteds, updateds, featureTypesChanged);
218
    }
219
220
    @Override
221
    public AppendOperation createAppend(
222 44058 jjdelcerro
            TableReference table,
223 43020 jjdelcerro
            FeatureType type
224
        ) {
225 44058 jjdelcerro
        return new AppendOperation(helper, table, type);
226 43020 jjdelcerro
    }
227
228
    @Override
229
    public CountOperation createCount(
230 44376 jjdelcerro
            FeatureType featureType,
231 44058 jjdelcerro
            TableReference table,
232 43020 jjdelcerro
            String baseFilter,
233 44727 jjdelcerro
            FeatureQuery query
234 43020 jjdelcerro
        ) {
235 44727 jjdelcerro
        return new CountOperation(helper, featureType, table, baseFilter, query);
236 43020 jjdelcerro
    }
237
238
    @Override
239
    public TableIsEmptyOperation createTableIsEmpty(
240 44376 jjdelcerro
            FeatureType featureType,
241 44058 jjdelcerro
            TableReference table,
242 43020 jjdelcerro
            String baseFilter,
243 46010 jjdelcerro
            FeatureQuery query
244 43020 jjdelcerro
        ) {
245 46010 jjdelcerro
        return new TableIsEmptyOperation(helper, featureType, table, baseFilter, query);
246 43020 jjdelcerro
    }
247
248
    @Override
249
    public ResultSetForSetProviderOperation createResultSetForSetProvider(
250 44058 jjdelcerro
            TableReference table,
251 43020 jjdelcerro
            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 44058 jjdelcerro
        return new ResultSetForSetProviderOperation(helper, table,
261
                baseFilter, baseOrder, query, storeType, setType,
262 43020 jjdelcerro
                limit, offset, fetchSize);
263
    }
264
265
    @Override
266
    public ListTablesOperation createListTables(
267
            int mode,
268 45165 jjdelcerro
            JDBCServerExplorerParameters baseParameters,
269 45627 fdiaz
            boolean informationTables,
270
            int tablesOrViews
271 43020 jjdelcerro
        ) {
272
        return new ListTablesOperation(
273 45627 fdiaz
                helper, mode, baseParameters, informationTables, tablesOrViews );
274 43020 jjdelcerro
    }
275
276
    @Override
277
    public DropTableOperation createDropTable(
278 44058 jjdelcerro
            TableReference tableName
279 43020 jjdelcerro
        ) {
280 44058 jjdelcerro
        return new DropTableOperation(helper, tableName);
281 43020 jjdelcerro
    }
282
283
    @Override
284
    public CreateTableOperation createTable(
285 44058 jjdelcerro
            TableReference table,
286 43020 jjdelcerro
            FeatureType type,
287
            List<Pair<String, SQLBuilder.Privilege>> userAndPrivileges,
288
            List<String> additionalSQLs
289
        ) throws DataException {
290
        return new CreateTableOperation(
291 44058 jjdelcerro
                helper, table, type,
292 43020 jjdelcerro
                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 44058 jjdelcerro
            TableReference table
304 43020 jjdelcerro
        ) {
305 44058 jjdelcerro
        return new UpdateTableStatisticsOperation(helper, table);
306 43020 jjdelcerro
    }
307
308
    @Override
309
    public CanModifyTableOperation createCanModifyTableOperation(
310 44058 jjdelcerro
            TableReference table
311 43020 jjdelcerro
        ) {
312 44058 jjdelcerro
        return new CanModifyTableOperation(helper, table);
313 43020 jjdelcerro
    }
314
315 43377 jjdelcerro
    @Override
316
    public ExecuteOperation createExecute(String sql) {
317
        return new ExecuteOperation(helper, sql);
318
    }
319 45473 fdiaz
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 46277 jjdelcerro
    @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 45473 fdiaz
346 46277 jjdelcerro
347 43377 jjdelcerro
348 46277 jjdelcerro
349 43020 jjdelcerro
}