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

搜索引擎

开发平台:

Java

  1. package net.javacoding.jspider.core.rule.impl;
  2. import net.javacoding.jspider.api.model.Decision;
  3. import net.javacoding.jspider.api.model.Site;
  4. import net.javacoding.jspider.core.SpiderContext;
  5. import net.javacoding.jspider.core.model.DecisionInternal;
  6. import net.javacoding.jspider.spi.Rule;
  7. import net.javacoding.jspider.core.rule.Ruleset;
  8. import java.net.URL;
  9. import java.util.List;
  10. /**
  11.  *
  12.  * $Id: RuleSetImpl.java,v 1.9 2003/04/03 16:24:59 vanrogu Exp $
  13.  *
  14.  * @author G黱ther Van Roey
  15.  */
  16. public class RuleSetImpl implements Ruleset {
  17.     protected int type;
  18.     protected Ruleset generalRules;
  19.     protected List localRules;
  20.     public RuleSetImpl(int type, List rules) {
  21.         this(type, null, rules);
  22.     }
  23.     public RuleSetImpl(int type, Ruleset generalRules, List rules) {
  24.         this.type = type;
  25.         this.generalRules = generalRules;
  26.         this.localRules = rules;
  27.     }
  28.     public Decision applyRules(SpiderContext context, Site site, URL url) {
  29.         Decision decision = null;
  30.         if (generalRules != null) {
  31.             decision = generalRules.applyRules(context, site, url);
  32.         } else {
  33.             decision = new DecisionInternal();
  34.         }
  35.         if (decision.isVetoable()) {
  36.             Rule[] rules = (Rule[]) localRules.toArray(new Rule[localRules.size()]);
  37.             for (int i = 0; i < rules.length; i++) {
  38.                 Rule rule = rules[i];
  39.                 Decision lastDecision = rule.apply(context, site, url);
  40.                 decision.addStep(rule.getName(), type, lastDecision.getDecision(), lastDecision.getComment() );
  41.                 decision.merge(lastDecision);
  42.                 if (!lastDecision.isVetoable()) {
  43.                     break;
  44.                 }
  45.             }
  46.         }
  47.         decision.addStep("Ruleset",type, decision.getDecision(), "ruleset final decision");
  48.         return decision;
  49.     }
  50.     public void addRule(Rule rule) {
  51.         localRules.add(rule);
  52.     }
  53.     public int getType() {
  54.         return type;
  55.     }
  56.     public String toString ( ) {
  57.         StringBuffer sb = new StringBuffer ( );
  58.         sb.append ( "[" );
  59.         sb.append (translate(type));
  60.         sb.append ( " ruleset]");
  61.         return sb.toString ( );
  62.     }
  63.     public static String translate ( int type ) {
  64.         switch(type){
  65.             case Ruleset.RULESET_GENERAL:
  66.                 return "GENERAL";
  67.             case Ruleset.RULESET_SITE:
  68.                 return "SITE";
  69.         }
  70.         return "ERROR!";
  71.     }
  72. }