You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2016/02/02 10:53:20 UTC
[08/21] lucene-solr git commit: SOLR-8618 refactored a couple of
methods out as protected
SOLR-8618 refactored a couple of methods out as protected
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/13c9912b
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/13c9912b
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/13c9912b
Branch: refs/heads/master-solr-8621
Commit: 13c9912b3c4698595db8d07fcbc09fe062ee5404
Parents: 105c6df
Author: Noble Paul <no...@apache.org>
Authored: Sun Jan 31 18:44:39 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Sun Jan 31 18:44:39 2016 +0530
----------------------------------------------------------------------
.../solr/handler/dataimport/JdbcDataSource.java | 70 +++++++++++++-------
1 file changed, 46 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/13c9912b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/JdbcDataSource.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
index 790d502..d485651 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
@@ -294,47 +294,65 @@ public class JdbcDataSource extends
return colNames;
}
- private class ResultSetIterator {
- ResultSet resultSet;
+ protected class ResultSetIterator {
+ private ResultSet resultSet;
- Statement stmt = null;
+ private Statement stmt = null;
- List<String> colNames;
-
- Iterator<Map<String, Object>> rSetIterator;
+
+ private Iterator<Map<String, Object>> rSetIterator;
public ResultSetIterator(String query) {
+ final List<String> colNames;
try {
Connection c = getConnection();
- stmt = c.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
- stmt.setFetchSize(batchSize);
- stmt.setMaxRows(maxRows);
+ stmt = createStatement(c);
LOG.debug("Executing SQL: " + query);
long start = System.nanoTime();
- if (stmt.execute(query)) {
- resultSet = stmt.getResultSet();
- }
+ resultSet = executeStatement(stmt, query);
LOG.trace("Time taken for sql :"
+ TimeUnit.MILLISECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
colNames = readFieldNames(resultSet.getMetaData());
} catch (Exception e) {
wrapAndThrow(SEVERE, e, "Unable to execute query: " + query);
+ return;
}
if (resultSet == null) {
rSetIterator = new ArrayList<Map<String, Object>>().iterator();
return;
}
- rSetIterator = new Iterator<Map<String, Object>>() {
+ rSetIterator = createIterator(stmt, resultSet, convertType, colNames, fieldNameVsType);
+ }
+
+
+ protected Statement createStatement(Connection c) throws SQLException {
+ Statement statement = c.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
+ statement.setFetchSize(batchSize);
+ statement.setMaxRows(maxRows);
+ return statement;
+ }
+
+ protected ResultSet executeStatement(Statement statement, String query) throws SQLException {
+ if (statement.execute(query)) {
+ return statement.getResultSet();
+ }
+ return null;
+ }
+
+
+ protected Iterator<Map<String,Object>> createIterator(Statement stmt, ResultSet resultSet, boolean convertType,
+ List<String> colNames, Map<String,Integer> fieldNameVsType) {
+ return new Iterator<Map<String,Object>>() {
@Override
public boolean hasNext() {
- return hasnext();
+ return hasnext(resultSet, stmt);
}
@Override
- public Map<String, Object> next() {
- return getARow();
+ public Map<String,Object> next() {
+ return getARow(resultSet, convertType, colNames, fieldNameVsType);
}
@Override
@@ -342,12 +360,11 @@ public class JdbcDataSource extends
}
};
}
+
+
- private Iterator<Map<String, Object>> getIterator() {
- return rSetIterator;
- }
-
- private Map<String, Object> getARow() {
+ protected Map<String,Object> getARow(ResultSet resultSet, boolean convertType, List<String> colNames,
+ Map<String,Integer> fieldNameVsType) {
if (resultSet == null)
return null;
Map<String, Object> result = new HashMap<>();
@@ -402,7 +419,7 @@ public class JdbcDataSource extends
return result;
}
- private boolean hasnext() {
+ protected boolean hasnext(ResultSet resultSet, Statement stmt) {
if (resultSet == null)
return false;
try {
@@ -419,7 +436,7 @@ public class JdbcDataSource extends
}
}
- private void close() {
+ protected void close() {
try {
if (resultSet != null)
resultSet.close();
@@ -432,9 +449,14 @@ public class JdbcDataSource extends
stmt = null;
}
}
+
+ protected final Iterator<Map<String,Object>> getIterator() {
+ return rSetIterator;
+ }
+
}
- Connection getConnection() throws Exception {
+ protected Connection getConnection() throws Exception {
long currTime = System.nanoTime();
if (currTime - connLastUsed > CONN_TIME_OUT) {
synchronized (this) {