package in.partake.model.dao.postgres9.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import in.partake.model.dao.DAOException; import in.partake.model.dao.DataIterator; import in.partake.model.dao.PartakeConnection; import in.partake.model.dao.access.IConfigurationItemAccess; import in.partake.model.dao.postgres9.Postgres9Connection; import in.partake.model.dao.postgres9.Postgres9Dao; import in.partake.model.dto.ConfigurationItem; public class Postgres9ConfigurationItemDao extends Postgres9Dao implements IConfigurationItemAccess { static final String TABLE_NAME = "ConfigurationItems"; @Override public void initialize(PartakeConnection con) throws DAOException { } @Override public void truncate(PartakeConnection con) throws DAOException { Postgres9Connection pcon = (Postgres9Connection) con; removeAll(pcon, TABLE_NAME); } @Override public void put(PartakeConnection con, ConfigurationItem t) throws DAOException { if (exists(con, t.getPrimaryKey())) update(con, t); else insert(con, t); } public void insert(PartakeConnection con, ConfigurationItem t) throws DAOException { Postgres9Connection pcon = (Postgres9Connection) con; Connection cn = pcon.getConnection(); PreparedStatement ps = null; try { String sql = "INSERT INTO " + TABLE_NAME + "(key, value) VALUES(?, ?)"; ps = cn.prepareStatement(sql); ps.setString(1, t.key()); ps.setString(2, t.value()); ps.execute(); } catch (SQLException e) { throw new DAOException(e); } finally { close(ps); } } public void update(PartakeConnection con, ConfigurationItem t) throws DAOException { Postgres9Connection pcon = (Postgres9Connection) con; Connection cn = pcon.getConnection(); PreparedStatement ps = null; try { String sql = "UPDATE " + TABLE_NAME + " SET value = ? WHERE key = ?"; ps = cn.prepareStatement(sql); ps.setString(1, t.value()); ps.setString(2, t.key()); ps.execute(); } catch (SQLException e) { throw new DAOException(e); } finally { close(ps); } } @Override public ConfigurationItem find(PartakeConnection con, String key) throws DAOException { Postgres9Connection pcon = (Postgres9Connection) con; Connection cn = pcon.getConnection(); PreparedStatement ps = null; ResultSet rs = null; try { String sql = "SELECT value FROM " + TABLE_NAME + " WHERE key = ?"; ps = cn.prepareStatement(sql); ps.setString(1, key); rs = ps.executeQuery(); if (rs.next()) { String value = rs.getString(1); return new ConfigurationItem(key, value); } else return null; } catch (SQLException e) { throw new DAOException(e); } finally { close(rs); close(ps); } } @Override public boolean exists(PartakeConnection con, String key) throws DAOException { Postgres9Connection pcon = (Postgres9Connection) con; Connection cn = pcon.getConnection(); PreparedStatement ps = null; ResultSet rs = null; try { String sql = "SELECT 1 FROM " + TABLE_NAME + " WHERE key = ?"; ps = cn.prepareStatement(sql); ps.setString(1, key); rs = ps.executeQuery(); return rs.next(); } catch (SQLException e) { throw new DAOException(e); } finally { close(rs); close(ps); } } @Override public void remove(PartakeConnection con, String key) throws DAOException { Postgres9Connection pcon = (Postgres9Connection) con; Connection cn = pcon.getConnection(); PreparedStatement ps = null; try { String sql = "DELETE FROM " + TABLE_NAME + " WHERE key = ?"; ps = cn.prepareStatement(sql); ps.setString(1, key); ps.execute(); } catch (SQLException e) { throw new DAOException(e); } finally { close(ps); } } @Override public DataIterator<ConfigurationItem> getIterator(PartakeConnection con) throws DAOException { throw new RuntimeException("Not implemented yet"); } @Override public int count(PartakeConnection con) throws DAOException { throw new RuntimeException("Not implemented yet"); } }