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

History | View | Annotate | Download (8.42 KB)

1
package org.gvsig.fmap.dal.store.jdbc2.spi.operations;
2

    
3
import java.util.Iterator;
4
import java.util.List;
5
import org.apache.commons.lang3.StringUtils;
6
import org.apache.commons.lang3.tuple.Pair;
7
import org.cresques.cts.IProjection;
8
import org.gvsig.fmap.dal.exception.DataException;
9
import org.gvsig.fmap.dal.feature.EditableFeatureType;
10
import org.gvsig.fmap.dal.feature.FeatureQuery;
11
import org.gvsig.fmap.dal.feature.FeatureType;
12
import org.gvsig.fmap.dal.SQLBuilder;
13
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices;
14
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters;
15
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
16
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
17
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
18
import org.gvsig.fmap.geom.primitive.Envelope;
19

    
20
public class OperationsFactoryBase implements OperationsFactory {
21

    
22
    public static class DefaultTableReference implements TableReference {
23

    
24
        private final String database;
25
        private final String schema;
26
        private final String table;
27
        private final String subquery;
28

    
29
        public DefaultTableReference(String database, String schema, String table, String subquery) {
30
            this.database = StringUtils.defaultIfBlank(database, null);
31
            this.schema = StringUtils.defaultIfBlank(schema, null);
32
            this.table = StringUtils.defaultIfBlank(table, null);
33
            this.subquery = StringUtils.defaultIfBlank(subquery, null);
34
        }
35
        
36
        @Override
37
        public String getDatabase() {
38
            return this.database;
39
        }
40

    
41
        @Override
42
        public String getSchema() {
43
            return this.schema;
44
        }
45

    
46
        @Override
47
        public String getTable() {
48
            return this.table;
49
        }
50

    
51
        @Override
52
        public String getSubquery() {
53
            return this.subquery;
54
        }
55

    
56
        @Override
57
        public boolean hasDatabase() {
58
            return this.database != null;
59
        }
60
        
61
        @Override
62
        public boolean hasSchema() {
63
            return this.schema != null;
64
        }
65
        
66
        @Override
67
        public boolean hasTable() {
68
            return this.table != null;
69
        }
70
        
71
        @Override
72
        public boolean hasSubquery() {
73
            return this.subquery != null;
74
        }
75

    
76
        @Override
77
        public String toString() {
78
            StringBuilder builder = new StringBuilder();
79
            if( this.hasDatabase() ) {
80
                builder.append(this.database);
81
                builder.append(".");
82
            }
83
            if( this.hasSchema()) {
84
                builder.append(this.schema);
85
                builder.append(".");
86
            }
87
            builder.append(this.table);
88
            if( this.hasSubquery() ) {
89
                builder.append("[");
90
                builder.append(this.subquery);
91
                builder.append("]");
92
            }
93
            return builder.toString();
94
        }
95
        
96
        
97
    }
98
    
99
    protected final JDBCHelper helper;
100

    
101
    public OperationsFactoryBase(JDBCHelper helper) {
102
        this.helper = helper;
103
    }
104

    
105
    @Override
106
    public TableReference createTableReference(JDBCStoreParameters params) {
107
        TableReference t = new DefaultTableReference(
108
                params.getDBName(),
109
                params.getSchema(),
110
                params.getTable(),
111
                params.getSQL()
112
        );
113
        return t;
114
    }
115

    
116
    @Override
117
    public TableReference createTableReference(JDBCNewStoreParameters params) {
118
        TableReference t = new DefaultTableReference(
119
                params.getDBName(),
120
                params.getSchema(),
121
                params.getTable(),
122
                null
123
        );
124
        return t;
125
    }
126

    
127
    @Override
128
    public TableReference createTableReference(String database, String schema, String table, String subquery) {
129
        TableReference t = new DefaultTableReference(database, schema, table, subquery);
130
        return t;
131
    }
132

    
133
    
134
    @Override
135
    public FetchFeatureTypeOperation createFetchFeatureType(
136
            EditableFeatureType type, 
137
            TableReference table, 
138
            List<String> primaryKeys, 
139
            String defaultGeometryField, 
140
            IProjection crs
141
        ) {
142
        return new FetchFeatureTypeOperation(helper, type, table, 
143
                primaryKeys, defaultGeometryField, crs);
144
    }
145
    
146
    @Override
147
    public FetchFeatureProviderByReferenceOperation createFetchFeatureProviderByReference(
148
            FeatureReferenceProviderServices reference, 
149
            FeatureType featureType, 
150
            TableReference table
151
        ) {
152
        return new FetchFeatureProviderByReferenceOperation(helper, reference, 
153
                featureType, table);
154
    }
155

    
156
    @Override
157
    public CalculateEnvelopeOfColumnOperation createCalculateEnvelopeOfColumn(
158
            FeatureType featureType,
159
            TableReference table, 
160
            String columnName, 
161
            String baseFilter, 
162
            Envelope workingArea, 
163
            IProjection crs
164
        ) {
165
        return new CalculateEnvelopeOfColumnOperation(helper, 
166
                featureType, table, columnName, baseFilter, workingArea, crs);
167
    }
168

    
169
    @Override
170
    public PerformChangesOperation createPerformChanges(
171
            TableReference table, 
172
            FeatureType type, 
173
            Iterator deleteds, 
174
            Iterator inserteds, 
175
            Iterator updateds, 
176
            Iterator featureTypesChanged
177
        ) {
178
        return new PerformChangesOperation(helper, table, type, 
179
                deleteds, inserteds, updateds, featureTypesChanged);
180
    }
181

    
182
    @Override
183
    public AppendOperation createAppend(
184
            TableReference table, 
185
            FeatureType type
186
        ) {
187
        return new AppendOperation(helper, table, type);
188
    }
189

    
190
    @Override
191
    public CountOperation createCount(
192
            FeatureType featureType,
193
            TableReference table, 
194
            String baseFilter, 
195
            String filter
196
        ) {
197
        return new CountOperation(helper, featureType, table, baseFilter, filter);
198
    }
199

    
200
    @Override
201
    public TableIsEmptyOperation createTableIsEmpty(
202
            FeatureType featureType,
203
            TableReference table,
204
            String baseFilter, 
205
            String filter
206
        ) {
207
        return new TableIsEmptyOperation(helper, featureType, table, baseFilter, filter);
208
    }
209

    
210
    @Override
211
    public ResultSetForSetProviderOperation createResultSetForSetProvider(
212
            TableReference table, 
213
            String baseFilter, 
214
            String baseOrder, 
215
            FeatureQuery query, 
216
            FeatureType storeType, 
217
            FeatureType setType, 
218
            long limit, 
219
            long offset, 
220
            int fetchSize
221
        ) {
222
        return new ResultSetForSetProviderOperation(helper, table, 
223
                baseFilter, baseOrder, query, storeType, setType, 
224
                limit, offset, fetchSize);
225
    }
226

    
227
    @Override
228
    public ListTablesOperation createListTables(
229
            int mode,
230
            JDBCStoreParameters baseParameters, 
231
            boolean informationTables
232
        ) {
233
        return new ListTablesOperation(
234
                helper, mode, baseParameters, informationTables );
235
    }
236
    
237
    @Override
238
    public DropTableOperation createDropTable( 
239
            TableReference tableName            
240
        ) {
241
        return new DropTableOperation(helper, tableName);
242
    }
243
    
244
    @Override
245
    public CreateTableOperation createTable(
246
            TableReference table, 
247
            FeatureType type, 
248
            List<Pair<String, SQLBuilder.Privilege>> userAndPrivileges, 
249
            List<String> additionalSQLs
250
        ) throws DataException {
251
        return new CreateTableOperation(
252
                helper, table, type, 
253
                userAndPrivileges, additionalSQLs
254
        );
255
    }
256

    
257
    @Override
258
    public CanCreateTablesOperation createCanCreateTables() {
259
        return new CanCreateTablesOperation(helper);
260
    }
261

    
262
    @Override
263
    public UpdateTableStatisticsOperation createUpdateTableStatistics(
264
            TableReference table
265
        ) {
266
        return new UpdateTableStatisticsOperation(helper, table);
267
    }
268
    
269
    @Override
270
    public CanModifyTableOperation createCanModifyTableOperation(
271
            TableReference table
272
        ) {
273
        return new CanModifyTableOperation(helper, table);
274
    }
275
    
276
    @Override
277
    public ExecuteOperation createExecute(String sql) {
278
        return new ExecuteOperation(helper, sql);
279
    }
280
    
281
}