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 @ 46493
History | View | Annotate | Download (10.8 KB)
1 | 45065 | jjdelcerro | /**
|
---|---|---|---|
2 | * gvSIG. Desktop Geographic Information System.
|
||
3 | *
|
||
4 | * Copyright (C) 2007-2020 gvSIG Association.
|
||
5 | *
|
||
6 | * This program is free software; you can redistribute it and/or
|
||
7 | * modify it under the terms of the GNU General Public License
|
||
8 | * as published by the Free Software Foundation; either version 3
|
||
9 | * of the License, or (at your option) any later version.
|
||
10 | *
|
||
11 | * This program is distributed in the hope that it will be useful,
|
||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
14 | * GNU General Public License for more details.
|
||
15 | *
|
||
16 | * You should have received a copy of the GNU General Public License
|
||
17 | * along with this program; if not, write to the Free Software
|
||
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||
19 | * MA 02110-1301, USA.
|
||
20 | *
|
||
21 | * For any additional information, do not hesitate to contact us
|
||
22 | * at info AT gvsig.com, or visit our website www.gvsig.com.
|
||
23 | */
|
||
24 | 43020 | jjdelcerro | package org.gvsig.fmap.dal.store.jdbc2.spi.operations; |
25 | |||
26 | import java.util.Iterator; |
||
27 | import java.util.List; |
||
28 | 44058 | jjdelcerro | import org.apache.commons.lang3.StringUtils; |
29 | 43020 | jjdelcerro | import org.apache.commons.lang3.tuple.Pair; |
30 | import org.cresques.cts.IProjection; |
||
31 | 45473 | fdiaz | import org.gvsig.expressionevaluator.Expression; |
32 | import org.gvsig.fmap.dal.SQLBuilder; |
||
33 | 43020 | jjdelcerro | import org.gvsig.fmap.dal.exception.DataException; |
34 | import org.gvsig.fmap.dal.feature.EditableFeatureType; |
||
35 | import org.gvsig.fmap.dal.feature.FeatureQuery; |
||
36 | import org.gvsig.fmap.dal.feature.FeatureType; |
||
37 | import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices; |
||
38 | 44058 | jjdelcerro | import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters; |
39 | 45165 | jjdelcerro | import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters; |
40 | 43020 | jjdelcerro | import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters; |
41 | import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper; |
||
42 | import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory; |
||
43 | import org.gvsig.fmap.geom.primitive.Envelope; |
||
44 | |||
45 | public class OperationsFactoryBase implements OperationsFactory { |
||
46 | |||
47 | 44361 | jjdelcerro | public static class DefaultTableReference implements TableReference { |
48 | 44058 | jjdelcerro | |
49 | private final String database; |
||
50 | private final String schema; |
||
51 | private final String table; |
||
52 | private final String subquery; |
||
53 | |||
54 | public DefaultTableReference(String database, String schema, String table, String subquery) { |
||
55 | this.database = StringUtils.defaultIfBlank(database, null); |
||
56 | this.schema = StringUtils.defaultIfBlank(schema, null); |
||
57 | this.table = StringUtils.defaultIfBlank(table, null); |
||
58 | this.subquery = StringUtils.defaultIfBlank(subquery, null); |
||
59 | } |
||
60 | |||
61 | @Override
|
||
62 | public String getDatabase() { |
||
63 | return this.database; |
||
64 | } |
||
65 | |||
66 | @Override
|
||
67 | public String getSchema() { |
||
68 | return this.schema; |
||
69 | } |
||
70 | |||
71 | @Override
|
||
72 | public String getTable() { |
||
73 | return this.table; |
||
74 | } |
||
75 | |||
76 | @Override
|
||
77 | public String getSubquery() { |
||
78 | return this.subquery; |
||
79 | } |
||
80 | |||
81 | @Override
|
||
82 | public boolean hasDatabase() { |
||
83 | return this.database != null; |
||
84 | } |
||
85 | |||
86 | @Override
|
||
87 | public boolean hasSchema() { |
||
88 | return this.schema != null; |
||
89 | } |
||
90 | |||
91 | @Override
|
||
92 | public boolean hasTable() { |
||
93 | return this.table != null; |
||
94 | } |
||
95 | |||
96 | @Override
|
||
97 | public boolean hasSubquery() { |
||
98 | return this.subquery != null; |
||
99 | } |
||
100 | 44331 | jjdelcerro | |
101 | @Override
|
||
102 | public String toString() { |
||
103 | StringBuilder builder = new StringBuilder(); |
||
104 | if( this.hasDatabase() ) { |
||
105 | builder.append(this.database);
|
||
106 | builder.append(".");
|
||
107 | } |
||
108 | if( this.hasSchema()) { |
||
109 | builder.append(this.schema);
|
||
110 | builder.append(".");
|
||
111 | } |
||
112 | builder.append(this.table);
|
||
113 | if( this.hasSubquery() ) { |
||
114 | builder.append("[");
|
||
115 | builder.append(this.subquery);
|
||
116 | builder.append("]");
|
||
117 | } |
||
118 | return builder.toString();
|
||
119 | } |
||
120 | 44058 | jjdelcerro | |
121 | 44331 | jjdelcerro | |
122 | 44058 | jjdelcerro | } |
123 | |||
124 | 43020 | jjdelcerro | protected final JDBCHelper helper; |
125 | |||
126 | public OperationsFactoryBase(JDBCHelper helper) {
|
||
127 | this.helper = helper;
|
||
128 | } |
||
129 | |||
130 | @Override
|
||
131 | 44058 | jjdelcerro | public TableReference createTableReference(JDBCStoreParameters params) {
|
132 | TableReference t = new DefaultTableReference(
|
||
133 | params.getDBName(), |
||
134 | params.getSchema(), |
||
135 | params.getTable(), |
||
136 | params.getSQL() |
||
137 | ); |
||
138 | return t;
|
||
139 | } |
||
140 | |||
141 | @Override
|
||
142 | public TableReference createTableReference(JDBCNewStoreParameters params) {
|
||
143 | TableReference t = new DefaultTableReference(
|
||
144 | params.getDBName(), |
||
145 | params.getSchema(), |
||
146 | params.getTable(), |
||
147 | null
|
||
148 | ); |
||
149 | return t;
|
||
150 | } |
||
151 | |||
152 | @Override
|
||
153 | public TableReference createTableReference(String database, String schema, String table, String subquery) { |
||
154 | TableReference t = new DefaultTableReference(database, schema, table, subquery);
|
||
155 | return t;
|
||
156 | } |
||
157 | |||
158 | |||
159 | @Override
|
||
160 | 43020 | jjdelcerro | public FetchFeatureTypeOperation createFetchFeatureType(
|
161 | EditableFeatureType type, |
||
162 | 44058 | jjdelcerro | TableReference table, |
163 | 43020 | jjdelcerro | List<String> primaryKeys, |
164 | String defaultGeometryField,
|
||
165 | IProjection crs |
||
166 | ) { |
||
167 | 45626 | fdiaz | return createFetchFeatureType(type, table, primaryKeys, defaultGeometryField, crs, -1, -1); |
168 | } |
||
169 | |||
170 | @Override
|
||
171 | public FetchFeatureTypeOperation createFetchFeatureType(
|
||
172 | EditableFeatureType type, |
||
173 | TableReference table, |
||
174 | List<String> primaryKeys, |
||
175 | String defaultGeometryField,
|
||
176 | IProjection crs, |
||
177 | int geometryType,
|
||
178 | int geometrySubtype
|
||
179 | ) { |
||
180 | 44058 | jjdelcerro | return new FetchFeatureTypeOperation(helper, type, table, |
181 | 45626 | fdiaz | primaryKeys, defaultGeometryField, crs, geometryType, geometrySubtype); |
182 | 43020 | jjdelcerro | } |
183 | 43377 | jjdelcerro | |
184 | 43020 | jjdelcerro | @Override
|
185 | public FetchFeatureProviderByReferenceOperation createFetchFeatureProviderByReference(
|
||
186 | FeatureReferenceProviderServices reference, |
||
187 | FeatureType featureType, |
||
188 | 44058 | jjdelcerro | TableReference table |
189 | 43020 | jjdelcerro | ) { |
190 | return new FetchFeatureProviderByReferenceOperation(helper, reference, |
||
191 | 44058 | jjdelcerro | featureType, table); |
192 | 43020 | jjdelcerro | } |
193 | |||
194 | @Override
|
||
195 | public CalculateEnvelopeOfColumnOperation createCalculateEnvelopeOfColumn(
|
||
196 | 44376 | jjdelcerro | FeatureType featureType, |
197 | 44058 | jjdelcerro | TableReference table, |
198 | 43020 | jjdelcerro | String columnName,
|
199 | String baseFilter,
|
||
200 | Envelope workingArea, |
||
201 | IProjection crs |
||
202 | ) { |
||
203 | 44058 | jjdelcerro | return new CalculateEnvelopeOfColumnOperation(helper, |
204 | 44376 | jjdelcerro | featureType, table, columnName, baseFilter, workingArea, crs); |
205 | 43020 | jjdelcerro | } |
206 | |||
207 | @Override
|
||
208 | public PerformChangesOperation createPerformChanges(
|
||
209 | 44058 | jjdelcerro | TableReference table, |
210 | 43020 | jjdelcerro | FeatureType type, |
211 | Iterator deleteds,
|
||
212 | Iterator inserteds,
|
||
213 | Iterator updateds,
|
||
214 | Iterator featureTypesChanged
|
||
215 | ) { |
||
216 | 44058 | jjdelcerro | return new PerformChangesOperation(helper, table, type, |
217 | 43020 | jjdelcerro | deleteds, inserteds, updateds, featureTypesChanged); |
218 | } |
||
219 | |||
220 | @Override
|
||
221 | public AppendOperation createAppend(
|
||
222 | 44058 | jjdelcerro | TableReference table, |
223 | 43020 | jjdelcerro | FeatureType type |
224 | ) { |
||
225 | 44058 | jjdelcerro | return new AppendOperation(helper, table, type); |
226 | 43020 | jjdelcerro | } |
227 | |||
228 | @Override
|
||
229 | public CountOperation createCount(
|
||
230 | 44376 | jjdelcerro | FeatureType featureType, |
231 | 44058 | jjdelcerro | TableReference table, |
232 | 43020 | jjdelcerro | String baseFilter,
|
233 | 44727 | jjdelcerro | FeatureQuery query |
234 | 43020 | jjdelcerro | ) { |
235 | 44727 | jjdelcerro | return new CountOperation(helper, featureType, table, baseFilter, query); |
236 | 43020 | jjdelcerro | } |
237 | |||
238 | @Override
|
||
239 | public TableIsEmptyOperation createTableIsEmpty(
|
||
240 | 44376 | jjdelcerro | FeatureType featureType, |
241 | 44058 | jjdelcerro | TableReference table, |
242 | 43020 | jjdelcerro | String baseFilter,
|
243 | 46010 | jjdelcerro | FeatureQuery query |
244 | 43020 | jjdelcerro | ) { |
245 | 46010 | jjdelcerro | return new TableIsEmptyOperation(helper, featureType, table, baseFilter, query); |
246 | 43020 | jjdelcerro | } |
247 | |||
248 | @Override
|
||
249 | public ResultSetForSetProviderOperation createResultSetForSetProvider(
|
||
250 | 44058 | jjdelcerro | TableReference table, |
251 | 43020 | jjdelcerro | String baseFilter,
|
252 | String baseOrder,
|
||
253 | FeatureQuery query, |
||
254 | FeatureType storeType, |
||
255 | FeatureType setType, |
||
256 | long limit,
|
||
257 | long offset,
|
||
258 | int fetchSize
|
||
259 | ) { |
||
260 | 44058 | jjdelcerro | return new ResultSetForSetProviderOperation(helper, table, |
261 | baseFilter, baseOrder, query, storeType, setType, |
||
262 | 43020 | jjdelcerro | limit, offset, fetchSize); |
263 | } |
||
264 | |||
265 | @Override
|
||
266 | public ListTablesOperation createListTables(
|
||
267 | int mode,
|
||
268 | 45165 | jjdelcerro | JDBCServerExplorerParameters baseParameters, |
269 | 45627 | fdiaz | boolean informationTables,
|
270 | int tablesOrViews
|
||
271 | 43020 | jjdelcerro | ) { |
272 | return new ListTablesOperation( |
||
273 | 45627 | fdiaz | helper, mode, baseParameters, informationTables, tablesOrViews ); |
274 | 43020 | jjdelcerro | } |
275 | |||
276 | @Override
|
||
277 | public DropTableOperation createDropTable(
|
||
278 | 44058 | jjdelcerro | TableReference tableName |
279 | 43020 | jjdelcerro | ) { |
280 | 44058 | jjdelcerro | return new DropTableOperation(helper, tableName); |
281 | 43020 | jjdelcerro | } |
282 | |||
283 | @Override
|
||
284 | public CreateTableOperation createTable(
|
||
285 | 44058 | jjdelcerro | TableReference table, |
286 | 43020 | jjdelcerro | FeatureType type, |
287 | List<Pair<String, SQLBuilder.Privilege>> userAndPrivileges, |
||
288 | List<String> additionalSQLs |
||
289 | ) throws DataException {
|
||
290 | return new CreateTableOperation( |
||
291 | 44058 | jjdelcerro | helper, table, type, |
292 | 43020 | jjdelcerro | userAndPrivileges, additionalSQLs |
293 | ); |
||
294 | } |
||
295 | |||
296 | @Override
|
||
297 | public CanCreateTablesOperation createCanCreateTables() {
|
||
298 | return new CanCreateTablesOperation(helper); |
||
299 | } |
||
300 | |||
301 | @Override
|
||
302 | public UpdateTableStatisticsOperation createUpdateTableStatistics(
|
||
303 | 44058 | jjdelcerro | TableReference table |
304 | 43020 | jjdelcerro | ) { |
305 | 44058 | jjdelcerro | return new UpdateTableStatisticsOperation(helper, table); |
306 | 43020 | jjdelcerro | } |
307 | |||
308 | @Override
|
||
309 | public CanModifyTableOperation createCanModifyTableOperation(
|
||
310 | 44058 | jjdelcerro | TableReference table |
311 | 43020 | jjdelcerro | ) { |
312 | 44058 | jjdelcerro | return new CanModifyTableOperation(helper, table); |
313 | 43020 | jjdelcerro | } |
314 | |||
315 | 43377 | jjdelcerro | @Override
|
316 | public ExecuteOperation createExecute(String sql) { |
||
317 | return new ExecuteOperation(helper, sql); |
||
318 | } |
||
319 | 45473 | fdiaz | |
320 | @Override
|
||
321 | public UpdatePassThroughOperation createUpdatePassThroughOperation(
|
||
322 | TableReference table, |
||
323 | Object[] parameters, |
||
324 | Expression filter
|
||
325 | ) { |
||
326 | return new UpdatePassThroughOperation(helper, table, parameters, filter); |
||
327 | } |
||
328 | |||
329 | @Override
|
||
330 | public DeletePassThroughOperation createDeletePassThroughOperation(
|
||
331 | TableReference table, |
||
332 | Expression filter
|
||
333 | ) { |
||
334 | return new DeletePassThroughOperation(helper, table, filter); |
||
335 | } |
||
336 | |||
337 | 46277 | jjdelcerro | @Override
|
338 | public RetrieveValueOperation createRetrieveValue(
|
||
339 | TableReference createTableReference, |
||
340 | String filter,
|
||
341 | String order,
|
||
342 | String fieldname) {
|
||
343 | return new RetrieveValueOperation(helper, createTableReference, filter, order, fieldname); |
||
344 | } |
||
345 | 45473 | fdiaz | |
346 | 46277 | jjdelcerro | |
347 | 43377 | jjdelcerro | |
348 | 46277 | jjdelcerro | |
349 | 43020 | jjdelcerro | } |