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.settings.SimpleType;
28
29
30 /***
31 * Rule which can be configured to ACCEPT or REJECT at
32 * operator's option.
33 *
34 * @author gojomo
35 */
36 public class ConfiguredDecideRule extends DecideRule {
37
38 private static final long serialVersionUID = -7084695808452312555L;
39
40 public final static String ATTR_DECISION = "decision";
41 public final static String[] ALLOWED_TYPES = new String[] {ACCEPT, REJECT};
42
43 public ConfiguredDecideRule(String name) {
44 super(name);
45 setDescription("FRAMEWORK: Should not appear as choice");
46 addElementToDefinition(new SimpleType(ATTR_DECISION,
47 "Decision applied if this rule is triggered. " +
48 "Otherwise PASS.", ACCEPT, ALLOWED_TYPES));
49 }
50
51 public Object decisionFor(Object object) {
52 return singlePossibleNonPassDecision(object);
53 }
54
55 public Object singlePossibleNonPassDecision(Object object) {
56 Object decision = getUncheckedAttribute(object, ATTR_DECISION);
57
58
59 Object result = PASS;
60 for (int i = 0; i < ALLOWED_TYPES.length; i++) {
61 if (ALLOWED_TYPES[i] == decision ||
62 ALLOWED_TYPES[i].equals(decision)) {
63 result = ALLOWED_TYPES[i];
64 break;
65 }
66 }
67 return result;
68 }
69 }