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

搜索引擎

开发平台:

Java

  1. package net.javacoding.jspider.core.storage.memory;
  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.FolderInternal;
  5. import net.javacoding.jspider.core.model.SiteInternal;
  6. import java.util.*;
  7. /**
  8.  * $Id: FolderDAOImpl.java,v 1.2 2003/04/11 16:37:07 vanrogu Exp $
  9.  */
  10. class FolderDAOImpl implements FolderDAOSPI {
  11.     protected StorageSPI storage;
  12.     protected Map parents;
  13.     protected Map children;
  14.     protected Map byId;
  15.     protected Map siteRoots;
  16.     public FolderDAOImpl ( StorageSPI storage ) {
  17.         this.storage = storage;
  18.         this.parents = new HashMap();
  19.         this.children = new HashMap();
  20.         this.byId = new HashMap();
  21.         this.siteRoots = new HashMap();
  22.     }
  23.     public FolderInternal[] findSubFolders(FolderInternal folder) {
  24.         Set folders = (Set) children.get(folder);
  25.         if ( folders == null ) {
  26.             return new FolderInternal[0];
  27.         } else {
  28.           return (FolderInternal[]) folders.toArray(new FolderInternal[folders.size()]);
  29.         }
  30.     }
  31.     public FolderInternal[] findSiteRootFolders(SiteInternal site) {
  32.         Set rootFolders = (Set) siteRoots.get(new Integer(site.getId()));
  33.         if ( rootFolders == null ) {
  34.             return new FolderInternal[0];
  35.         } else {
  36.           return (FolderInternal[]) rootFolders.toArray(new FolderInternal[rootFolders.size()]);
  37.         }
  38.     }
  39.     public FolderInternal createFolder(int id, FolderInternal parent, String name) {
  40.         FolderInternal folder = new FolderInternal ( storage, id, parent.getId(), name, parent.getSiteId() );
  41.         byId.put(new Integer(id), folder);
  42.         parents.put(folder, parent);
  43.         Set set = (Set) children.get(parent);
  44.         if ( set == null ) {
  45.             set = new HashSet();
  46.             children.put(parent,set);
  47.         }
  48.         set.add(folder);
  49.         return folder;
  50.     }
  51.     public FolderInternal createFolder(int id, SiteInternal site, String name) {
  52.         FolderInternal folder = new FolderInternal ( storage, id, 0, name, site.getId() );
  53.         Set roots = (Set) siteRoots.get(new Integer(site.getId()));
  54.         if (roots == null){
  55.             roots = new HashSet();
  56.             siteRoots.put(new Integer(site.getId()), roots);
  57.         }
  58.         roots.add(folder);
  59.         byId.put(new Integer(id), folder);
  60.         return folder;
  61.     }
  62.     public FolderInternal findById(int id) {
  63.         return (FolderInternal)byId.get(new Integer(id));
  64.     }
  65. }