diff options
Diffstat (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor')
3 files changed, 138 insertions, 0 deletions
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/DebugPreProcessor.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/DebugPreProcessor.java new file mode 100644 index 00000000..1a262aca --- /dev/null +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/DebugPreProcessor.java @@ -0,0 +1,69 @@ +package at.gv.egiz.pdfas.lib.impl.preprocessor; + +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.pdfas.common.exceptions.PDFASError; +import at.gv.egiz.pdfas.lib.api.Configuration; +import at.gv.egiz.pdfas.lib.api.preprocessor.PreProcessor; +import at.gv.egiz.pdfas.lib.api.sign.SignParameter; +import at.gv.egiz.pdfas.lib.api.verify.VerifyParameter; + +public class DebugPreProcessor implements PreProcessor { + + private static final Logger logger = LoggerFactory + .getLogger(DebugPreProcessor.class); + + private static final String NAME = "Debug PreProcessor"; + + @Override + public void initialize(Configuration configuration) { + logger.debug("Initializing {}", getName()); + } + + private void listPPArguments(Map<String, String> map) { + if(map != null) { + logger.debug("pre processor arguments:"); + Iterator<Entry<String, String>> entryIt = map.entrySet().iterator(); + while(entryIt.hasNext()) { + Entry<String, String> entry = entryIt.next(); + logger.debug(" {} => {}", entry.getKey(), entry.getValue()); + } + } else { + logger.debug("No pre processor arguments"); + } + } + + @Override + public void sign(SignParameter parameter) throws PDFASError { + logger.debug("preprocessor signing ..."); + + listPPArguments(parameter.getPreprocessorArguments()); + + logger.debug("preprocessor signing done"); + } + + @Override + public void verify(VerifyParameter parameter) throws PDFASError { + logger.debug("preprocessor verifing ..."); + + listPPArguments(parameter.getPreprocessorArguments()); + + logger.debug("preprocessor verifing done"); + } + + @Override + public int registrationPosition() { + return -1; + } + + @Override + public String getName() { + return NAME; + } + +} diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/PreProcessorCompare.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/PreProcessorCompare.java new file mode 100644 index 00000000..ef716403 --- /dev/null +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/preprocessor/PreProcessorCompare.java @@ -0,0 +1,25 @@ +package at.gv.egiz.pdfas.lib.impl.preprocessor; + +import java.util.Comparator; + +import at.gv.egiz.pdfas.lib.api.preprocessor.PreProcessor; + +public class PreProcessorCompare implements Comparator<PreProcessor> { + + @Override + public int compare(PreProcessor o1, PreProcessor o2) { + if(o1.registrationPosition() < 0 && o2.registrationPosition() < 0) { + // equal + return 0; + } else if(o1.registrationPosition() < 0) { + // o2 vor o1 + return 1; + } else if(o2.registrationPosition() < 0) { + // o1 vor o2 + return -1; + } else { + return Integer.compare(o1.registrationPosition(), o2.registrationPosition()); + } + } + +} 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; + } +} |