/*
* Created on 28/08/2006 23:12:09
*/
package net.jforum.dao.generic;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import net.jforum.JForumExecutionContext;
import net.jforum.dao.MailIntegrationDAO;
import net.jforum.entities.MailIntegration;
import net.jforum.exceptions.DatabaseException;
import net.jforum.util.DbUtils;
import net.jforum.util.preferences.SystemGlobals;
/**
* @author Rafael Steil
* @version $Id: GenericMailIntegrationDAO.java,v 1.3 2006/10/10 00:19:09 rafaelsteil Exp $
*/
public class GenericMailIntegrationDAO implements MailIntegrationDAO
{
/**
* @see net.jforum.dao.MailIntegrationDAO#add(net.jforum.entities.MailIntegration)
*/
public void add(MailIntegration integration)
{
PreparedStatement p = null;
try {
p = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("MailIntegration.add"));
this.prepareForSave(integration, p);
p.executeUpdate();
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(p);
}
}
/**
* @see net.jforum.dao.MailIntegrationDAO#delete(int)
*/
public void delete(int forumId)
{
PreparedStatement p = null;
try {
p = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("MailIntegration.delete"));
p.setInt(1, forumId);
p.executeUpdate();
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(p);
}
}
/**
* @see net.jforum.dao.MailIntegrationDAO#find(int)
*/
public MailIntegration find(int forumId)
{
MailIntegration m = null;
PreparedStatement p = null;
ResultSet rs = null;
try {
p = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("MailIntegration.find"));
p.setInt(1, forumId);
rs = p.executeQuery();
if (rs.next()) {
m = this.buildMailIntegration(rs);
}
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(rs, p);
}
return m;
}
/**
* @see net.jforum.dao.MailIntegrationDAO#findAll()
*/
public List findAll()
{
List l = new ArrayList();
PreparedStatement p = null;
ResultSet rs = null;
try {
p = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("MailIntegration.findAll"));
rs = p.executeQuery();
while (rs.next()) {
l.add(this.buildMailIntegration(rs));
}
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(rs, p);
}
return l;
}
/**
* @see net.jforum.dao.MailIntegrationDAO#update(net.jforum.entities.MailIntegration)
*/
public void update(MailIntegration integration)
{
PreparedStatement p = null;
try {
p = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("MailIntegration.update"));
this.prepareForSave(integration, p);
p.setInt(8, integration.getForumId());
p.executeUpdate();
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(p);
}
}
private MailIntegration buildMailIntegration(ResultSet rs) throws SQLException
{
MailIntegration mi = new MailIntegration();
mi.setForumId(rs.getInt("forum_id"));
mi.setForumEmail(rs.getString("forum_email"));
mi.setPopHost(rs.getString("pop_host"));
mi.setPopPassword(rs.getString("pop_password"));
mi.setPopPort(rs.getInt("pop_port"));
mi.setPopUsername(rs.getString("pop_username"));
mi.setSSL(rs.getInt("pop_ssl") == 1);
return mi;
}
/**
* Given a PreparedStatement, fill its values with the data of a MailIntegration instance
* @param integration the data to fill the statement
* @param p the statement to be filled
* @throws SQLException
*/
private void prepareForSave(MailIntegration integration, PreparedStatement p) throws SQLException
{
p.setInt(1, integration.getForumId());
p.setString(2, integration.getForumEmail());
p.setString(3, integration.getPopHost());
p.setString(4, integration.getPopUsername());
p.setString(5, integration.getPopPassword());
p.setInt(6, integration.getPopPort());
p.setInt(7, integration.isSSL() ? 1 : 0);
}
}