1 25 package org.archive.crawler.framework; 26 27 import java.util.Iterator ; 28 import java.util.logging.Logger ; 29 30 import org.archive.crawler.settings.MapType; 31 32 33 38 public class ProcessorChain { 39 private static Logger logger = 40 Logger.getLogger("org.archive.crawler.framework.ProcessorChain"); 41 42 private final MapType processorMap; 43 private ProcessorChain nextChain; 44 private Processor firstProcessor; 45 46 50 public ProcessorChain(MapType processorMap) { 51 this.processorMap = processorMap; 52 53 Processor previous = null; 54 55 for (Iterator it = processorMap.iterator(null); it.hasNext();) { 56 Processor p = (Processor) it.next(); 57 58 if (previous == null) { 59 firstProcessor = p; 60 } else { 61 previous.setDefaultNextProcessor(p); 62 } 63 64 logger.info( 65 "Processor: " + p.getName() + " --> " + p.getClass().getName()); 66 67 previous = p; 68 } 69 } 70 71 77 public void setNextChain(ProcessorChain nextProcessorChain) { 78 this.nextChain = nextProcessorChain; 79 } 80 81 86 public ProcessorChain getNextProcessorChain() { 87 return nextChain; 88 } 89 90 94 public Processor getFirstProcessor() { 95 return firstProcessor; 96 } 97 98 104 public Processor getProcessor(Class classType) { 105 for (Iterator it = processorMap.iterator(null); it.hasNext();) { 106 Processor p = (Processor) it.next(); 107 if (classType.isInstance(p)) { 108 return p; 109 } 110 } 111 return null; 112 } 113 114 118 public int size() { 119 return processorMap.size(null); 120 } 121 122 126 public Iterator iterator() { 127 return processorMap.iterator(null); 128 } 129 130 public void kickUpdate() { 131 Iterator iter = iterator(); 132 while(iter.hasNext()) { 133 Processor p = (Processor) iter.next(); 134 p.kickUpdate(); 135 } 136 } 137 } 138 | Popular Tags |