KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > javacoding > jspider > core > rule > impl > RuleSetImpl


1 package net.javacoding.jspider.core.rule.impl;
2
3
4 import net.javacoding.jspider.api.model.Decision;
5 import net.javacoding.jspider.api.model.Site;
6 import net.javacoding.jspider.core.SpiderContext;
7 import net.javacoding.jspider.core.model.DecisionInternal;
8 import net.javacoding.jspider.spi.Rule;
9 import net.javacoding.jspider.core.rule.Ruleset;
10
11 import java.net.URL JavaDoc;
12 import java.util.List JavaDoc;
13
14
15 /**
16  *
17  * $Id: RuleSetImpl.java,v 1.9 2003/04/03 16:24:59 vanrogu Exp $
18  *
19  * @author Günther Van Roey
20  */

21 public class RuleSetImpl implements Ruleset {
22
23     protected int type;
24     protected Ruleset generalRules;
25     protected List JavaDoc localRules;
26
27     public RuleSetImpl(int type, List JavaDoc rules) {
28         this(type, null, rules);
29     }
30
31     public RuleSetImpl(int type, Ruleset generalRules, List JavaDoc rules) {
32         this.type = type;
33         this.generalRules = generalRules;
34         this.localRules = rules;
35     }
36
37     public Decision applyRules(SpiderContext context, Site site, URL JavaDoc url) {
38         Decision decision = null;
39
40         if (generalRules != null) {
41             decision = generalRules.applyRules(context, site, url);
42         } else {
43             decision = new DecisionInternal();
44         }
45
46         if (decision.isVetoable()) {
47
48             Rule[] rules = (Rule[]) localRules.toArray(new Rule[localRules.size()]);
49             for (int i = 0; i < rules.length; i++) {
50                 Rule rule = rules[i];
51                 Decision lastDecision = rule.apply(context, site, url);
52                 decision.addStep(rule.getName(), type, lastDecision.getDecision(), lastDecision.getComment() );
53                 decision.merge(lastDecision);
54
55                 if (!lastDecision.isVetoable()) {
56                     break;
57                 }
58             }
59         }
60
61         decision.addStep("Ruleset",type, decision.getDecision(), "ruleset final decision");
62
63         return decision;
64     }
65
66     public void addRule(Rule rule) {
67         localRules.add(rule);
68     }
69
70     public int getType() {
71         return type;
72     }
73
74     public String JavaDoc toString ( ) {
75         StringBuffer JavaDoc sb = new StringBuffer JavaDoc ( );
76         sb.append ( "[" );
77         sb.append (translate(type));
78         sb.append ( " ruleset]");
79         return sb.toString ( );
80     }
81
82     public static String JavaDoc translate ( int type ) {
83         switch(type){
84             case Ruleset.RULESET_GENERAL:
85                 return "GENERAL";
86             case Ruleset.RULESET_SITE:
87                 return "SITE";
88         }
89         return "ERROR!";
90     }
91
92
93 }
94
Popular Tags