From db52e4d66d60184d53a27ba4d6772461daacc03d Mon Sep 17 00:00:00 2001 From: tknall Date: Fri, 22 Mar 2013 08:57:51 +0000 Subject: Maintenance update (bugfixes, new features, cleanup...) Refer to /dok/RELEASE_NOTES-3.3.txt for further information. git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/pdf-as/trunk@931 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- .../at/gv/egiz/pdfas/api/commons/Constants.java | 33 +++++---- .../api/commons/DynamicSignatureProfileImpl.java | 8 ++- .../egiz/pdfas/api/commons/SignatureProfile.java | 11 +++ .../at/gv/egiz/pdfas/api/sign/SignParameters.java | 78 +++++++++++----------- 4 files changed, 74 insertions(+), 56 deletions(-) (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api') diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/Constants.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/Constants.java index b351d50..4afec65 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/Constants.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/Constants.java @@ -27,7 +27,7 @@ import at.knowcenter.wag.egov.egiz.pdf.AdobeSignatureHelper; /** * Contains commonly used constants. - * + * * @author wprinz */ public final class Constants @@ -52,7 +52,7 @@ public final class Constants * This value should not be modified due to external dependencies! */ public static final String SIGNATURE_TYPE_TEXTUAL = "textual"; - + /** * The default signature type (one of "textual", "binary", "detachedtextual"). */ @@ -60,7 +60,7 @@ public final class Constants /** * A "detached" textual signature. - * + * *

* The document text is signed, but instead of returning the pdf with the signature block, * the sign result XML of the connector is returned. @@ -98,14 +98,14 @@ public final class Constants * This value should not be modified due to external dependencies! */ public static final String SIGNATURE_DEVICE_MOBILE = "mobile"; - + /** * Added by rpiazzi * The signature device MOBILETEST for the test version of the MOBILE CCS. * This value should not be modified due to external dependencies! */ public static final String SIGNATURE_DEVICE_MOBILETEST = "mobiletest"; - + /** * Only binary signatures are verified. */ @@ -113,7 +113,7 @@ public final class Constants /** * Binary and textual signatures are verified with time optimization. - * + * *

* This mode of operation tries to minimize the numbers of text extractions, * which are very time intensive, at the cost of some rare cases, in which some @@ -141,19 +141,19 @@ public final class Constants * The zip file containing the default configuration. */ public static final String DEFAULT_CONFIGURATION_ZIP_RESOURCE = "DefaultConfiguration.zip"; - + /** * The configuration folder for pdf-as within the user's home folder. */ public static final String USERHOME_CONFIG_FOLDER = "PDF-AS"; - + /** * The name of the directory, where temporary files are stored. */ public static final String TEMP_DIR_NAME = "pdfastmp"; - + public static final String BKU_HEADER_SIGNATURE_LAYOUT = "SignatureLayout"; - + public static final String ADOBE_SIG_FILTER = AdobeSignatureHelper.ADOBE_SIG_FILTER; /** @@ -161,25 +161,30 @@ public final class Constants * If the placeholder with the given id is not found in the document, an exception will be thrown. */ public static final int PLACEHOLDER_MATCH_MODE_STRICT = 0; - + /** * A moderate matching mode for placeholder extraction.
* If the placeholder with the given id is not found in the document, the first placeholder without an id will be taken.
* If there is no such placeholder, the signature will be placed as usual, according to the pos parameter of the signature profile used. */ public static final int PLACEHOLDER_MATCH_MODE_MODERATE = 1; - + /** * A more lenient matching mode for placeholder extraction.
* If the placeholder with the given id is not found in the document, the first found placeholder will be taken, regardless if it has an id set, or not.
* If there is no placeholder at all, the signature will be placed as usual, according to the pos parameter of the signature profile used. */ public static final int PLACEHOLDER_MATCH_MODE_LENIENT = 2; - + /** * Identifier for QR based placeholders. */ public static final String QR_PLACEHOLDER_IDENTIFIER = "PDF-AS-POS"; - + + /** + * The name of a logger used for statistical logging. + */ + public static final String STATISTIC_LOGGER_NAME = "statistic"; + } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/DynamicSignatureProfileImpl.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/DynamicSignatureProfileImpl.java index 7e1672a..e1f31f7 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/DynamicSignatureProfileImpl.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/DynamicSignatureProfileImpl.java @@ -159,8 +159,10 @@ public class DynamicSignatureProfileImpl implements DynamicSignatureProfile { cfg = SettingsReader.getInstance(); - Properties props = cfg.getProperties(); - for (Enumeration e = props.keys(); e.hasMoreElements();) { + Properties props = cfg.getProperties(); + // DTI: props.keys() does not support default properties, therefore we should better use props.propertyNames() +// for (Enumeration e = props.keys(); e.hasMoreElements();) { + for (Enumeration e = props.propertyNames(); e.hasMoreElements();) { String oldKey = (String) e.nextElement(); if (oldKey.startsWith("sig_obj." + parentProfile + ".")) { String newKey = StringUtils.replace(oldKey, parentProfile, name); @@ -168,7 +170,7 @@ public class DynamicSignatureProfileImpl implements DynamicSignatureProfile { this.newProps.put(newKey, val); } } - this.newProps.put("sig_obj.types." + name, "on"); + this.newProps.put("sig_obj.types." + name, "on"); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/SignatureProfile.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/SignatureProfile.java index 8cd3108..1325d04 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/SignatureProfile.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/commons/SignatureProfile.java @@ -25,6 +25,8 @@ package at.gv.egiz.pdfas.api.commons; import java.util.Properties; +import at.knowcenter.wag.egov.egiz.sig.SignatureTypes.State; + /** * Definition of a signature profile. * @@ -73,4 +75,13 @@ public interface SignatureProfile { * @return */ public boolean isDefault(); + + /** + * Returns the state of the signature profile. Signature profiles may be restricted to signature ( + * {@link State#SIGN_ONLY}) or to verification ({@link State#VERIFY_ONLY}). + * + * @return The state of the profile. + */ + public State getState(); + } diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/sign/SignParameters.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/sign/SignParameters.java index 8834481..5533b8b 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/sign/SignParameters.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/api/sign/SignParameters.java @@ -34,16 +34,16 @@ import at.knowcenter.wag.egov.egiz.sig.SignatureTypes; /** * Parameter object that holds the sign parameters. - * + * * @author wprinz */ public class SignParameters { // 23.11.2010 changed by exthex - added parameters for placeholder handling - + /** * The document to be signed. - * + * *

* The DataSource implementation encapsulates the actual representaion of the * data. E.g. the DataSource may be File based or byte array based. See @@ -54,7 +54,7 @@ public class SignParameters /** * The type of the signature. - * + * *

* May be {@link Constants#SIGNATURE_TYPE_BINARY} or * {@link Constants#SIGNATURE_TYPE_TEXTUAL}. @@ -64,7 +64,7 @@ public class SignParameters /** * The signature device to perform the actual signature. - * + * *

* May be {@link Constants#SIGNATURE_DEVICE_MOA} or * {@link Constants#SIGNATURE_DEVICE_BKU}. @@ -75,18 +75,18 @@ public class SignParameters /** * The signature profile identifier identifying the profile to be used in the * config file. - * + * *

* Note: In near future it will be possible to provide a full specified * profile here instead of the profile id. *

*/ protected String signatureProfileId = null; - + /** * The signature key identifier specifying which signature key should be used * by the signature device to perform the signature. - * + * *

* Providing a null value (default) means that no explicit signature key * identifier is provided. The selected signature device will then use its @@ -122,7 +122,7 @@ public class SignParameters * The output DataSink that will receive the signed document. */ protected DataSink output = null; - + protected TimeStamper timeStamperImpl; /** @@ -142,12 +142,12 @@ public class SignParameters * Defaults to {@link Constants#PLACEHOLDER_MATCH_MODE_MODERATE}. */ protected int placeholderMatchMode = Constants.PLACEHOLDER_MATCH_MODE_MODERATE; - + protected Properties overrideProps = new Properties(); - - + + /** * {@link #setTimeStamperImpl(TimeStamper)} @@ -158,7 +158,7 @@ public class SignParameters } /** - * Set a {@link TimeStamper} to create a timestamp on the signature value. Will be + * Set a {@link TimeStamper} to create a timestamp on the signature value. Will be * called after sign. For binary signatures only. Timestamp will be embedded in egiz dict /TimeStamp. * @param timeStamperImpl */ @@ -285,21 +285,21 @@ public class SignParameters } /** - * Override user defined values from the used signature profile like "value.SIG_META". - * You cannot override pre defined values like SIG_VALUE, SIG_DATE {@link SignatureTypes#REQUIRED_SIG_KEYS}. + * Override user defined values from the used signature profile like "value.SIG_META". + * You cannot override pre defined values like SIG_VALUE, SIG_DATE {@link SignatureTypes#REQUIRED_SIG_KEYS}. * The override values are bound to the {@link SignParameters} instance. *

* Sample usage: *

       SignParameters sp = new SignParameters();
       . . .
-      
-      sp.setSignatureProfileId("SIGNATURBLOCK_DE");  
-      
+
+      sp.setSignatureProfileId("SIGNATURBLOCK_DE");
+
       // expressions do not work on binary signature fields without phlength setting!!
       sp.setProfileOverrideValue("SIG_META", "It's nice to be important, but it is more important to be nice ${subject.L}");;
-      sp.setProfileOverrideValue("SIG_LABEL", "./images/signatur-logo_en.png");                  
-      
+      sp.setProfileOverrideValue("SIG_LABEL", "./images/signatur-logo_en.png");
+
       // execute sign using the overrides
       pdfAs.sign(sp);
   
@@ -311,51 +311,51 @@ public class SignParameters if (SignatureTypes.isRequredSigTypeKey(key)) { throw new RuntimeException("cannot set value for pre defined signature field names"); } - this.overrideProps.put(key, value); + this.overrideProps.put(key, value); } - + /** * Get override values created via {@link #setProfileOverrideValue(String, String)} * @return */ public Properties getProfileOverrideProperties() { return this.overrideProps; - + } /** * Get the value of the checkForPlaceholder flag. - * + * * @return */ public Boolean isCheckForPlaceholder() { return this.checkForPlaceholder; } - + /** - * Set this to true, if you want a search for placeholder images to be performed and + * Set this to true, if you want a search for placeholder images to be performed and * appropriate images to be replaced. * If this is not set, a search will only be performed if the configuration property "enable_placeholder_search" is set to true. - * + * * @param check */ - public void setCheckForPlaceholder(boolean check) { - this.checkForPlaceholder = Boolean.valueOf(check); + public void setCheckForPlaceholder(Boolean searchForPlaceHolder) { + this.checkForPlaceholder = searchForPlaceHolder; } /** - * Set an explicit placeholder id. + * Set an explicit placeholder id. * Only placeholder images that have a matching ID property embedded will be considered for replacement. - * + * * @param placeholderId */ public void setPlaceholderId(String placeholderId) { - this.placeholderId = placeholderId; + this.placeholderId = placeholderId; } - + /** * The id of the placeholder to replace. - * + * * @return the placeholderId */ public String getPlaceholderId() { @@ -367,13 +367,13 @@ public class SignParameters * Exactly matching meaning:
* - * + * * @see Constants#PLACEHOLDER_MATCH_MODE_LENIENT * @see Constants#PLACEHOLDER_MATCH_MODE_MODERATE * @see Constants#PLACEHOLDER_MATCH_MODE_STRICT - * + * * Defaults to {@link Constants#PLACEHOLDER_MATCH_MODE_MODERATE}. - * + * * @param placeholderMatchMode */ public void setPlaceholderMatchMode(int placeholderMatchMode) { @@ -382,12 +382,12 @@ public class SignParameters /** * Get the placeholder matching mode. - * + * * @see SignParameters#getPlaceholderMatchMode() * @return the placeholderMatchMode */ public int getPlaceholderMatchMode() { return this.placeholderMatchMode; } - + } -- cgit v1.2.3