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 43020 jjdelcerro
package org.gvsig.fmap.dal.store.jdbc2.spi.operations;
2
3
import java.util.Iterator;
4
import java.util.List;
5 44058 jjdelcerro
import org.apache.commons.lang3.StringUtils;
6 43020 jjdelcerro
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 44058 jjdelcerro
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters;
15
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
16 43020 jjdelcerro
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 44058 jjdelcerro
    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 43020 jjdelcerro
    protected final JDBCHelper helper;
80
81
    public OperationsFactoryBase(JDBCHelper helper) {
82
        this.helper = helper;
83
    }
84
85
    @Override
86 44058 jjdelcerro
    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 43020 jjdelcerro
    public FetchFeatureTypeOperation createFetchFeatureType(
116
            EditableFeatureType type,
117 44058 jjdelcerro
            TableReference table,
118 43020 jjdelcerro
            List<String> primaryKeys,
119
            String defaultGeometryField,
120
            IProjection crs
121
        ) {
122 44058 jjdelcerro
        return new FetchFeatureTypeOperation(helper, type, table,
123 43020 jjdelcerro
                primaryKeys, defaultGeometryField, crs);
124
    }
125 43377 jjdelcerro
126 43020 jjdelcerro
    @Override
127
    public FetchFeatureProviderByReferenceOperation createFetchFeatureProviderByReference(
128
            FeatureReferenceProviderServices reference,
129
            FeatureType featureType,
130 44058 jjdelcerro
            TableReference table
131 43020 jjdelcerro
        ) {
132
        return new FetchFeatureProviderByReferenceOperation(helper, reference,
133 44058 jjdelcerro
                featureType, table);
134 43020 jjdelcerro
    }
135
136
    @Override
137
    public CalculateEnvelopeOfColumnOperation createCalculateEnvelopeOfColumn(
138 44058 jjdelcerro
            TableReference table,
139 43020 jjdelcerro
            String columnName,
140
            String baseFilter,
141
            Envelope workingArea,
142
            IProjection crs
143
        ) {
144 44058 jjdelcerro
        return new CalculateEnvelopeOfColumnOperation(helper,
145 43020 jjdelcerro
                table, columnName, baseFilter, workingArea, crs);
146
    }
147
148
    @Override
149
    public PerformChangesOperation createPerformChanges(
150 44058 jjdelcerro
            TableReference table,
151 43020 jjdelcerro
            FeatureType type,
152
            Iterator deleteds,
153
            Iterator inserteds,
154
            Iterator updateds,
155
            Iterator featureTypesChanged
156
        ) {
157 44058 jjdelcerro
        return new PerformChangesOperation(helper, table, type,
158 43020 jjdelcerro
                deleteds, inserteds, updateds, featureTypesChanged);
159
    }
160
161
    @Override
162
    public AppendOperation createAppend(
163 44058 jjdelcerro
            TableReference table,
164 43020 jjdelcerro
            FeatureType type
165
        ) {
166 44058 jjdelcerro
        return new AppendOperation(helper, table, type);
167 43020 jjdelcerro
    }
168
169
    @Override
170
    public CountOperation createCount(
171 44058 jjdelcerro
            TableReference table,
172 43020 jjdelcerro
            String baseFilter,
173
            String filter
174
        ) {
175 44058 jjdelcerro
        return new CountOperation(helper, table, baseFilter, filter);
176 43020 jjdelcerro
    }
177
178
    @Override
179
    public TableIsEmptyOperation createTableIsEmpty(
180 44058 jjdelcerro
            TableReference table,
181 43020 jjdelcerro
            String baseFilter,
182
            String filter
183
        ) {
184 44058 jjdelcerro
        return new TableIsEmptyOperation(helper, table, baseFilter, filter);
185 43020 jjdelcerro
    }
186
187
    @Override
188
    public ResultSetForSetProviderOperation createResultSetForSetProvider(
189 44058 jjdelcerro
            TableReference table,
190 43020 jjdelcerro
            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 44058 jjdelcerro
        return new ResultSetForSetProviderOperation(helper, table,
200
                baseFilter, baseOrder, query, storeType, setType,
201 43020 jjdelcerro
                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 44058 jjdelcerro
            TableReference tableName
217 43020 jjdelcerro
        ) {
218 44058 jjdelcerro
        return new DropTableOperation(helper, tableName);
219 43020 jjdelcerro
    }
220
221
    @Override
222
    public CreateTableOperation createTable(
223 44058 jjdelcerro
            TableReference table,
224 43020 jjdelcerro
            FeatureType type,
225
            List<Pair<String, SQLBuilder.Privilege>> userAndPrivileges,
226
            List<String> additionalSQLs
227
        ) throws DataException {
228
        return new CreateTableOperation(
229 44058 jjdelcerro
                helper, table, type,
230 43020 jjdelcerro
                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 44058 jjdelcerro
            TableReference table
242 43020 jjdelcerro
        ) {
243 44058 jjdelcerro
        return new UpdateTableStatisticsOperation(helper, table);
244 43020 jjdelcerro
    }
245
246
    @Override
247
    public CanModifyTableOperation createCanModifyTableOperation(
248 44058 jjdelcerro
            TableReference table
249 43020 jjdelcerro
        ) {
250 44058 jjdelcerro
        return new CanModifyTableOperation(helper, table);
251 43020 jjdelcerro
    }
252
253 43377 jjdelcerro
    @Override
254
    public ExecuteOperation createExecute(String sql) {
255
        return new ExecuteOperation(helper, sql);
256
    }
257
258 43020 jjdelcerro
}