KickJava   Java API By Example, From Geeks To Geeks.

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


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  * BasicScope.java
20  * Created on Oct 1, 2003
21  *
22  * $Header: /cvsroot/archive-crawler/ArchiveOpenCrawler/src/java/org/archive/crawler/deciderules/DecidingScope.java,v 1.7.6.1 2007/01/13 01:31:14 stack-sf Exp $
23  */

24 package org.archive.crawler.deciderules;
25
26
27 import javax.management.AttributeNotFoundException JavaDoc;
28
29 import org.archive.crawler.framework.CrawlScope;
30
31 /**
32  * DecidingScope: a Scope which makes its accept/reject decision based on
33  * whatever DecideRules have been set up inside it.
34  * @author gojomo
35  */

36 public class DecidingScope extends CrawlScope {
37
38     private static final long serialVersionUID = -2942787757512964906L;
39
40     //private static Logger logger =
41
// Logger.getLogger(DecidingScope.class.getName());
42
public static final String JavaDoc ATTR_DECIDE_RULES = "decide-rules";
43
44     public DecidingScope(String JavaDoc name) {
45         super(name);
46         setDescription(
47             "DecidingScope. A Scope that applies one or " +
48             "more DecideRules to determine whether a URI is accepted " +
49             "or rejected (returns false).");
50         addElementToDefinition(new DecideRuleSequence(
51             ATTR_DECIDE_RULES));
52     }
53     
54     protected DecideRule getDecideRule(Object JavaDoc o) {
55         try {
56             return (DecideRule)getAttribute(o, ATTR_DECIDE_RULES);
57         } catch (AttributeNotFoundException JavaDoc e) {
58             throw new RuntimeException JavaDoc(e);
59         }
60     }
61
62     protected boolean innerAccepts(Object JavaDoc o) {
63         // would like to use identity test '==' here, but at some
64
// step string is being copied, and 'legal-type' mechanism
65
// doesn't enforce/maintain identity
66
return getDecideRule(o).decisionFor(o).equals(DecideRule.ACCEPT);
67     }
68     
69     /**
70      * Note that configuration updates may be necessary. Pass to
71      * constituent rules.
72      */

73     public void kickUpdate() {
74         super.kickUpdate();
75         // TODO: figure out if there's any way to reconcile this with
76
// overrides/refinement rules
77
getDecideRule(null).kickUpdate();
78     }
79 }
80
Popular Tags