diff options
Diffstat (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/PreProcessorLoader.java')
-rw-r--r-- | pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/PreProcessorLoader.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/PreProcessorLoader.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/PreProcessorLoader.java new file mode 100644 index 00000000..91218c82 --- /dev/null +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/PreProcessorLoader.java @@ -0,0 +1,44 @@ +package at.gv.egiz.pdfas.lib.impl.preprocessor; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.ServiceLoader; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.pdfas.lib.api.Configuration; +import at.gv.egiz.pdfas.lib.api.preprocessor.PreProcessor; + +public class PreProcessorLoader { + + private static final Logger logger = LoggerFactory + .getLogger(PreProcessorLoader.class); + + private static ServiceLoader<PreProcessor> preProcessorLoader = ServiceLoader.load(PreProcessor.class); + + public static List<PreProcessor> getPreProcessors(Configuration configuration) { + logger.debug("building PreProcessors"); + + List<PreProcessor> processors = new ArrayList<PreProcessor>(); + Iterator<PreProcessor> processorIterator = preProcessorLoader.iterator(); + + while(processorIterator.hasNext()) { + PreProcessor preProcessor = processorIterator.next(); + logger.debug("Loading " + preProcessor.getName() + " [" + preProcessor.getClass().getName() + "]"); + preProcessor.initialize(configuration); + logger.debug("Initialized " + preProcessor.getName()); + processors.add(preProcessor); + logger.debug("Preprocessor added " + preProcessor.getName()); + } + + logger.debug("PreProcessors constructed"); + + Collections.sort(processors, new PreProcessorCompare()); + + logger.debug("PreProcessors sorted"); + return processors; + } +} |