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

History | View | Annotate | Download (7.7 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.JDBCServerExplorerParameters;
16
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
17
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
18
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
19
import org.gvsig.fmap.geom.primitive.Envelope;
20

    
21
public class OperationsFactoryBase implements OperationsFactory {
22

    
23
    protected class DefaultTableReference implements TableReference {
24

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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