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

搜索引擎

开发平台:

Java

  1. package net.javacoding.jspider.core.storage.jdbc;
  2. import net.javacoding.jspider.core.storage.spi.FolderDAOSPI;
  3. import net.javacoding.jspider.core.storage.spi.StorageSPI;
  4. import net.javacoding.jspider.core.model.SiteInternal;
  5. import net.javacoding.jspider.core.model.FolderInternal;
  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: FolderDAOImpl.java,v 1.2 2003/04/11 16:37:06 vanrogu Exp $
  12.  */
  13. class FolderDAOImpl implements FolderDAOSPI {
  14.     public static final String ATTRIBUTE_ID = "id";
  15.     public static final String ATTRIBUTE_SITE = "site";
  16.     public static final String ATTRIBUTE_PARENT = "parent";
  17.     public static final String ATTRIBUTE_NAME = "name";
  18.     protected Log log;
  19.     protected StorageSPI storage;
  20.     protected DBUtil dbUtil;
  21.     public FolderDAOImpl ( StorageSPI storage, DBUtil dbUtil ) {
  22.         this.log = LogFactory.getLog(FolderDAOSPI.class);
  23.         this.storage = storage;
  24.         this.dbUtil = dbUtil;
  25.     }
  26.     public FolderInternal[] findSiteRootFolders(SiteInternal site) {
  27.         ArrayList al = new ArrayList ();
  28.         Statement st = null;
  29.         ResultSet rs = null;
  30.         try {
  31.             Connection c = dbUtil.getConnection ( );
  32.             st = c.createStatement();
  33.             rs = st.executeQuery("select * from jspider_folder where parent=0 and site=" + site.getId());
  34.             while ( rs.next() ) {
  35.                 al.add(createFolderFromRecord(rs));
  36.             }
  37.         } catch (SQLException e) {
  38.             log.error("SQLException", e);
  39.         } finally {
  40.             dbUtil.safeClose(rs, log);
  41.             dbUtil.safeClose(st, log);
  42.         }
  43.         return (FolderInternal[])al.toArray(new FolderInternal[al.size()]);
  44.     }
  45.     public FolderInternal[] findSubFolders(FolderInternal folder) {
  46.         ArrayList al = new ArrayList ( );
  47.         Statement st = null;
  48.         ResultSet rs = null;
  49.         try {
  50.             Connection c = dbUtil.getConnection ( );
  51.             st = c.createStatement();
  52.             rs = st.executeQuery("select * from jspider_folder where parent= " + folder.getId());
  53.             while ( rs.next() ) {
  54.                 al.add(createFolderFromRecord(rs));
  55.             }
  56.         } catch (SQLException e) {
  57.             log.error("SQLException", e);
  58.         } finally {
  59.             dbUtil.safeClose(rs, log);
  60.             dbUtil.safeClose(st, log);
  61.         }
  62.         return (FolderInternal[])al.toArray(new FolderInternal[al.size()]);
  63.     }
  64.     public FolderInternal findById(int folderId) {
  65.         FolderInternal folder = null;
  66.         Statement st = null;
  67.         ResultSet rs = null;
  68.         try {
  69.             Connection c = dbUtil.getConnection ( );
  70.             st = c.createStatement();
  71.             rs = st.executeQuery("select * from jspider_folder where id=" + folderId);
  72.             if ( rs.next() ) {
  73.                 folder = createFolderFromRecord(rs);
  74.             }
  75.         } catch (SQLException e) {
  76.             log.error("SQLException", e);
  77.         } finally {
  78.             dbUtil.safeClose(rs, log);
  79.             dbUtil.safeClose(st, log);
  80.         }
  81.         return folder;
  82.     }
  83.     public FolderInternal createFolder(int id, FolderInternal parent, String name) {
  84.         return createFolder ( id, parent.getSiteId(), parent.getId(), name );
  85.     }
  86.     public FolderInternal createFolder(int id, SiteInternal site, String name) {
  87.         return createFolder ( id, site.getId(), 0, name );
  88.     }
  89.     public FolderInternal createFolder ( int id, int siteId, int parentId, String name ) {
  90.         FolderInternal folder = null;
  91.         Statement st = null;
  92.         ResultSet rs = null;
  93.         try {
  94.             Connection c = dbUtil.getConnection ( );
  95.             st = c.createStatement();
  96.             st.executeUpdate("insert into jspider_folder ( id, parent, site, name ) values (" + id + "," + parentId + "," + siteId + ",'" + name + "')");
  97.         } catch (SQLException e) {
  98.             log.error("SQLException", e);
  99.         } finally {
  100.             dbUtil.safeClose(rs, log);
  101.             dbUtil.safeClose(st, log);
  102.         }
  103.         folder = findById(id);
  104.         return folder;
  105.     }
  106.     protected FolderInternal createFolderFromRecord ( ResultSet rs ) throws SQLException {
  107.         int id = rs.getInt(ATTRIBUTE_ID);
  108.         int parent = rs.getInt(ATTRIBUTE_PARENT);
  109.         int site = rs.getInt(ATTRIBUTE_SITE);
  110.         String name = rs.getString(ATTRIBUTE_NAME);
  111.         return new FolderInternal ( storage, id, parent,  name, site );
  112.     }
  113. }