1 25 package org.archive.crawler.settings; 26 27 import java.util.ArrayList ; 28 import java.util.Date ; 29 import java.util.HashMap ; 30 import java.util.Iterator ; 31 import java.util.List ; 32 import java.util.ListIterator ; 33 import java.util.Map ; 34 35 import org.archive.crawler.settings.refinements.Refinement; 36 import org.archive.net.UURI; 37 38 53 public class CrawlerSettings { 54 56 private final Map <String ,DataContainer> localComplexTypes 57 = new HashMap <String ,DataContainer>(); 58 59 63 private final Map <String ,ModuleType> topLevelModules 64 = new HashMap <String ,ModuleType>(); 65 66 69 private final Map <String ,ComplexType> localModules 70 = new HashMap <String ,ComplexType>(); 71 72 73 private final SettingsHandler settingsHandler; 74 75 76 private final String scope; 77 78 79 private List <Refinement> refinements; 80 81 82 private boolean isRefinement = false; 83 84 85 private String name = ""; 86 87 88 private String description = ""; 89 90 93 private String operator = "Admin"; 94 95 98 private String organization = ""; 99 100 103 private String audience = ""; 104 105 106 107 private Date lastSaved = null; 108 109 121 public CrawlerSettings(SettingsHandler handler, String scope) { 122 this.settingsHandler = handler; 123 this.scope = scope; 124 } 125 126 140 public CrawlerSettings(SettingsHandler handler, String scope, 141 String refinement) { 142 this(handler, scope); 143 if (refinement != null && !refinement.equals("")) { 144 this.isRefinement = true; 145 this.name = refinement; 146 } 147 } 148 149 153 public String getDescription() { 154 return description; 155 } 156 157 161 public String getName() { 162 return name; 163 } 164 165 170 public String getOperator() { 171 return operator; 172 } 173 174 180 public String getOrganization() { 181 return organization; 182 } 183 184 190 public String getAudience() { 191 return audience; 192 } 193 194 198 public String getScope() { 199 return scope; 200 } 201 202 206 public void setDescription(String string) { 207 description = string; 208 } 209 210 214 public void setOperator(String name) { 215 this.operator = name; 216 } 217 218 222 public void setOrganization(String name) { 223 this.organization = name; 224 } 225 226 230 public void setAudience(String name) { 231 this.audience = name; 232 } 233 234 238 public void setName(String string) { 239 name = string; 240 } 241 242 249 public Date getLastSavedTime() { 250 return lastSaved; 251 } 252 253 260 protected void setLastSavedTime(Date lastSaved) { 261 this.lastSaved = lastSaved; 262 } 263 264 protected void addTopLevelModule(ModuleType module) { 265 topLevelModules.put(module.getName(), module); 270 } 272 273 protected DataContainer addComplexType(ComplexType type) { 274 DataContainer data = new DataContainer(this, type); 275 localComplexTypes.put(type.getAbsoluteName(), data); 276 if (type instanceof ModuleType) { 277 localModules.put(type.getName(), type); 278 } 279 return data; 280 } 281 282 protected DataContainer getData(ComplexType complex) { 283 return getData(complex.getAbsoluteName()); 284 } 285 286 protected DataContainer getData(String absoluteName) { 287 return (DataContainer) localComplexTypes.get(absoluteName); 288 } 289 290 protected ModuleType getTopLevelModule(String name) { 291 return (ModuleType) topLevelModules.get(name); 292 } 293 294 public ModuleType getModule(String name) { 295 return (ModuleType) localModules.get(name); 296 } 297 298 protected Iterator topLevelModules() { 299 return topLevelModules.values().iterator(); 300 } 301 302 306 public CrawlerSettings getParent() { 307 return getParent(null); 308 } 309 310 317 public CrawlerSettings getParent(UURI uri) { 318 return (isRefinement())? 319 settingsHandler.getSettingsForHost(scope): 320 (scope == null || scope.equals(""))? 321 null: 322 settingsHandler. 323 getSettings(settingsHandler.getParentScope(scope), uri); 324 } 325 326 330 public SettingsHandler getSettingsHandler() { 331 return settingsHandler; 332 } 333 334 340 public ListIterator refinementsIterator() { 341 if (refinements == null) { 342 refinements = new ArrayList <Refinement>(); 343 } 344 return refinements.listIterator(); 345 } 346 347 352 public void addRefinement(Refinement refinement) { 353 if (refinements == null) { 354 refinements = new ArrayList <Refinement>(); 355 } 356 this.refinements.remove(refinement); 357 this.refinements.add(refinement); 358 } 359 360 367 public boolean removeRefinement(String reference) { 368 if (hasRefinements()) { 369 for(Iterator it = refinements.iterator(); it.hasNext();) { 370 if (((Refinement) it.next()).getReference().equals(reference)) { 371 it.remove(); 372 return true; 373 } 374 } 375 } 376 return false; 377 } 378 379 386 public Refinement getRefinement(String reference) { 387 if (hasRefinements()) { 388 for(Iterator it = refinements.iterator(); it.hasNext();) { 389 Refinement tmp = (Refinement) it.next(); 390 if (tmp.getReference().equals(reference)) { 391 return tmp; 392 } 393 } 394 } 395 return null; 396 } 397 398 403 public boolean hasRefinements() { 404 return refinements != null && !refinements.isEmpty(); 405 } 406 407 412 public boolean isRefinement() { 413 return isRefinement; 414 } 415 416 422 public void setRefinement(boolean isRefinement) { 423 this.isRefinement = isRefinement; 424 } 425 } 426 | Popular Tags |