Skip to content
Snippets Groups Projects
Commit d625f5e6 authored by Nikolaus Krismer's avatar Nikolaus Krismer
Browse files

remoced apache dbutils dependency (added own class for closing database

objects quietly)
parent 05f4f196
No related branches found
No related tags found
No related merge requests found
......@@ -128,7 +128,6 @@ buildscript {
}
dependencies {
compile group: 'commons-dbutils', name: 'commons-dbutils', version: '+'
compile group: 'commons-io', name: 'commons-io', version: '+'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '+'
compile group: 'com.jolbox', name: 'bonecp', version: '+'
......
......@@ -10,6 +10,7 @@ import com.tngtech.configbuilder.annotation.typetransformer.TypeTransformer;
import com.tngtech.configbuilder.annotation.typetransformer.TypeTransformers;
import com.tngtech.configbuilder.annotation.valueextractor.PropertyValue;
import it.unibz.inf.isochrone.db.DbUtils;
import it.unibz.inf.isochrone.db.TableEntry;
import it.unibz.inf.isochrone.util.EnumContainer.TableType;
import it.unibz.inf.isochrone.util.ResourceHelper;
......@@ -17,6 +18,7 @@ import it.unibz.inf.isochrone.util.ResourceHelper;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
......@@ -426,10 +428,17 @@ public class ConfigDataset {
private static Collection<String> filterInvalidDatasets(final Collection<String> datasets) {
LOGGER.info("Filtering invalid datasets (e.g. which have no database tables)");
final ConfigIsochrone config = ConfigIsochrone.getInstance();
final Collection<String> allTables;
try {
allTables = DbUtils.getAllTables(config.getConnection());
} catch (SQLException e) {
LOGGER.warn("Could not get tables from database... datasets will not be filtered at all");
return datasets;
}
final Collection<String> filteredList = new ArrayList<>(datasets.size());
final Collection<String> allTables = config.getAllTables();
for (final String ds : datasets) {
final ConfigDataset c = ConfigDataset.createInstance(ds);
if (c.hasValidDatabase(allTables)) {
......
......@@ -10,16 +10,11 @@ import com.tngtech.configbuilder.annotation.valueextractor.PropertyValue;
import it.unibz.inf.isochrone.db.ConnectionFactory;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import javax.validation.constraints.NotNull;
import org.apache.commons.dbutils.DbUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -163,32 +158,4 @@ public final class ConfigIsochrone {
}
}
public Collection<String> getAllTables() {
final Connection connection = getConnection();
if (connection == null) {
throw new NullPointerException("Connection to database could not be initialized");
}
final Collection<String> result = new ArrayList<>();
final String query = "SELECT tablename FROM pg_tables WHERE schemaname='public'";
ResultSet rs = null;
CallableStatement stmt = null;
try {
stmt = connection.prepareCall(query);
rs = stmt.executeQuery();
while (rs.next()) {
result.add(rs.getString("tablename"));
}
} catch (SQLException e) {
LOGGER.warn("Could not get tables from database");
} finally {
DbUtils.closeQuietly(rs);
DbUtils.closeQuietly(stmt);
DbUtils.closeQuietly(connection);
}
return result;
}
}
......@@ -21,8 +21,6 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.apache.commons.dbutils.DbUtils;
/**
* <p>
* Database layer. Contains all database queries for the different
......
package it.unibz.inf.isochrone.db;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
/**
* A collection of JDBC helper methods. This class is thread safe.
*/
public final class DbUtils {
// CHECKSTYLE:OFF EmptyBlock
private DbUtils() { }
/**
* Close a <code>Connection</code>, avoid closing if null.
*
* @param conn Connection to close.
* @throws SQLException if a database access error occurs
*/
public static void close(final Connection conn) throws SQLException {
if (conn != null) {
conn.close();
}
}
/**
* Close a <code>ResultSet</code>, avoid closing if null.
*
* @param rs ResultSet to close.
* @throws SQLException if a database access error occurs
*/
public static void close(final ResultSet rs) throws SQLException {
if (rs != null) {
rs.close();
}
}
/**
* Close a <code>Statement</code>, avoid closing if null.
*
* @param stmt Statement to close.
* @throws SQLException if a database access error occurs
*/
public static void close(final Statement stmt) throws SQLException {
if (stmt != null) {
stmt.close();
}
}
/**
* Close a <code>Connection</code>, avoid closing if null and hide
* any SQLExceptions that occur.
*
* @param conn Connection to close.
*/
public static void closeQuietly(final Connection conn) {
try {
close(conn);
} catch (SQLException e) {
// quiet
}
}
/**
* Close a <code>Connection</code>, <code>Statement</code> and <code>ResultSet</code>. Avoid closing if null and hide any
* SQLExceptions that occur.
*
* @param conn Connection to close.
* @param stmt Statement to close.
* @param rs ResultSet to close.
*/
public static void closeQuietly(final Connection conn, final Statement stmt, final ResultSet rs) {
try {
closeQuietly(rs);
} finally {
try {
closeQuietly(stmt);
} finally {
closeQuietly(conn);
}
}
}
/**
* Close a <code>ResultSet</code>, avoid closing if null and hide any
* SQLExceptions that occur.
*
* @param rs ResultSet to close.
*/
public static void closeQuietly(final ResultSet rs) {
try {
close(rs);
} catch (SQLException e) {
// quiet
}
}
/**
* Close a <code>Statement</code>, avoid closing if null and hide
* any SQLExceptions that occur.
*
* @param stmt Statement to close.
*/
public static void closeQuietly(final Statement stmt) {
try {
close(stmt);
} catch (SQLException e) {
// quiet
}
}
// CHECKSTYLE:ON EmptyBlock
public static Collection<String> getAllTables(final Connection connection) throws SQLException {
if (connection == null) {
throw new NullPointerException("Connection to database could not be initialized");
}
final Collection<String> result = new ArrayList<>();
final String query = "SELECT tablename FROM pg_tables WHERE schemaname='public'";
ResultSet rs = null;
CallableStatement stmt = null;
try {
stmt = connection.prepareCall(query);
rs = stmt.executeQuery();
while (rs.next()) {
result.add(rs.getString("tablename"));
}
} finally {
DbUtils.closeQuietly(rs);
DbUtils.closeQuietly(stmt);
DbUtils.closeQuietly(connection);
}
return result;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment