Java tutorial
/* * Copyright 2012 LinkedIn Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package azkaban.database; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import azkaban.utils.Props; public abstract class AbstractJdbcLoader { /** * Used for when we store text data. Plain uses UTF8 encoding. */ public static enum EncodingType { PLAIN(1), GZIP(2); private int numVal; EncodingType(int numVal) { this.numVal = numVal; } public int getNumVal() { return numVal; } public static EncodingType fromInteger(int x) { switch (x) { case 1: return PLAIN; case 2: return GZIP; default: return PLAIN; } } } private AzkabanDataSource dataSource; public AbstractJdbcLoader(Props props) { dataSource = DataSourceUtils.getDataSource(props); } protected Connection getDBConnection(boolean autoCommit) throws IOException { Connection connection = null; try { connection = dataSource.getConnection(); connection.setAutoCommit(autoCommit); } catch (Exception e) { DbUtils.closeQuietly(connection); throw new IOException("Error getting DB connection.", e); } return connection; } protected QueryRunner createQueryRunner() { return new QueryRunner(dataSource); } protected boolean allowsOnDuplicateKey() { return dataSource.allowsOnDuplicateKey(); } public static class IntHandler implements ResultSetHandler<Integer> { @Override public Integer handle(ResultSet rs) throws SQLException { if (!rs.next()) { return 0; } return rs.getInt(1); } } public static class SingleStringHandler implements ResultSetHandler<String> { @Override public String handle(ResultSet rs) throws SQLException { if (!rs.next()) { return null; } return rs.getString(1); } } public static class IntListHandler implements ResultSetHandler<ArrayList<Integer>> { @Override public ArrayList<Integer> handle(ResultSet rs) throws SQLException { ArrayList<Integer> results = new ArrayList<Integer>(); while (rs.next()) { results.add(rs.getInt(1)); } return results; } } public static class StringListHandler implements ResultSetHandler<ArrayList<String>> { @Override public ArrayList<String> handle(ResultSet rs) throws SQLException { ArrayList<String> results = new ArrayList<String>(); while (rs.next()) { results.add(rs.getString(1)); } return results; } } }