EMailAddressDAOImpl.java
上传用户:qing5858
上传日期:2015-10-27
资源大小:6056k
文件大小:6k
源码类别:

搜索引擎

开发平台:

Java

  1. package net.javacoding.jspider.core.storage.jdbc;
  2. import net.javacoding.jspider.core.storage.EMailAddressDAO;
  3. import net.javacoding.jspider.core.storage.spi.EMailAddressDAOSPI;
  4. import net.javacoding.jspider.core.storage.spi.StorageSPI;
  5. import net.javacoding.jspider.core.model.*;
  6. import net.javacoding.jspider.core.logging.Log;
  7. import net.javacoding.jspider.core.logging.LogFactory;
  8. import java.sql.*;
  9. import java.util.ArrayList;
  10. /**
  11.  * $Id: EMailAddressDAOImpl.java,v 1.2 2003/04/11 16:37:06 vanrogu Exp $
  12.  */
  13. class EMailAddressDAOImpl implements EMailAddressDAOSPI {
  14.     protected Log log;
  15.     protected StorageSPI storage;
  16.     protected DBUtil dbUtil;
  17.     public EMailAddressDAOImpl(StorageSPI storage, DBUtil dbUtil) {
  18.         this.log = LogFactory.getLog(EMailAddressDAO.class);
  19.         this.storage = storage;
  20.         this.dbUtil = dbUtil;
  21.     }
  22.     public void register(ResourceInternal resource, EMailAddressInternal address) {
  23.         Connection connection = dbUtil.getConnection();
  24.         Statement st = null;
  25.         ResultSet rs = null;
  26.         try {
  27.             st = connection.createStatement();
  28.             rs = st.executeQuery("select count(*) as count from jspider_email_address where address='" + address.getAddress() + "'");
  29.             rs.next();
  30.             int count = rs.getInt("count");
  31.             if (count == 0) {
  32.                 st = connection.createStatement();
  33.                 st.executeUpdate("insert into jspider_email_address ( address ) values ( '" + address.getAddress() + "' )");
  34.                 st = connection.createStatement();
  35.                 ResultSet rs2 = st.executeQuery("select id from jspider_email_address where address = '" + address.getAddress() + "'");
  36.                 rs2.next();
  37.                 address.setId(rs2.getInt("id"));
  38.             }
  39.             rs = st.executeQuery("select count(*) as count from jspider_email_address, jspider_email_address_reference where jspider_email_address_reference.resource=" + resource.getId() + " and jspider_email_address_reference.address = jspider_email_address.id and jspider_email_address.id = " + address.getId());
  40.             rs.next();
  41.             st = connection.createStatement();
  42.             if ( rs.getInt("count") == 0 ) {
  43.                 st.executeUpdate("insert into jspider_email_address_reference ( resource, address, count ) values ( " + resource.getId() + "," + address.getId() + ", 1 )");
  44.             } else {
  45.                 st.executeUpdate("update jspider_email_address_reference set count = count + 1 where address = " + address.getId() + " and resource = " + resource.getId() );
  46.             }
  47.         } catch (SQLException e) {
  48.             log.error("SQLException", e);
  49.         } finally {
  50.             dbUtil.safeClose(rs, log);
  51.             dbUtil.safeClose(st, log);
  52.         }
  53.     }
  54.     public EMailAddressInternal find(String address) {
  55.         Statement st = null;
  56.         ResultSet rs = null;
  57.         EMailAddressInternal emailAddress = null;
  58.         try {
  59.             Connection connection = dbUtil.getConnection();
  60.             st = connection.createStatement();
  61.             rs = st.executeQuery("select * from jspider_email_address where address = '" + address + "'");
  62.             while (rs.next()) {
  63.                 emailAddress = createEMailAddressFromRecord(rs);
  64.             }
  65.         } catch (SQLException e) {
  66.             log.error("SQLException", e);
  67.         } finally {
  68.             dbUtil.safeClose(rs, log);
  69.             dbUtil.safeClose(st, log);
  70.         }
  71.         return emailAddress;
  72.     }
  73.     public EMailAddressInternal[] findByResource(ResourceInternal resource) {
  74.         ArrayList al = new ArrayList();
  75.         Statement st = null;
  76.         ResultSet rs = null;
  77.         try {
  78.             Connection connection = dbUtil.getConnection();
  79.             st = connection.createStatement();
  80.             rs = st.executeQuery("select address.id, address.address from jspider_email_address address, jspider_email_address_reference ref where ref.address=address.id and ref.resource=" + resource.getId());
  81.             while (rs.next()) {
  82.                 al.add(createEMailAddressFromRecord(rs));
  83.             }
  84.         } catch (SQLException e) {
  85.             log.error("SQLException", e);
  86.         } finally {
  87.             dbUtil.safeClose(rs, log);
  88.             dbUtil.safeClose(st, log);
  89.         }
  90.         return (EMailAddressInternal[]) al.toArray(new EMailAddressInternal[al.size()]);
  91.     }
  92.     public EMailAddressReferenceInternal[] findReferencesByResource(ResourceInternal resource) {
  93.         ArrayList al = new ArrayList();
  94.         Statement st = null;
  95.         ResultSet rs = null;
  96.         try {
  97.             Connection connection = dbUtil.getConnection();
  98.             st = connection.createStatement();
  99.             rs = st.executeQuery("select jspider_email_address.address, jspider_email_address_reference.resource, jspider_email_address_reference.count from jspider_email_address, jspider_email_address_reference where jspider_email_address_reference.resource=" + resource.getId() + " and jspider_email_address_reference.address = jspider_email_address.id");
  100.             while (rs.next()) {
  101.                 al.add(createEMailAddressReferenceFromRecord(rs));
  102.             }
  103.         } catch (SQLException e) {
  104.             log.error("SQLException", e);
  105.         } finally {
  106.             dbUtil.safeClose(rs, log);
  107.             dbUtil.safeClose(st, log);
  108.         }
  109.         return (EMailAddressReferenceInternal[]) al.toArray(new EMailAddressReferenceInternal[al.size()]);
  110.     }
  111.     protected EMailAddressInternal createEMailAddressFromRecord(ResultSet rs) throws SQLException {
  112.         int id = rs.getInt("id");
  113.         String address = rs.getString("address");
  114.         return new EMailAddressInternal(id, address);
  115.     }
  116.     protected EMailAddressReferenceInternal createEMailAddressReferenceFromRecord(ResultSet rs) throws SQLException {
  117.         int resource = rs.getInt("resource");
  118.         String address = rs.getString("address");
  119.         int count = rs.getInt("count");
  120.         return new EMailAddressReferenceInternal(storage, resource, address, count);
  121.     }
  122. }