/** * Este arquivo é parte do Biblivre3. * * Biblivre3 é um software livre; você pode redistribuí-lo e/ou * modificá-lo dentro dos termos da Licença Pública Geral GNU como * publicada pela Fundação do Software Livre (FSF); na versão 3 da * Licença, ou (caso queira) qualquer versão posterior. * * Este programa é distribuído na esperança de que possa ser útil, * mas SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de * MERCANTIBILIDADE OU ADEQUAÇÃO PARA UM FIM PARTICULAR. Veja a * Licença Pública Geral GNU para maiores detalhes. * * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto * com este programa, Se não, veja em <http://www.gnu.org/licenses/>. * * @author Alberto Wagner <alberto@biblivre.org.br> * @author Danniel Willian <danniel@biblivre.org.br> * */ package biblivre3.z3950; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import mercury.DAO; import mercury.DAOException; /** * * @author Danniel Nascimento (dannielwillian@biblivre.org.br) * @since 10/02/2009 */ public class Z3950DAO extends DAO { public final List<Z3950ServerDTO> listServers() { final List<Z3950ServerDTO> list = new ArrayList<Z3950ServerDTO>(); Connection con = null; final String sql = "SELECT * FROM z3950_server ORDER BY server_id ASC; "; try { con = getDataSource().getConnection(); final PreparedStatement pstt = con.prepareStatement(sql); final ResultSet rs = pstt.executeQuery(); while (rs.next()) { list.add(this.populateServer(rs)); } } catch (SQLException sqle) { log.error(sqle.getMessage(), sqle); throw new DAOException(sqle.getMessage()); } finally { closeConnection(con); } return list; } public final Z3950ServerDTO findById(Z3950ServerDTO dto) { Connection con = null; final String sql = "SELECT * FROM z3950_server WHERE server_id = ?; "; try { con = getDataSource().getConnection(); final PreparedStatement pstt = con.prepareStatement(sql); pstt.setInt(1, dto.getServerId()); final ResultSet rs = pstt.executeQuery(); while (rs.next()) { return this.populateServer(rs); } } catch (SQLException sqle) { log.error(sqle.getMessage(), sqle); throw new DAOException(sqle.getMessage()); } finally { closeConnection(con); } return null; } public final boolean insert(Z3950ServerDTO dto) { Connection con = null; final String sql = " INSERT INTO z3950_server " + " (server_name, server_url, server_port, server_dbname, server_charset) " + " VALUES (?, ?, ?, ?, ?); "; try { con = getDataSource().getConnection(); final PreparedStatement pstt = con.prepareStatement(sql); pstt.setString(1, dto.getName()); pstt.setString(2, dto.getUrl() ); pstt.setInt(3, dto.getPort()); pstt.setString(4, dto.getCollection()); pstt.setString(5, dto.getCharset()); final Integer result = pstt.executeUpdate(); return result > 0; } catch (SQLException sqle) { log.error(sqle.getMessage(), sqle); throw new DAOException(sqle.getMessage()); } finally { closeConnection(con); } } public final boolean update(Z3950ServerDTO dto) { Connection con = null; final String sql = " UPDATE z3950_server " + " SET server_name = ?, " + " server_url = ?," + " server_port = ?, " + " server_dbname = ?, " + " server_charset = ? " + " WHERE server_id = ?; "; try { con = getDataSource().getConnection(); final PreparedStatement pstt = con.prepareStatement(sql); pstt.setString(1, dto.getName()); pstt.setString(2, dto.getUrl ()); pstt.setInt(3, dto.getPort()); pstt.setString(4, dto.getCollection()); pstt.setString(5, dto.getCharset()); pstt.setInt(6, dto.getServerId()); final Integer result = pstt.executeUpdate(); return result > 0; } catch (SQLException sqle) { log.error(sqle.getMessage(), sqle); throw new DAOException(sqle.getMessage()); } finally { closeConnection(con); } } public final boolean delete(Z3950ServerDTO dto) { Connection con = null; final String sql = " DELETE FROM z3950_server " + " WHERE server_id = ?; "; try { con = getDataSource().getConnection(); final PreparedStatement pstt = con.prepareStatement(sql); pstt.setInt(1, dto.getServerId()); final Integer result = pstt.executeUpdate(); return result > 0; } catch (SQLException sqle) { log.error(sqle.getMessage(), sqle); throw new DAOException(sqle.getMessage()); } finally { closeConnection(con); } } private Z3950ServerDTO populateServer(final ResultSet rs) throws SQLException { Z3950ServerDTO dto = new Z3950ServerDTO(); dto.setServerId(rs.getInt("server_id")); dto.setName(rs.getString("server_name").trim()); dto.setUrl(rs.getString("server_url").trim()); dto.setPort(rs.getInt("server_port")); dto.setCollection(rs.getString("server_dbname")); dto.setCharset(rs.getString("server_charset")); return dto; } }