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

History | View | Annotate | Download (8.28 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
            TableReference table, 
159
            String columnName, 
160
            String baseFilter, 
161
            Envelope workingArea, 
162
            IProjection crs
163
        ) {
164
        return new CalculateEnvelopeOfColumnOperation(helper, 
165
                table, columnName, baseFilter, workingArea, crs);
166
    }
167

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

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

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

    
198
    @Override
199
    public TableIsEmptyOperation createTableIsEmpty(
200
            TableReference table,
201
            String baseFilter, 
202
            String filter
203
        ) {
204
        return new TableIsEmptyOperation(helper, table, baseFilter, filter);
205
    }
206

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

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

    
254
    @Override
255
    public CanCreateTablesOperation createCanCreateTables() {
256
        return new CanCreateTablesOperation(helper);
257
    }
258

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