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

History | View | Annotate | Download (10.4 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
            String filter
244
        ) {
245
        return new TableIsEmptyOperation(helper, featureType, table, baseFilter, filter);
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
        ) {
271
        return new ListTablesOperation(
272
                helper, mode, baseParameters, informationTables );
273
    }
274
    
275
    @Override
276
    public DropTableOperation createDropTable( 
277
            TableReference tableName            
278
        ) {
279
        return new DropTableOperation(helper, tableName);
280
    }
281
    
282
    @Override
283
    public CreateTableOperation createTable(
284
            TableReference table, 
285
            FeatureType type, 
286
            List<Pair<String, SQLBuilder.Privilege>> userAndPrivileges, 
287
            List<String> additionalSQLs
288
        ) throws DataException {
289
        return new CreateTableOperation(
290
                helper, table, type, 
291
                userAndPrivileges, additionalSQLs
292
        );
293
    }
294

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

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

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

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

    
336

    
337
    
338
}