1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package org.archive.crawler.deciderules;
26
27 import org.archive.crawler.datamodel.CrawlURI;
28 import org.archive.crawler.settings.SimpleType;
29
30
31
32 /***
33 * Rule applies the configured decision for any URI which has a
34 * fetch status equal to the 'target-status' setting.
35 *
36 * @author gojomo
37 */
38 public class FetchStatusDecideRule extends PredicatedDecideRule {
39
40 private static final long serialVersionUID = 5820599300395594619L;
41
42 private static final String ATTR_TARGET_STATUS = "target-status";
43
44 /***
45 * Default access so available to test code.
46 */
47 static final Integer DEFAULT_TARGET_STATUS = new Integer(0);
48
49 /***
50 * Usual constructor.
51 * @param name Name of this DecideRule.
52 */
53 public FetchStatusDecideRule(String name) {
54 super(name);
55 setDescription("FetchStatusDecideRule. Applies configured decision " +
56 "to any URI that has a fetch status equal to the setting.");
57 addElementToDefinition(new SimpleType(ATTR_TARGET_STATUS,
58 "Fetch status for which the configured decision will be" +
59 "applied.", DEFAULT_TARGET_STATUS));
60 }
61
62 /***
63 * Evaluate whether given object is over the threshold number of
64 * hops.
65 *
66 * @param object
67 * @return true if the mx-hops is exceeded
68 */
69 protected boolean evaluate(Object object) {
70 try {
71 CrawlURI curi = (CrawlURI)object;
72 return curi.getFetchStatus() ==
73 (Integer)getUncheckedAttribute(curi,ATTR_TARGET_STATUS);
74 } catch (ClassCastException e) {
75
76 return false;
77 }
78 }
79 }