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

History | View | Annotate | Download (7.63 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
    protected 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
    }
77
    
78
    protected final JDBCHelper helper;
79

    
80
    public OperationsFactoryBase(JDBCHelper helper) {
81
        this.helper = helper;
82
    }
83

    
84
    @Override
85
    public TableReference createTableReference(JDBCStoreParameters params) {
86
        TableReference t = new DefaultTableReference(
87
                params.getDBName(),
88
                params.getSchema(),
89
                params.getTable(),
90
                params.getSQL()
91
        );
92
        return t;
93
    }
94

    
95
    @Override
96
    public TableReference createTableReference(JDBCNewStoreParameters params) {
97
        TableReference t = new DefaultTableReference(
98
                params.getDBName(),
99
                params.getSchema(),
100
                params.getTable(),
101
                null
102
        );
103
        return t;
104
    }
105

    
106
    @Override
107
    public TableReference createTableReference(String database, String schema, String table, String subquery) {
108
        TableReference t = new DefaultTableReference(database, schema, table, subquery);
109
        return t;
110
    }
111

    
112
    
113
    @Override
114
    public FetchFeatureTypeOperation createFetchFeatureType(
115
            EditableFeatureType type, 
116
            TableReference table, 
117
            List<String> primaryKeys, 
118
            String defaultGeometryField, 
119
            IProjection crs
120
        ) {
121
        return new FetchFeatureTypeOperation(helper, type, table, 
122
                primaryKeys, defaultGeometryField, crs);
123
    }
124
    
125
    @Override
126
    public FetchFeatureProviderByReferenceOperation createFetchFeatureProviderByReference(
127
            FeatureReferenceProviderServices reference, 
128
            FeatureType featureType, 
129
            TableReference table
130
        ) {
131
        return new FetchFeatureProviderByReferenceOperation(helper, reference, 
132
                featureType, table);
133
    }
134

    
135
    @Override
136
    public CalculateEnvelopeOfColumnOperation createCalculateEnvelopeOfColumn(
137
            TableReference table, 
138
            String columnName, 
139
            String baseFilter, 
140
            Envelope workingArea, 
141
            IProjection crs
142
        ) {
143
        return new CalculateEnvelopeOfColumnOperation(helper, 
144
                table, columnName, baseFilter, workingArea, crs);
145
    }
146

    
147
    @Override
148
    public PerformChangesOperation createPerformChanges(
149
            TableReference table, 
150
            FeatureType type, 
151
            Iterator deleteds, 
152
            Iterator inserteds, 
153
            Iterator updateds, 
154
            Iterator featureTypesChanged
155
        ) {
156
        return new PerformChangesOperation(helper, table, type, 
157
                deleteds, inserteds, updateds, featureTypesChanged);
158
    }
159

    
160
    @Override
161
    public AppendOperation createAppend(
162
            TableReference table, 
163
            FeatureType type
164
        ) {
165
        return new AppendOperation(helper, table, type);
166
    }
167

    
168
    @Override
169
    public CountOperation createCount(
170
            TableReference table, 
171
            String baseFilter, 
172
            String filter
173
        ) {
174
        return new CountOperation(helper, table, baseFilter, filter);
175
    }
176

    
177
    @Override
178
    public TableIsEmptyOperation createTableIsEmpty(
179
            TableReference table,
180
            String baseFilter, 
181
            String filter
182
        ) {
183
        return new TableIsEmptyOperation(helper, table, baseFilter, filter);
184
    }
185

    
186
    @Override
187
    public ResultSetForSetProviderOperation createResultSetForSetProvider(
188
            TableReference table, 
189
            String baseFilter, 
190
            String baseOrder, 
191
            FeatureQuery query, 
192
            FeatureType storeType, 
193
            FeatureType setType, 
194
            long limit, 
195
            long offset, 
196
            int fetchSize
197
        ) {
198
        return new ResultSetForSetProviderOperation(helper, table, 
199
                baseFilter, baseOrder, query, storeType, setType, 
200
                limit, offset, fetchSize);
201
    }
202

    
203
    @Override
204
    public ListTablesOperation createListTables(
205
            int mode,
206
            JDBCStoreParameters baseParameters, 
207
            boolean informationTables
208
        ) {
209
        return new ListTablesOperation(
210
                helper, mode, baseParameters, informationTables );
211
    }
212
    
213
    @Override
214
    public DropTableOperation createDropTable( 
215
            TableReference tableName            
216
        ) {
217
        return new DropTableOperation(helper, tableName);
218
    }
219
    
220
    @Override
221
    public CreateTableOperation createTable(
222
            TableReference table, 
223
            FeatureType type, 
224
            List<Pair<String, SQLBuilder.Privilege>> userAndPrivileges, 
225
            List<String> additionalSQLs
226
        ) throws DataException {
227
        return new CreateTableOperation(
228
                helper, table, type, 
229
                userAndPrivileges, additionalSQLs
230
        );
231
    }
232

    
233
    @Override
234
    public CanCreateTablesOperation createCanCreateTables() {
235
        return new CanCreateTablesOperation(helper);
236
    }
237

    
238
    @Override
239
    public UpdateTableStatisticsOperation createUpdateTableStatistics(
240
            TableReference table
241
        ) {
242
        return new UpdateTableStatisticsOperation(helper, table);
243
    }
244
    
245
    @Override
246
    public CanModifyTableOperation createCanModifyTableOperation(
247
            TableReference table
248
        ) {
249
        return new CanModifyTableOperation(helper, table);
250
    }
251
    
252
    @Override
253
    public ExecuteOperation createExecute(String sql) {
254
        return new ExecuteOperation(helper, sql);
255
    }
256
    
257
}