annotate geo-backend/src/main/java/de/intevation/gnv/geobackend/base/query/QueryExecutorBase.java @ 1127:ebeb56428409

Added license headers and license file. geo-backend/trunk@1261 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 02 Nov 2010 17:52:22 +0000
parents eb777022b628
children
rev   line source
1127
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 895
diff changeset
1 /*
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 895
diff changeset
2 * Copyright (c) 2010 by Intevation GmbH
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 895
diff changeset
3 *
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 895
diff changeset
4 * This program is free software under the LGPL (>=v2.1)
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 895
diff changeset
5 * Read the file LGPL.txt coming with the software for details
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 895
diff changeset
6 * or visit http://www.gnu.org/licenses/ if it does not exist.
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 895
diff changeset
7 */
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 895
diff changeset
8
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
9 package de.intevation.gnv.geobackend.base.query;
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
10
895
eb777022b628 Integrated a CacheCleaner that will cleanup the SQL-Cache if necessary
Tim Englich <tim.englich@intevation.de>
parents: 887
diff changeset
11 import java.sql.ResultSet;
eb777022b628 Integrated a CacheCleaner that will cleanup the SQL-Cache if necessary
Tim Englich <tim.englich@intevation.de>
parents: 887
diff changeset
12 import java.sql.ResultSetMetaData;
eb777022b628 Integrated a CacheCleaner that will cleanup the SQL-Cache if necessary
Tim Englich <tim.englich@intevation.de>
parents: 887
diff changeset
13 import java.sql.SQLException;
eb777022b628 Integrated a CacheCleaner that will cleanup the SQL-Cache if necessary
Tim Englich <tim.englich@intevation.de>
parents: 887
diff changeset
14 import java.util.ArrayList;
eb777022b628 Integrated a CacheCleaner that will cleanup the SQL-Cache if necessary
Tim Englich <tim.englich@intevation.de>
parents: 887
diff changeset
15 import java.util.Collection;
eb777022b628 Integrated a CacheCleaner that will cleanup the SQL-Cache if necessary
Tim Englich <tim.englich@intevation.de>
parents: 887
diff changeset
16 import java.util.List;
eb777022b628 Integrated a CacheCleaner that will cleanup the SQL-Cache if necessary
Tim Englich <tim.englich@intevation.de>
parents: 887
diff changeset
17
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
18 import de.intevation.gnv.geobackend.base.DefaultResult;
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
19 import de.intevation.gnv.geobackend.base.DefaultResultDescriptor;
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
20 import de.intevation.gnv.geobackend.base.Result;
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
21 import de.intevation.gnv.geobackend.base.ResultDescriptor;
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
22
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
23 /**
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
24 * This is an abstract Basicimplementation of the Interface
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
25 * QueryExecutor providing several Helpermethods.
887
b757def3ff55 Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 886
diff changeset
26 * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a>
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
27 *
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
28 */
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
29 public abstract class QueryExecutorBase implements QueryExecutor {
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
30
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
31 /**
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
32 * Constructor
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
33 */
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
34 public QueryExecutorBase() {
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
35 super();
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
36 }
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 541
diff changeset
37
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
38 /**
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
39 * This Method puts the Filtervalues into the Querystring
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
40 * @param queryString the Query which should be manipulated
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
41 * @param filter the values which should be put into the Query
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
42 * @return the manipulated Query
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
43 */
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
44 protected String setFilterValues(String queryString, String[] filter){
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
45 String returnValue = queryString;
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
46 for (int i = 0; i < filter.length; i++){
133
56655046194f Fix Bug setting the Filtervalues into the Statement.
Tim Englich <tim.englich@intevation.de>
parents: 132
diff changeset
47 returnValue = returnValue.replaceFirst("[?]", filter[i]);
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
48 }
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
49 return returnValue;
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
50 }
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 541
diff changeset
51
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
52 /**
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
53 * This Methods converts the ResultSet into an Collection of Result-objects
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
54 * @param resultSet the ResultSet which should be converted
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
55 * @return an Collection containing Result-Objects
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
56 * @throws SQLException
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
57 */
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
58 protected Collection<Result> createResultCollection(ResultSet resultSet) throws SQLException{
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
59 Collection<Result> returnValue = new ArrayList<Result>();
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 541
diff changeset
60
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
61 ResultDescriptor resultDescriptor = null;
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
62 int columns = -1;
271
8aad9d098b08 Integrated Patch of issue57 to get some Memoryusage-improvements
Tim Englich <tim.englich@intevation.de>
parents: 133
diff changeset
63
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
64 List<String> columnNames = null;
271
8aad9d098b08 Integrated Patch of issue57 to get some Memoryusage-improvements
Tim Englich <tim.englich@intevation.de>
parents: 133
diff changeset
65
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
66 while (resultSet.next()){
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
67 if (resultDescriptor == null){
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
68 resultDescriptor = new DefaultResultDescriptor();
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
69 ResultSetMetaData rsmd = resultSet.getMetaData();
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
70 columns = rsmd.getColumnCount();
271
8aad9d098b08 Integrated Patch of issue57 to get some Memoryusage-improvements
Tim Englich <tim.englich@intevation.de>
parents: 133
diff changeset
71
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
72 for (int i = 1; i <= columns; i++){
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
73 resultDescriptor.addColumn(rsmd.getColumnName(i), rsmd.getColumnClassName(i));
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
74 }
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
75 }
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 541
diff changeset
76
271
8aad9d098b08 Integrated Patch of issue57 to get some Memoryusage-improvements
Tim Englich <tim.englich@intevation.de>
parents: 133
diff changeset
77 Result result = convertResult(resultSet, resultDescriptor);
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 541
diff changeset
78
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
79 returnValue.add(result);
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
80 }
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
81 return returnValue;
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
82 }
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
83
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
84 /**
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
85 * This Method converts one Singel ResultSetEntry into an Result-Object
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
86 * @param resultSet the ResultSet where the Entry should be took from.
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
87 * @param resultDescriptor the ResultsetDescriptor which describes the Entry
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
88 * @return an new Result-Objects containing the Values of the ResultSet-Entry
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
89 * @throws SQLException
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
90 */
271
8aad9d098b08 Integrated Patch of issue57 to get some Memoryusage-improvements
Tim Englich <tim.englich@intevation.de>
parents: 133
diff changeset
91 private Result convertResult(ResultSet resultSet, ResultDescriptor resultDescriptor)
8aad9d098b08 Integrated Patch of issue57 to get some Memoryusage-improvements
Tim Englich <tim.englich@intevation.de>
parents: 133
diff changeset
92 throws SQLException {
8aad9d098b08 Integrated Patch of issue57 to get some Memoryusage-improvements
Tim Englich <tim.englich@intevation.de>
parents: 133
diff changeset
93
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
94 Result result = new DefaultResult(resultDescriptor);
271
8aad9d098b08 Integrated Patch of issue57 to get some Memoryusage-improvements
Tim Englich <tim.englich@intevation.de>
parents: 133
diff changeset
95
8aad9d098b08 Integrated Patch of issue57 to get some Memoryusage-improvements
Tim Englich <tim.englich@intevation.de>
parents: 133
diff changeset
96 for (int i = 0, N = resultDescriptor.getColumnCount(); i < N; i++) {
8aad9d098b08 Integrated Patch of issue57 to get some Memoryusage-improvements
Tim Englich <tim.englich@intevation.de>
parents: 133
diff changeset
97 result.addColumnValue(i, resultSet.getObject(i+1));
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
98 }
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
99 return result;
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
100 }
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
101
541
3cbf11c67fdc Experimental caching of SQL results via Ehache
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 271
diff changeset
102 public Collection<Result> cachedResults(String query) {
3cbf11c67fdc Experimental caching of SQL results via Ehache
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 271
diff changeset
103 return null;
3cbf11c67fdc Experimental caching of SQL results via Ehache
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 271
diff changeset
104 }
3cbf11c67fdc Experimental caching of SQL results via Ehache
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 271
diff changeset
105
3cbf11c67fdc Experimental caching of SQL results via Ehache
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 271
diff changeset
106 public void cacheResults(String query, Collection<Result> result) {
3cbf11c67fdc Experimental caching of SQL results via Ehache
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 271
diff changeset
107 }
3cbf11c67fdc Experimental caching of SQL results via Ehache
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 271
diff changeset
108
895
eb777022b628 Integrated a CacheCleaner that will cleanup the SQL-Cache if necessary
Tim Englich <tim.englich@intevation.de>
parents: 887
diff changeset
109 public void clearCache(String[] tableNames) {
eb777022b628 Integrated a CacheCleaner that will cleanup the SQL-Cache if necessary
Tim Englich <tim.englich@intevation.de>
parents: 887
diff changeset
110 }
eb777022b628 Integrated a CacheCleaner that will cleanup the SQL-Cache if necessary
Tim Englich <tim.englich@intevation.de>
parents: 887
diff changeset
111
132
5a583cff97ea Implementation of the Datainfrastructure for fetching Data from different DataStores.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
112 }

http://dive4elements.wald.intevation.org