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

搜索引擎

开发平台:

Java

  1. package net.javacoding.jspider.core.storage.jdbc;
  2. import net.javacoding.jspider.core.storage.CookieDAO;
  3. import net.javacoding.jspider.core.storage.spi.CookieDAOSPI;
  4. import net.javacoding.jspider.core.storage.spi.StorageSPI;
  5. import net.javacoding.jspider.core.logging.LogFactory;
  6. import net.javacoding.jspider.core.logging.Log;
  7. import net.javacoding.jspider.api.model.Cookie;
  8. import java.util.*;
  9. import java.sql.*;
  10. /**
  11.  * $Id: CookieDAOImpl.java,v 1.3 2003/04/11 16:37:05 vanrogu Exp $
  12.  */
  13. class CookieDAOImpl implements CookieDAOSPI {
  14.     protected Log log;
  15.     protected StorageSPI storage;
  16.     protected DBUtil dbUtil;
  17.     protected Map cookies;
  18.     public CookieDAOImpl ( StorageSPI storage, DBUtil dbUtil ) {
  19.         this.log = LogFactory.getLog(CookieDAO.class);
  20.         this.storage = storage;
  21.         this.dbUtil = dbUtil;
  22.         this.cookies = new HashMap ( );
  23.     }
  24.     public Cookie[] find(int id) {
  25.         ArrayList al = new ArrayList ( );
  26.         Statement st = null;
  27.         ResultSet rs = null;
  28.         try {
  29.             Connection connection = dbUtil.getConnection();
  30.             st = connection.createStatement();
  31.             rs = st.executeQuery("select * from jspider_cookie where site='" + id + "'" );
  32.             while ( rs.next() ) {
  33.                 al.add(createCookieFromRecord(rs));
  34.             }
  35.         } catch (SQLException e) {
  36.             log.error("SQLException", e);
  37.         } finally {
  38.             dbUtil.safeClose(rs, log);
  39.             dbUtil.safeClose(st, log);
  40.         }
  41.         return (Cookie[]) al.toArray(new Cookie[al.size()]);
  42.     }
  43.     public void save(int id, Cookie[] cookies) {
  44.         Connection connection = dbUtil.getConnection();
  45.         Statement st = null;
  46.         ResultSet rs = null;
  47.         for (int i = 0; i < cookies.length; i++) {
  48.             Cookie cookie = cookies[i];
  49.             try {
  50.                 st = connection.createStatement();
  51.                 rs = st.executeQuery("select count(*) as count from jspider_cookie where id='" + id + "' and name='" + cookie.getName() + "'");
  52.                 rs.next();
  53.                 int count = rs.getInt("count");
  54.                 if ( count == 0 ) {
  55.                     st = connection.createStatement();
  56.                     st.executeUpdate("insert into jspider_cookie ( site, name, value, path, expires, domain ) values ( '" + id + "', '" + cookie.getName() + "', '" + cookie.getValue() + "', '"+  cookie.getPath() + "', '" + cookie.getExpires() + "', '" + cookie.getDomain() + "')");
  57.                 } else {
  58.                     st = connection.createStatement();
  59.                     st.executeUpdate("update jspider_cookie set value='" + cookie.getValue() + "', path='" + cookie.getPath() + "', domain='"+  cookie.getDomain() + "', expires='" + cookie.getExpires() + "' where site='" + id + "' and name='" + cookie.getName() + "'");
  60.                 }
  61.             } catch (SQLException e) {
  62.                 log.error("SQLException", e);
  63.             } finally {
  64.                 dbUtil.safeClose(rs, log);
  65.                 dbUtil.safeClose(st, log);
  66.             }
  67.         }
  68.     }
  69.     protected static Cookie createCookieFromRecord ( ResultSet rs ) throws SQLException {
  70.         String name = rs.getString("name") ;
  71.         String value = rs.getString("value") ;
  72.         String path = rs.getString("path") ;
  73.         String domain = rs.getString("domain") ;
  74.         String expires = rs.getString("expires") ;
  75.         return new Cookie(name, value, domain, path, expires);
  76.     }
  77. }