aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl')
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignParameterImpl.java9
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/ConfigurationImpl.java265
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/PlaceholderConfiguration.java103
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/PlaceholderWebConfiguration.java24
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/PlaceholderExtractor.java7
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/PlaceholderFilter.java176
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/SignaturePlaceholderContext.java95
7 files changed, 241 insertions, 438 deletions
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignParameterImpl.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignParameterImpl.java
index d2786f53..2dc047f1 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignParameterImpl.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/SignParameterImpl.java
@@ -25,9 +25,7 @@ package at.gv.egiz.pdfas.lib.impl;
import java.io.OutputStream;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import javax.activation.DataSource;
@@ -35,10 +33,17 @@ import at.gv.egiz.pdfas.lib.api.Configuration;
import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner;
import at.gv.egiz.pdfas.lib.api.sign.SignParameter;
import at.gv.egiz.sl.util.BKUHeader;
+import lombok.Getter;
+import lombok.Setter;
public class SignParameterImpl extends PdfAsParameterImpl implements SignParameter, BKUHeaderHolder {
protected String signatureProfileId = null;
protected String signaturePosition = null;
+
+ @Getter
+ @Setter
+ protected String placeHolderId;
+
protected DataSource output = null;
protected IPlainSigner signer = null;
protected OutputStream outputStream = null;
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/ConfigurationImpl.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/ConfigurationImpl.java
index bfc05c85..fd47bac5 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/ConfigurationImpl.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/ConfigurationImpl.java
@@ -3,19 +3,19 @@
* PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a
* joint initiative of the Federal Chancellery Austria and Graz University of
* Technology.
- *
+ *
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
* the European Commission - subsequent versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
* http://www.osor.eu/eupl/
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the Licence is distributed on an "AS IS" basis,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
- *
+ *
* This product combines work with different licenses. See the "NOTICE" text
* file for details on the various modules and licenses.
* The "NOTICE" text file is part of the distribution. Any derivative works
@@ -23,7 +23,6 @@
******************************************************************************/
package at.gv.egiz.pdfas.lib.impl.configuration;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
@@ -35,135 +34,135 @@ import at.gv.egiz.pdfas.lib.settings.Settings;
public class ConfigurationImpl implements ISettings, Configuration {
- protected Properties overwrittenProperties = new Properties();
-
- protected ISettings settings;
-
- public ConfigurationImpl(ISettings settings) {
- this.settings = settings;
- }
-
- public void setValue(String key, String value) {
- overwrittenProperties.setProperty(key, value);
- }
-
- public String getValue(String key) {
- if(overwrittenProperties.containsKey(key)) {
- return overwrittenProperties.getProperty(key);
- } else {
- return this.settings.getValue(key);
- }
- }
-
- public boolean hasValue(String key) {
- if(overwrittenProperties.containsKey(key)) {
- return true;
- } else {
- return this.settings.hasValue(key);
- }
- }
-
- public Map<String, String> getValuesPrefix(String prefix) {
-
- Map<String, String> valueMap = null;
- valueMap = this.settings.getValuesPrefix(prefix);
- if(valueMap == null) {
- valueMap = new HashMap<String, String>();
- }
-
- Iterator<Object> keyIterator = overwrittenProperties.keySet().iterator();
-
- while(keyIterator.hasNext()) {
- String key = keyIterator.next().toString();
-
- if(key.startsWith(prefix)) {
- valueMap.put(key, overwrittenProperties.getProperty(key));
- }
+ protected Properties overwrittenProperties = new Properties();
+
+ protected ISettings settings;
+
+ public ConfigurationImpl(ISettings settings) {
+ this.settings = settings;
+ }
+
+ @Override
+ public void setValue(String key, String value) {
+ overwrittenProperties.setProperty(key, value);
+ }
+
+ @Override
+ public String getValue(String key) {
+ if (overwrittenProperties.containsKey(key)) {
+ return overwrittenProperties.getProperty(key);
+ } else {
+ return this.settings.getValue(key);
+ }
+ }
+
+ @Override
+ public boolean hasValue(String key) {
+ if (overwrittenProperties.containsKey(key)) {
+ return true;
+ } else {
+ return this.settings.hasValue(key);
+ }
+ }
+
+ @Override
+ public Map<String, String> getValuesPrefix(String prefix) {
+ final Map<String, String> valueMap = this.settings.getValuesPrefix(prefix);
+ final Iterator<Object> keyIterator = overwrittenProperties.keySet().iterator();
+
+ while (keyIterator.hasNext()) {
+ final String key = keyIterator.next().toString();
+
+ if (key.startsWith(prefix)) {
+ valueMap.put(key, overwrittenProperties.getProperty(key));
+ }
+ }
+
+ if (valueMap.isEmpty()) {
+ return null;
+ }
+
+ return valueMap;
+ }
+
+ @Override
+ public Vector<String> getFirstLevelKeys(String prefix) {
+
+ Vector<String> valueMap = this.settings.getFirstLevelKeys(prefix);
+ if (valueMap == null) {
+ valueMap = new Vector<>();
+ }
+
+ final String mPrefix = prefix.endsWith(".") ? prefix : prefix + ".";
+ final Iterator<Object> keyIterator = overwrittenProperties.keySet().iterator();
+
+ while (keyIterator.hasNext()) {
+ final String key = keyIterator.next().toString();
+
+ if (key.startsWith(prefix)) {
+ final int keyIdx = key.indexOf('.', mPrefix.length()) > 0 ? key.indexOf('.', mPrefix.length())
+ : key.length();
+ final String firstLevels = key.substring(0, keyIdx);
+ if (!valueMap.contains(firstLevels)) {
+ valueMap.add(firstLevels);
}
+ }
+ }
+
+ if (valueMap.isEmpty()) {
+ return null;
+ }
+
+ return valueMap;
+ }
+
+ @Override
+ public boolean hasPrefix(String prefix) {
+
+ if (this.settings.hasPrefix(prefix)) {
+ return true;
+ }
+
+ final Iterator<Object> keyIterator = overwrittenProperties.keySet().iterator();
+ while (keyIterator.hasNext()) {
+ final String key = keyIterator.next().toString();
+
+ if (key.startsWith(prefix)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getWorkingDirectory() {
+ return this.settings.getWorkingDirectory();
+ }
+
+ @Override
+ public void cloneProfile(String originalPrefix, String clonedPrefix) {
+ final Map<String, String> source = getValuesPrefix(originalPrefix);
+
+ for (final String origKey : source.keySet()) {
+ final String cloneKey = origKey.replace(originalPrefix, clonedPrefix);
+ this.overwrittenProperties.setProperty(cloneKey, source.get(origKey));
+ }
+ }
+
+ @Override
+ public void removeProfile(String configurationPrefix) {
+ final Iterator<Object> keyIterator = overwrittenProperties.keySet().iterator();
+ while (keyIterator.hasNext()) {
+ final String key = keyIterator.next().toString();
+
+ if (key.startsWith(configurationPrefix)) {
+ overwrittenProperties.remove(key);
+ }
+ }
+ }
+
+ public void debugDumpProfileSettings(String profileName) {
+ ((Settings) settings).debugDumpProfileSettings(profileName);
+ }
- if(valueMap.isEmpty()) {
- return null;
- }
-
- return valueMap;
- }
-
- public Vector<String> getFirstLevelKeys(String prefix) {
-
- Vector<String> valueMap = this.settings.getFirstLevelKeys(prefix);
- if(valueMap == null) {
- valueMap = new Vector<String>();
- }
-
-
- String mPrefix = prefix.endsWith(".")?prefix:prefix+".";
- Iterator<Object> keyIterator = overwrittenProperties.keySet().iterator();
-
- while(keyIterator.hasNext()) {
- String key = keyIterator.next().toString();
-
- if(key.startsWith(prefix)) {
- int keyIdx = key.indexOf('.', mPrefix.length()) > 0 ? key.indexOf('.', mPrefix.length()) : key.length();
- String firstLevels = key.substring(0, keyIdx);
- if(!valueMap.contains(firstLevels)) {
- valueMap.add(firstLevels);
- }
- }
- }
-
- if(valueMap.isEmpty()) {
- return null;
- }
-
- return valueMap;
- }
-
- public boolean hasPrefix(String prefix) {
-
- if(this.settings.hasPrefix(prefix)) {
- return true;
- }
-
- Iterator<Object> keyIterator = overwrittenProperties.keySet().iterator();
- while(keyIterator.hasNext()) {
- String key = keyIterator.next().toString();
-
- if(key.startsWith(prefix)) {
- return true;
- }
- }
- return false;
- }
-
- public String getWorkingDirectory() {
- return this.settings.getWorkingDirectory();
- }
-
- public void cloneProfile(String originalPrefix, String clonedPrefix) {
- Map<String, String> source = getValuesPrefix(originalPrefix);
-
- Iterator<String> keyIt = source.keySet().iterator();
-
- while(keyIt.hasNext()) {
- String origKey = keyIt.next();
- String cloneKey = origKey.replace(originalPrefix, clonedPrefix);
- this.overwrittenProperties.setProperty(cloneKey, source.get(origKey));
- }
- }
-
- public void removeProfile(String configurationPrefix) {
- Iterator<Object> keyIterator = overwrittenProperties.keySet().iterator();
- while(keyIterator.hasNext()) {
- String key = keyIterator.next().toString();
-
- if(key.startsWith(configurationPrefix)) {
- overwrittenProperties.remove(key);
- }
- }
- }
-
- public void debugDumpProfileSettings(String profileName) {
- ((Settings)settings).debugDumpProfileSettings(profileName);
- }
-
}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/PlaceholderConfiguration.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/PlaceholderConfiguration.java
index 326ed142..a3719168 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/PlaceholderConfiguration.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/PlaceholderConfiguration.java
@@ -3,19 +3,19 @@
* PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a
* joint initiative of the Federal Chancellery Austria and Graz University of
* Technology.
- *
+ *
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
* the European Commission - subsequent versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
* http://www.osor.eu/eupl/
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the Licence is distributed on an "AS IS" basis,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
- *
+ *
* This product combines work with different licenses. See the "NOTICE" text
* file for details on the various modules and licenses.
* The "NOTICE" text file is part of the distribution. Any derivative works
@@ -25,60 +25,57 @@ package at.gv.egiz.pdfas.lib.impl.configuration;
import at.gv.egiz.pdfas.common.settings.ISettings;
import at.gv.egiz.pdfas.lib.api.IConfigurationConstants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import lombok.extern.slf4j.Slf4j;
-import java.util.Map;
+@Slf4j
+public class PlaceholderConfiguration extends SpecificBaseConfiguration
+ implements IConfigurationConstants {
+ public PlaceholderConfiguration(ISettings configuration) {
+ super(configuration);
+ }
-public class PlaceholderConfiguration extends SpecificBaseConfiguration
- implements IConfigurationConstants {
+ public boolean isGlobalPlaceholderEnabled() {
+ if (configuration.hasValue(PLACEHOLDER_SEARCH_ENABLED)) {
+ final String value = configuration.getValue(PLACEHOLDER_SEARCH_ENABLED);
+ if (value.equalsIgnoreCase(TRUE)) {
+ return true;
+ }
+ }
+ return false;
+ }
- private static final Logger logger = LoggerFactory.getLogger(PlaceholderConfiguration.class);
+ /**
+ * Match selected Profile for Placeholder Enables to activate placeholder
+ * search/match for different profiles
+ *
+ * @return
+ */
+ public boolean isProfileConfigurationEnabled(String profileID) {
+ log.trace("Check if placeHolders are enabled for profile: {}", profileID);
+
+ final String profileMatch = SIG_OBJECT + SEPERATOR + profileID + SEPERATOR
+ + PLACEHOLDER_SEARCH_ENABLED;
+ final String value = configuration.getValue(profileMatch);
+ if (TRUE.equalsIgnoreCase(value)) {
+ log.debug("Placeholders enabled for profile: {} ", profileID);
+ return true;
+
+ }
+ return false;
+
+ }
- public PlaceholderConfiguration(ISettings configuration) {
- super(configuration);
- }
+ /**
+ * Get placeholderId for a specific profile.
+ *
+ * @param selectedProfileID ProfileName
+ * @return Placeholder Id
+ */
+ public String getProfilePlaceholderID(String selectedProfileID) {
+ log.info("SelectedProfileID in ProfileConfEnabled: " + selectedProfileID);
+ final String profileMatch = SIG_OBJECT + SEPERATOR + selectedProfileID + SEPERATOR + PLACEHOLDER_ID;
+ return configuration.getValue(profileMatch);
- public boolean isGlobalPlaceholderEnabled() {
- if (configuration.hasValue(PLACEHOLDER_SEARCH_ENABLED)) {
- String value = configuration.getValue(PLACEHOLDER_SEARCH_ENABLED);
- if (value.equalsIgnoreCase(TRUE)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Match selected Profile for Placeholder
- * Enables to activate placeholder search/match for different profiles
- * @return
- */
- public boolean isProfileConfigurationEnabled(String selectedProfileID)
- {
- logger.info("SelectedProfileID in ProfileConfEnabled: "+selectedProfileID);
- String profileMatch = SIG_OBJECT+SEPERATOR+selectedProfileID+SEPERATOR+PLACEHOLDER_SEARCH_ENABLED;
- if (configuration.getValuesPrefix(profileMatch)!=null) {
- Map<String, String> map = configuration.getValuesPrefix(profileMatch);
- String value = map.get(profileMatch);
- if (value.equalsIgnoreCase(TRUE)) {
- logger.info("Configuration has Value: "+value);
- return true;
- }
- }
- return false;
- }
-
- public String getProfilePlaceholderID(String selectedProfileID)
- {
- logger.info("SelectedProfileID in ProfileConfEnabled: "+selectedProfileID);
- String profileMatch = SIG_OBJECT+SEPERATOR+selectedProfileID+SEPERATOR+PLACEHOLDER_ID;
- if (configuration.getValuesPrefix(profileMatch)!=null) {
- Map<String, String> map = configuration.getValuesPrefix(profileMatch);
- return map.get(profileMatch);
- }
- return null;
- }
+ }
}
-
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/PlaceholderWebConfiguration.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/PlaceholderWebConfiguration.java
deleted file mode 100644
index 3a78f24f..00000000
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/PlaceholderWebConfiguration.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package at.gv.egiz.pdfas.lib.impl.configuration;
-
-import java.util.Properties;
-
-public class PlaceholderWebConfiguration {
-
- protected static Properties properties = new Properties();
-
- //todo properties not cleaned
- public static void setValue(String key, String value)
- {
- properties.clear();
- properties.setProperty(key,value);
- }
- public static String getValue(String key)
- {
- return properties.getProperty(key);
- }
-
- public static void clear () {
- properties.clear();
- }
-
-}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/PlaceholderExtractor.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/PlaceholderExtractor.java
index 0a55b834..436024cd 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/PlaceholderExtractor.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/PlaceholderExtractor.java
@@ -3,10 +3,7 @@ package at.gv.egiz.pdfas.lib.impl.placeholder;
import at.gv.egiz.pdfas.common.exceptions.PdfAsException;
import at.gv.egiz.pdfas.lib.impl.status.PDFObject;
-import java.util.List;
-
public interface PlaceholderExtractor {
- SignaturePlaceholderData extract(PDFObject doc, String placeholderId, int matchMode) throws PdfAsException;
-
- List<SignaturePlaceholderData> extractList(PDFObject pdfObject, String placeholderID, int placeholderMode) throws PdfAsException;
+ SignaturePlaceholderData extract(PDFObject pdfObject, String placeholderID, int placeholderMode) throws PdfAsException;
+
}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/PlaceholderFilter.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/PlaceholderFilter.java
index 99c09295..0d652b76 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/PlaceholderFilter.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/PlaceholderFilter.java
@@ -24,145 +24,69 @@
package at.gv.egiz.pdfas.lib.impl.placeholder;
import java.io.IOException;
-import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
import at.gv.egiz.pdfas.common.exceptions.PDFASError;
import at.gv.egiz.pdfas.common.exceptions.PdfAsErrorCarrier;
import at.gv.egiz.pdfas.common.exceptions.PdfAsException;
import at.gv.egiz.pdfas.common.settings.ISettings;
import at.gv.egiz.pdfas.lib.api.IConfigurationConstants;
-import at.gv.egiz.pdfas.lib.impl.configuration.PlaceholderWebConfiguration;
import at.gv.egiz.pdfas.lib.impl.status.OperationStatus;
-import org.apache.commons.lang3.StringUtils;
public class PlaceholderFilter implements IConfigurationConstants,
PlaceholderExtractorConstants {
-
+
public static SignaturePlaceholderData checkPlaceholderSignatureLocation(
- OperationStatus status, ISettings settings, String signatureLocation) throws PdfAsException,
- IOException {
-
- String placeholderID;
-
- if (status.getPlaceholderConfiguration().isGlobalPlaceholderEnabled()) {
- PlaceholderExtractor extractor = status.getBackend().getPlaceholderExtractor();
-
- if(StringUtils.isNotEmpty(signatureLocation)) {
- placeholderID = signatureLocation;
- } else {
- placeholderID = PlaceholderWebConfiguration.getValue(PLACEHOLDER_WEB_ID);
- if(StringUtils.isEmpty(placeholderID)) {
- placeholderID = settings.getValue(PLACEHOLDER_ID);
- }
- }
-
- String placeholderModeString = settings.getValue(PLACEHOLDER_MODE);
- int placeholderMode = PLACEHOLDER_MATCH_MODE_MODERATE;
- if (StringUtils.isNotEmpty(placeholderModeString)) {
- try {
- placeholderMode = Integer.parseInt(placeholderModeString);
- if (placeholderMode < PLACEHOLDER_MODE_MIN
- || placeholderMode > PLACEHOLDER_MODE_MAX) {
- throw new PdfAsErrorCarrier(new PDFASError(
- PDFASError.ERROR_INVALID_PLACEHOLDER_MODE));
- }
- } catch (NumberFormatException e) {
- throw new PdfAsErrorCarrier(new PDFASError(
- PDFASError.ERROR_INVALID_PLACEHOLDER_MODE, e));
- }
- }
- SignaturePlaceholderData signaturePlaceholderData = extractor.extract(status.getPdfObject(), placeholderID, placeholderMode);
- return signaturePlaceholderData;
-
- } else if (status.getPlaceholderConfiguration().isProfileConfigurationEnabled(status.getRequestedSignature().getSignatureProfileID())) {
- //filter for local placeholder in selected profiles
- PlaceholderExtractor extractor = status.getBackend().getPlaceholderExtractor();
- int placeholderMode = PLACEHOLDER_MATCH_MODE_SORTED;
-
- placeholderID = status.getPlaceholderConfiguration().getProfilePlaceholderID(status.getRequestedSignature().getSignatureProfileID());
- if(StringUtils.isNotEmpty(placeholderID)) {
- placeholderMode = PLACEHOLDER_MATCH_MODE_MODERATE;
- }
- String placeholderModeString = settings.getValue(PLACEHOLDER_MODE);
- if (StringUtils.isNotEmpty(placeholderModeString)) {
- try {
- placeholderMode = Integer.parseInt(placeholderModeString);
- if (placeholderMode < PLACEHOLDER_MODE_MIN
- || placeholderMode > PLACEHOLDER_MODE_MAX) {
- throw new PdfAsErrorCarrier(new PDFASError(
- PDFASError.ERROR_INVALID_PLACEHOLDER_MODE));
- }
- } catch (NumberFormatException e) {
- throw new PdfAsErrorCarrier(new PDFASError(
- PDFASError.ERROR_INVALID_PLACEHOLDER_MODE, e));
- }
- }
- SignaturePlaceholderData signaturePlaceholderData = extractor.extract(status.getPdfObject(), placeholderID, placeholderMode);
- return signaturePlaceholderData;
+ OperationStatus status, ISettings settings, String placeholderId) throws PdfAsException, IOException {
+
+ String signingProfile = status.getRequestedSignature().getSignatureProfileID();
+
+ if (status.getPlaceholderConfiguration().isGlobalPlaceholderEnabled()) {
+ String defaultPlaceHolderId = settings.getValue(PLACEHOLDER_ID);
+ return status.getBackend().getPlaceholderExtractor().extract(
+ status.getPdfObject(), getPlaceHolderId(placeholderId, defaultPlaceHolderId) ,
+ getPlaceHolderMode(settings, PLACEHOLDER_MATCH_MODE_SORTED));
+
+ } else if (status.getPlaceholderConfiguration().isProfileConfigurationEnabled(signingProfile)) {
+ String defaultPlaceHolderId = status.getPlaceholderConfiguration().getProfilePlaceholderID(signingProfile);
+ return status.getBackend().getPlaceholderExtractor().extract(
+ status.getPdfObject(), getPlaceHolderId(placeholderId, defaultPlaceHolderId),
+ getPlaceHolderMode(settings,
+ StringUtils.isNotEmpty(defaultPlaceHolderId) ? PLACEHOLDER_MATCH_MODE_MODERATE : PLACEHOLDER_MATCH_MODE_SORTED));
}
return null;
}
-
- public static List<SignaturePlaceholderData> checkPlaceholderSignatureLocationList(OperationStatus status, ISettings settings, String signatureLocation) throws PdfAsException,
- IOException {
- String placeholderID;
-
- if (status.getPlaceholderConfiguration().isGlobalPlaceholderEnabled()) {
- PlaceholderExtractor extractor = status.getBackend().getPlaceholderExtractor();
-
- if(StringUtils.isNotEmpty(signatureLocation)) {
- placeholderID = signatureLocation;
- } else {
- placeholderID = PlaceholderWebConfiguration.getValue(PLACEHOLDER_WEB_ID);
- if(StringUtils.isEmpty(placeholderID)) {
- placeholderID = settings.getValue(PLACEHOLDER_ID);
- }
- }
-
- String placeholderModeString = settings.getValue(PLACEHOLDER_MODE);
- int placeholderMode = PLACEHOLDER_MATCH_MODE_MODERATE;
- if (StringUtils.isNotEmpty(placeholderModeString)) {
- try {
- placeholderMode = Integer.parseInt(placeholderModeString);
- if (placeholderMode < PLACEHOLDER_MODE_MIN
- || placeholderMode > PLACEHOLDER_MODE_MAX) {
- throw new PdfAsErrorCarrier(new PDFASError(
- PDFASError.ERROR_INVALID_PLACEHOLDER_MODE));
- }
- } catch (NumberFormatException e) {
- throw new PdfAsErrorCarrier(new PDFASError(
- PDFASError.ERROR_INVALID_PLACEHOLDER_MODE, e));
- }
- }
- return extractor.extractList(status.getPdfObject(), placeholderID,
- placeholderMode);
-
- } else if (status.getPlaceholderConfiguration().isProfileConfigurationEnabled(status.getRequestedSignature().getSignatureProfileID())) {
- //filter for local placeholder in selected profiles
- PlaceholderExtractor extractor = status.getBackend().getPlaceholderExtractor();
- int placeholderMode = PLACEHOLDER_MATCH_MODE_SORTED;
-
- placeholderID = status.getPlaceholderConfiguration().getProfilePlaceholderID(status.getRequestedSignature().getSignatureProfileID());
- if(StringUtils.isNotEmpty(placeholderID)) {
- placeholderMode = PLACEHOLDER_MATCH_MODE_MODERATE;
- }
- String placeholderModeString = settings.getValue(PLACEHOLDER_MODE);
- if (StringUtils.isNotEmpty(placeholderModeString)) {
- try {
- placeholderMode = Integer.parseInt(placeholderModeString);
- if (placeholderMode < PLACEHOLDER_MODE_MIN
- || placeholderMode > PLACEHOLDER_MODE_MAX) {
- throw new PdfAsErrorCarrier(new PDFASError(
- PDFASError.ERROR_INVALID_PLACEHOLDER_MODE));
- }
- } catch (NumberFormatException e) {
- throw new PdfAsErrorCarrier(new PDFASError(
- PDFASError.ERROR_INVALID_PLACEHOLDER_MODE, e));
- }
- }
- return extractor.extractList(status.getPdfObject(), placeholderID,
- placeholderMode);
- }
- return null;
+
+ private static int getPlaceHolderMode(ISettings settings, int defaultValue) throws PdfAsErrorCarrier {
+ String placeholderModeString = settings.getValue(PLACEHOLDER_MODE);
+ if (StringUtils.isNotEmpty(placeholderModeString)) {
+ try {
+ int placeholderMode = Integer.parseInt(placeholderModeString);
+ if (placeholderMode < PLACEHOLDER_MODE_MIN || placeholderMode > PLACEHOLDER_MODE_MAX) {
+ throw new PdfAsErrorCarrier(new PDFASError(PDFASError.ERROR_INVALID_PLACEHOLDER_MODE));
+
+ }
+ return placeholderMode;
+
+ } catch (NumberFormatException e) {
+ throw new PdfAsErrorCarrier(new PDFASError(
+ PDFASError.ERROR_INVALID_PLACEHOLDER_MODE, e));
+ }
+
+ } else {
+ return defaultValue;
+
+ }
}
+
+ private static String getPlaceHolderId(String requestId, String defaultValue) {
+ if (StringUtils.isEmpty(requestId)) {
+ return defaultValue;
+
+ } else {
+ return requestId;
+
+ }
+ }
} \ No newline at end of file
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/SignaturePlaceholderContext.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/SignaturePlaceholderContext.java
deleted file mode 100644
index 3c8a6d76..00000000
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/placeholder/SignaturePlaceholderContext.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright>
- * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a
- * joint initiative of the Federal Chancellery Austria and Graz University of
- * Technology.
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://www.osor.eu/eupl/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- ******************************************************************************/
-/**
- * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright>
- * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a
- * joint initiative of the Federal Chancellery Austria and Graz University of
- * Technology.
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://www.osor.eu/eupl/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-package at.gv.egiz.pdfas.lib.impl.placeholder;
-
-/**
- * Store and retrieve {@link SignaturePlaceholderData} in/from a thread local context.
- *
- * @author exthex
- *
- */
-public class SignaturePlaceholderContext {
-
- private ThreadLocal<SignaturePlaceholderData> sigHolder = new ThreadLocal<SignaturePlaceholderData>();
-
- private static SignaturePlaceholderContext instance = new SignaturePlaceholderContext();
-
- /**
- * Constructor. Private because this is a singleton.
- */
- private SignaturePlaceholderContext() {
-
- }
-
- /**
- * Get the {@link SignaturePlaceholderData} which is currently bound to this thread.
- * Might be null.
- *
- * @return
- */
- public static SignaturePlaceholderData getSignaturePlaceholderData(){
- return instance.sigHolder.get();
- }
-
- /**
- *
- * @return true if there is currently a {@link SignaturePlaceholderData} bound to this thread, false otherwise.
- */
- public static boolean isSignaturePlaceholderDataSet() {
- return instance.sigHolder.get() != null;
- }
-
- /**
- * Bind a {@link SignaturePlaceholderData} to this thread.
- * If the given data is null, the context will be cleared.
- *
- * @param data if null, clears the ThreadLocal, else binds the data to the current thread.
- */
- public static void setSignaturePlaceholderData(SignaturePlaceholderData data) {
- instance.sigHolder.set(data);
- }
-}