package edu.hawaii.ics.yucheng; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; interface StatementRunner { void run(Statement statement) throws ProgramException, SQLException; } final class StatementFactory { public static void newStatement(ConfigurationNode node, StatementRunner runner) throws ProgramException { try { final Connection connection = node.getConnection(); try { final Statement statement = connection.createStatement(); try { runner.run(statement); } finally { statement.close(); } } finally { connection.close(); } } catch (final SQLException e) { throw new ProgramException(e); } } }