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.settings.refinements;
26
27 import java.util.ArrayList;
28 import java.util.Iterator;
29 import java.util.List;
30 import java.util.ListIterator;
31
32 import org.archive.crawler.settings.CrawlerSettings;
33 import org.archive.net.UURI;
34
35
36 /***
37 * This class acts as a mapping between refinement criterias and a settings
38 * object.
39 *
40 * @author John Erik Halse
41 *
42 */
43 public class Refinement {
44 private final CrawlerSettings owner;
45 private String description;
46 private String operator = "Admin";
47 private String organization = "";
48 private String audience = "";
49 private String reference;
50 private List<Criteria> criteria = new ArrayList<Criteria>();
51
52
53 /***
54 * Create a new instance of Refinement
55 *
56 * @param owner the settings object that owns the refinement.
57 * @param reference a name that combined with the owner uniquely identifies
58 * the refinement.
59 */
60 public Refinement(CrawlerSettings owner, String reference) {
61 this.owner = owner;
62 this.reference = reference;
63 owner.addRefinement(this);
64 }
65
66 /*** Create a new instance of Refinement
67 *
68 * @param owner the settings object that owns the refinement.
69 * @param reference a name that combined with the owner uniquely identifies
70 * the refinement.
71 * @param descr A textual description of the refinement.
72 */
73 public Refinement(CrawlerSettings owner, String reference, String descr) {
74 this(owner, reference);
75 this.description = descr;
76 }
77
78 /***
79 * Check if a URI is within the bounds of every criteria set for this
80 * refinement.
81 *
82 * @param uri the URI that shoulb be checked.
83 * @return true if within bounds.
84 */
85 public boolean isWithinRefinementBounds(UURI uri) {
86 if (uri == null || uri == null) {
87 return false;
88 }
89 for (Iterator it = criteria.iterator(); it.hasNext();) {
90 if (!((Criteria) it.next()).isWithinRefinementBounds(uri)) {
91 return false;
92 }
93 }
94 return true;
95 }
96
97 /***
98 * Return the description of this refinement.
99 *
100 * @return Returns the description.
101 */
102 public String getDescription() {
103 return description;
104 }
105
106 /***
107 * Set the description for this refinement.
108 *
109 * @param description The description to set.
110 */
111 public void setDescription(String description) {
112 this.description = description;
113 }
114
115 /***
116 * Get an <code>ListIterator</code> over the criteria set for this
117 * refinement.
118 *
119 * @return Returns an iterator over the criteria.
120 */
121 public ListIterator criteriaIterator() {
122 return criteria.listIterator();
123 }
124
125 /***
126 * Add a new criterion to this refinement.
127 *
128 * @param criterion the criterion to add.
129 */
130 public void addCriteria(Criteria criterion) {
131 if (!criteria.contains(criterion)) {
132 criteria.add(criterion);
133 }
134 }
135
136 /***
137 * Get the reference to this refinement's settings object.
138 *
139 * @return Returns the reference.
140 */
141 public String getReference() {
142 return reference;
143 }
144
145 /***
146 * Set the reference to this refinement's settings object.
147 *
148 * @param reference The reference to set.
149 */
150 public void setReference(String reference) {
151 this.reference = reference;
152 }
153
154 /***
155 * Get the <code>CrawlerSettings</code> object this refinement refers to.
156 *
157 * @return the settings object this refinement refers to.
158 */
159 public CrawlerSettings getSettings() {
160 String parentScope = owner.getScope() == null ? "" : owner.getScope();
161 CrawlerSettings settings = owner.getSettingsHandler()
162 .getOrCreateSettingsObject(parentScope, getReference());
163 settings.setDescription((getDescription()));
164 return settings;
165 }
166
167 public boolean equals(Object o) {
168 if (this == o
169 || (o instanceof Refinement && this.reference
170 .equals(((Refinement) o).reference))) {
171 return true;
172 }
173 return false;
174 }
175
176 /***
177 * @return Returns the audience.
178 */
179 public String getAudience() {
180 return this.audience;
181 }
182 /***
183 * @param audience The audience to set.
184 */
185 public void setAudience(String audience) {
186 this.audience = audience;
187 }
188 /***
189 * @return Returns the operator.
190 */
191 public String getOperator() {
192 return this.operator;
193 }
194 /***
195 * @param operator The operator to set.
196 */
197 public void setOperator(String operator) {
198 this.operator = operator;
199 }
200 /***
201 * @return Returns the organziation.
202 */
203 public String getOrganization() {
204 return this.organization;
205 }
206 /***
207 * @param organization The organziation to set.
208 */
209 public void setOrganization(String organization) {
210 this.organization = organization;
211 }
212 }