KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > archive > crawler > deciderules > DecidingFilter


1 /* Copyright (C) 2003 Internet Archive.
2  *
3  * This file is part of the Heritrix web crawler (crawler.archive.org).
4  *
5  * Heritrix is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU Lesser Public License as published by
7  * the Free Software Foundation; either version 2.1 of the License, or
8  * any later version.
9  *
10  * Heritrix is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Lesser Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser Public License
16  * along with Heritrix; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * OrFilter.java
20  * Created on Nov 13, 2003
21  *
22  * $Header: /cvsroot/archive-crawler/ArchiveOpenCrawler/src/java/org/archive/crawler/deciderules/DecidingFilter.java,v 1.5.2.1 2007/01/13 01:31:14 stack-sf Exp $
23  */

24 package org.archive.crawler.deciderules;
25
26 import javax.management.AttributeNotFoundException JavaDoc;
27
28 import org.archive.crawler.framework.Filter;
29
30 /**
31  * DecidingFilter: a classic Filter which makes its accept/reject
32  * decision based on whatever {@link DecideRule}s have been set up inside
33  * it.
34  *
35  * @author gojomo
36  *
37  */

38 public class DecidingFilter extends Filter {
39
40     private static final long serialVersionUID = -7275555425381445477L;
41     //private static final Logger logger =
42
// Logger.getLogger(DecidingFilter.class.getName());
43
public static final String JavaDoc ATTR_DECIDE_RULES = "decide-rules";
44     
45     public DecidingFilter(String JavaDoc name, String JavaDoc description) {
46         this(name);
47         setDescription(description);
48     }
49
50     public DecidingFilter(String JavaDoc name) {
51         super(name,
52             "DecidingFilter. A filter that applies one or " +
53             "more DecideRules " +
54             "to determine whether a URI is accepted (returns true) or " +
55             "rejected (returns false). Only a final decision of " +
56             "ACCEPT returns true from the filter; either REJECT or " +
57             "PASS returns false.");
58         addElementToDefinition(
59             new DecideRuleSequence(ATTR_DECIDE_RULES));
60     }
61
62     protected DecideRule getDecideRule(Object JavaDoc o) {
63         try {
64             return (DecideRule)getAttribute(o, ATTR_DECIDE_RULES);
65         } catch (AttributeNotFoundException JavaDoc e) {
66             throw new RuntimeException JavaDoc(e);
67         }
68     }
69
70     protected boolean innerAccepts(Object JavaDoc o) {
71         return getDecideRule(o).decisionFor(o) == DecideRule.ACCEPT;
72     }
73
74     /**
75      * Note that configuration updates may be necessary. Pass to
76      * constituent filters.
77      */

78     public void kickUpdate() {
79         // TODO: figure out if there's any way to reconcile this with
80
// overrides/refinement filters
81
getDecideRule(null).kickUpdate();
82     }
83 }
84
Popular Tags