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

搜索引擎

开发平台:

Java

  1. package net.javacoding.jspider.core.model;
  2. import net.javacoding.jspider.api.model.*;
  3. import net.javacoding.jspider.Constants;
  4. import net.javacoding.jspider.core.storage.spi.StorageSPI;
  5. import java.net.URL;
  6. /**
  7.  * $Id: SiteInternal.java,v 1.13 2003/04/29 17:53:48 vanrogu Exp $
  8.  */
  9. public class SiteInternal implements Site {
  10.     protected StorageSPI storage;
  11.     protected int id;
  12.     protected boolean handle;
  13.     protected URL url;
  14.     protected String host;
  15.     protected int port;
  16.     protected int hashCode;
  17.     protected boolean isBaseSite;
  18.     protected boolean hasRobotsTXT;
  19.     protected boolean useCookies;
  20.     protected boolean useProxy;
  21.     protected int state;
  22.     protected boolean obeyRobotsTXT;
  23.     protected boolean fetchRobotsTXT;
  24.     protected String userAgent;
  25.     public SiteInternal ( StorageSPI storage, int id, boolean handle, URL url, boolean isBaseSite ) {
  26.         this(storage, id, handle, url, Site.STATE_DISCOVERED,  true, true, true, Constants.USERAGENT, isBaseSite );
  27.     }
  28.     public SiteInternal ( int id, StorageSPI storage, URL url ) {
  29.         this ( storage, id, true, url, false );
  30.     }
  31.     public SiteInternal ( StorageSPI storage, int id, boolean handle, URL url, int state, boolean obeyRobotsTXT, boolean useProxy, boolean useCookies,String userAgent, boolean isBaseSite ) {
  32.         this.storage = storage;
  33.         this.handle = handle;
  34.         this.id = id;
  35.         this.url = url;
  36.         this.host = url.getHost();
  37.         this.port = url.getPort();
  38.         this.state = state;
  39.         this.obeyRobotsTXT = obeyRobotsTXT;
  40.         this.useProxy = useProxy;
  41.         this.useCookies = useCookies;
  42.         this.userAgent = userAgent;
  43.         this.isBaseSite = isBaseSite;
  44.         hashCode = (host + port).hashCode();
  45.     }
  46.     public int getId ( ) {
  47.         return id;
  48.     }
  49.     public void setId ( int id) {
  50.         this.id = id;
  51.     }
  52.     public int getState() {
  53.         return state;
  54.     }
  55.     public String getHost() {
  56.         return host;
  57.     }
  58.     public int getPort() {
  59.         return port;
  60.     }
  61.     public boolean isRobotsTXTHandled() {
  62.         return (state == Site.STATE_ROBOTSTXT_HANDLED) || (state == Site.STATE_ROBOTSTXT_UNEXISTING) || (state == Site.STATE_ROBOTSTXT_ERROR ) || (state == Site.STATE_ROBOTSTXT_SKIPPED);
  63.     }
  64.     public URL getURL() {
  65.         return url;
  66.     }
  67.     public Folder[] getRootFolders() {
  68.         return storage.getFolderDAO().findSiteRootFolders(this);
  69.     }
  70.     public Folder getRootFolder(String name) {
  71.         Folder[] folders = getRootFolders();
  72.         for (int i = 0; i < folders.length; i++) {
  73.             Folder folder = folders[i];
  74.             if ( folder.getName().equals(name)) {
  75.                 return folder;
  76.             }
  77.         }
  78.         return null;
  79.     }
  80.     public Resource[] getRootResources() {
  81.         return storage.getResourceDAO().getRootResources(this);
  82.     }
  83.     public Resource[] getAllResources() {
  84.         return storage.getResourceDAO().getBySite(this);
  85.     }
  86.     public Cookie[] getCookies() {
  87.         return storage.getCookieDAO().find(id);
  88.     }
  89.     public String getCookieString() {
  90.         Cookie[] c = getCookies();
  91.         StringBuffer sb = new StringBuffer();
  92.         for (int i = 0; i < c.length; i++) {
  93.             Cookie cookie = c[i];
  94.             sb.append(cookie.getName());
  95.             sb.append("=");
  96.             sb.append(cookie.getValue());
  97.             sb.append("; ");
  98.         }
  99.         return sb.toString();
  100.     }
  101.     public boolean getUseCookies() {
  102.         return useCookies;
  103.     }
  104.     public boolean equals(Object object) {
  105.         if (object instanceof Site) {
  106.             Site other = (Site) object;
  107.             return (other.getHost().equalsIgnoreCase(host) && other.getPort() == port);
  108.         } else {
  109.             return false;
  110.         }
  111.     }
  112.     public int hashCode() {
  113.         return hashCode;
  114.     }
  115.     public boolean getUseProxy() {
  116.         return useProxy;
  117.     }
  118.     public void registerNoRobotsTXTFound ( ) {
  119.         state = Site.STATE_ROBOTSTXT_UNEXISTING;
  120.     }
  121.     public void registerRobotsTXTError() {
  122.         state = Site.STATE_ROBOTSTXT_ERROR;
  123.     }
  124.     public void registerRobotsTXT() {
  125.         this.state = Site.STATE_ROBOTSTXT_HANDLED;
  126.     }
  127.     public void registerRobotsTXTSkipped() {
  128.         this.state = Site.STATE_ROBOTSTXT_SKIPPED;
  129.     }
  130.     public void setUseCookies(boolean useCookies) {
  131.         this.useCookies = useCookies;
  132.     }
  133.     public void setUseProxy(boolean useProxy) {
  134.         this.useProxy = useProxy;
  135.     }
  136.     public void setObeyRobotsTXT(boolean obey) {
  137.         this.obeyRobotsTXT = obey;
  138.     }
  139.     public boolean getObeyRobotsTXT() {
  140.         return this.obeyRobotsTXT;
  141.     }
  142.     public boolean getFetchRobotsTXT ( ) {
  143.         return fetchRobotsTXT;
  144.     }
  145.     public void setFetchRobotsTXT ( boolean fetchRobotsTXT ) {
  146.         this.fetchRobotsTXT = fetchRobotsTXT;
  147.     }
  148.     public String translateState ( ) {
  149.         switch ( state ) {
  150.             case Site.STATE_DISCOVERED:
  151.                 return "DISCOVERED";
  152.             case Site.STATE_ROBOTSTXT_ERROR:
  153.                 return "ROBOTSTXT_ERROR";
  154.             case Site.STATE_ROBOTSTXT_UNEXISTING:
  155.                 return "ROBOTSTXT_UNEXISTING";
  156.             case Site.STATE_ROBOTSTXT_HANDLED:
  157.                 return "ROBOTSTXT_HANDLED";
  158.             case Site.STATE_ROBOTSTXT_SKIPPED:
  159.                 return "ROBOTSTXT_SKIPPED";
  160.         }
  161.         return "<ERROR_UNKNOWN_STATE>";
  162.     }
  163.     public String toString ( ) {
  164.         return "[Site: " + url + " - " + translateState() + ((isBaseSite)?" *":"") + "]";
  165.     }
  166.     public String getUserAgent() {
  167.         return userAgent;
  168.     }
  169.     public void setUserAgent ( String userAgent ) {
  170.         this.userAgent = userAgent;
  171.     }
  172.     public void setBaseSite ( boolean isBaseSite ) {
  173.         this.isBaseSite = isBaseSite;
  174.     }
  175.     public boolean isBaseSite ( ) {
  176.         return isBaseSite;
  177.     }
  178.     public boolean mustHandle ( ) {
  179.         return handle;
  180.     }
  181.     /**
  182.      * needed for easy templating
  183.      */
  184.     public boolean getMustHandle ( ) {
  185.         return handle;
  186.     }
  187.     public void setHandle ( boolean mustHandle ) {
  188.         this.handle = mustHandle;
  189.     }
  190. }