aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/PreProcessorLoader.java
diff options
context:
space:
mode:
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.java44
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;
+ }
+}