package org.basex.query.util; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import org.basex.util.Util; import org.basex.util.hash.IntMap; /** * Opened JDBC connections. * * @author BaseX Team 2005-12, BSD License * @author Rositsa Shadura */ public final class JDBCConnections { /** Last inserted id. */ private int lastId = -1; /** Map with all open connections and prepared statements with unique ids. */ private final IntMap<Object> conns = new IntMap<Object>(); /** * Adds a connection or prepared statement to depot. * @param obj connection or prepared statement * @return connection/prepared statement id */ public int add(final Object obj) { conns.add(++lastId, obj); return lastId; } /** * Returns connection or prepared statement with the given id. * @param id id * @return connection or prepared statement */ public Object get(final int id) { return conns.get(id); } /** * Removes either a connection or a prepared statement from the depot. * @param id connection/prepared statement id */ public void remove(final int id) { conns.delete(id); } /** * Closes all opened connections. */ public void close() { for(int i = 0; i < conns.size(); i++) { final int key = conns.key(i); final Object obj = conns.get(key); if(obj != null) { try { if(obj instanceof Connection) ((Connection) obj).close(); else ((PreparedStatement) obj).close(); } catch(final SQLException ex) { Util.debug(ex); } } } } }