summaryrefslogtreecommitdiff
path: root/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties')
-rw-r--r--pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/DateProfileProperty.java36
-rw-r--r--pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/FileProfileProperty.java33
-rw-r--r--pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/FloatProfileProperty.java30
-rw-r--r--pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/IntegerProfileProperty.java31
-rw-r--r--pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/ProfileProperty.java112
-rw-r--r--pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/StringProfileProperty.java24
-rw-r--r--pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/FloatRangeValidator.java57
-rw-r--r--pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/IntegerRangeValidator.java58
-rw-r--r--pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/PropertyValidator.java41
-rw-r--r--pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/PropertyValidatorComparer.java16
-rw-r--r--pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/RegExValidator.java37
11 files changed, 475 insertions, 0 deletions
diff --git a/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/DateProfileProperty.java b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/DateProfileProperty.java
new file mode 100644
index 00000000..ac5df52a
--- /dev/null
+++ b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/DateProfileProperty.java
@@ -0,0 +1,36 @@
+package at.asit.pdfover.pdfsignator.profileproperties;
+
+import java.util.Date;
+
+import at.asit.pdfover.pdfsignator.InvalidPropertyTypeException;
+import at.asit.pdfover.pdfsignator.InvalidPropertyValueException;
+
+/**
+ * A Date Property
+ */
+public class DateProfileProperty extends ProfileProperty {
+
+ /**
+ * Date value of property
+ */
+ protected Date dvalue = null;
+
+ /**
+ * Sets the date value of the Property
+ * @param value The date value
+ * @throws InvalidPropertyValueException
+ * @throws InvalidPropertyTypeException
+ */
+ public void SetValue(Date value) throws InvalidPropertyValueException, InvalidPropertyTypeException {
+ this.SetTextValue(value.toString());
+ this.dvalue = value;
+ }
+
+ /**
+ * Gets the date value
+ * @return the date value of the property
+ */
+ public Date GetValue() {
+ return this.dvalue;
+ }
+}
diff --git a/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/FileProfileProperty.java b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/FileProfileProperty.java
new file mode 100644
index 00000000..46c5cd12
--- /dev/null
+++ b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/FileProfileProperty.java
@@ -0,0 +1,33 @@
+package at.asit.pdfover.pdfsignator.profileproperties;
+
+import java.io.File;
+
+import at.asit.pdfover.pdfsignator.InvalidPropertyTypeException;
+import at.asit.pdfover.pdfsignator.InvalidPropertyValueException;
+
+public class FileProfileProperty extends ProfileProperty {
+
+ /**
+ * File value of property
+ */
+ protected File fvalue = null;
+
+ /**
+ * Sets the file value of the Property
+ * @param value The file value
+ * @throws InvalidPropertyValueException
+ * @throws InvalidPropertyTypeException
+ */
+ public void SetValue(File value) throws InvalidPropertyValueException, InvalidPropertyTypeException {
+ this.SetTextValue(value.getAbsolutePath());
+ this.fvalue = value;
+ }
+
+ /**
+ * Gets the file value
+ * @return the file value of the property
+ */
+ public File GetValue() {
+ return this.fvalue;
+ }
+}
diff --git a/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/FloatProfileProperty.java b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/FloatProfileProperty.java
new file mode 100644
index 00000000..51c4089e
--- /dev/null
+++ b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/FloatProfileProperty.java
@@ -0,0 +1,30 @@
+package at.asit.pdfover.pdfsignator.profileproperties;
+
+import at.asit.pdfover.pdfsignator.InvalidPropertyTypeException;
+import at.asit.pdfover.pdfsignator.InvalidPropertyValueException;
+
+public class FloatProfileProperty extends ProfileProperty {
+ /**
+ * Float value of property
+ */
+ protected Float fvalue = null;
+
+ /**
+ * Sets the float value of the Property
+ * @param value The float value
+ * @throws InvalidPropertyValueException
+ * @throws InvalidPropertyTypeException
+ */
+ public void SetValue(float value) throws InvalidPropertyValueException, InvalidPropertyTypeException {
+ this.SetTextValue(Float.toString(value));
+ this.fvalue = value;
+ }
+
+ /**
+ * Gets the float value
+ * @return the float value of the property
+ */
+ public Float GetValue() {
+ return this.fvalue;
+ }
+}
diff --git a/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/IntegerProfileProperty.java b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/IntegerProfileProperty.java
new file mode 100644
index 00000000..7bb91226
--- /dev/null
+++ b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/IntegerProfileProperty.java
@@ -0,0 +1,31 @@
+package at.asit.pdfover.pdfsignator.profileproperties;
+
+import at.asit.pdfover.pdfsignator.InvalidPropertyTypeException;
+import at.asit.pdfover.pdfsignator.InvalidPropertyValueException;
+
+public class IntegerProfileProperty extends ProfileProperty {
+
+ /**
+ * Integer value of property
+ */
+ protected Integer ivalue = null;
+
+ /**
+ * Sets the integer value of the Property
+ * @param value The integer value
+ * @throws InvalidPropertyValueException
+ * @throws InvalidPropertyTypeException
+ */
+ public void SetValue(int value) throws InvalidPropertyValueException, InvalidPropertyTypeException {
+ this.SetTextValue(Integer.toString(value));
+ this.ivalue = value;
+ }
+
+ /**
+ * Gets the integer value
+ * @return the integer value of the property
+ */
+ public Integer GetValue() {
+ return this.ivalue;
+ }
+}
diff --git a/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/ProfileProperty.java b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/ProfileProperty.java
new file mode 100644
index 00000000..ebd247d6
--- /dev/null
+++ b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/ProfileProperty.java
@@ -0,0 +1,112 @@
+package at.asit.pdfover.pdfsignator.profileproperties;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import at.asit.pdfover.pdfsignator.InvalidPropertyTypeException;
+import at.asit.pdfover.pdfsignator.InvalidPropertyValueException;
+import at.asit.pdfover.pdfsignator.profileproperties.validators.PropertyValidator;
+import at.asit.pdfover.pdfsignator.profileproperties.validators.PropertyValidatorComparer;
+
+/**
+ * Defines a Profile Property
+ */
+public abstract class ProfileProperty {
+
+ /**
+ * Is this property optional
+ */
+ protected boolean optional;
+
+ /**
+ * The value of the property
+ */
+ private String value;
+
+ /**
+ * The key of the property
+ */
+ private String key;
+
+ /**
+ * The list of PropertyValidator
+ * @uml.property name="propertyValidator"
+ * @uml.associationEnd multiplicity="(0 -1)" ordering="true" aggregation="shared" inverse="profileProperty:at.asit.pdfover.pdfsignator.profileproperties.validators.PropertyValidator"
+ */
+ protected List<PropertyValidator> validators = new ArrayList<PropertyValidator>();
+
+ /**
+ * Validates the ProfileProperty
+ * @throws InvalidPropertyValueException
+ * @throws InvalidPropertyTypeException
+ */
+ protected void Validate() throws InvalidPropertyValueException, InvalidPropertyTypeException {
+ for(PropertyValidator validator : validators) {
+ validator.validate(this);
+ }
+ }
+
+ /**
+ * Adds a new PropertyValidator to this Property and sorts the validators according to their priority
+ * @param validator
+ * @throws InvalidPropertyTypeException
+ */
+ public void AddValidator(PropertyValidator validator) throws InvalidPropertyTypeException {
+ validator.CheckPropertyType(this);
+ validators.add(validator);
+ Collections.sort(validators, new PropertyValidatorComparer());
+ }
+
+ /**
+ * Sets if the property is optional
+ * @param value The new optional value
+ */
+ public void SetOptional(boolean value) {
+ this.optional = value;
+ }
+
+ /**
+ * Gets if the Property is Optional
+ * @return Is the property optional
+ */
+ public boolean GetOptional() {
+ return this.optional;
+ }
+
+ /**
+ * Sets the string value of the property and validates the Property
+ * (All subclasses should set the value via this method!)
+ * @param value The new value
+ * @throws InvalidPropertyValueException
+ * @throws InvalidPropertyTypeException
+ */
+ public void SetTextValue(String value) throws InvalidPropertyValueException, InvalidPropertyTypeException {
+ this.value = value;
+ this.Validate();
+ }
+
+ /**
+ * Gets the property text value
+ * @return The property text value
+ */
+ public String GetTextValue() {
+ return this.value;
+ }
+
+ /**
+ * Sets the propety key
+ * @param value The new property key
+ */
+ public void SetKey(String value) {
+ this.key = value;
+ }
+
+ /**
+ * Gets the property Key
+ * @return The property key
+ */
+ public String GetKey() {
+ return this.key;
+ }
+}
diff --git a/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/StringProfileProperty.java b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/StringProfileProperty.java
new file mode 100644
index 00000000..35d903af
--- /dev/null
+++ b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/StringProfileProperty.java
@@ -0,0 +1,24 @@
+package at.asit.pdfover.pdfsignator.profileproperties;
+
+import at.asit.pdfover.pdfsignator.InvalidPropertyTypeException;
+import at.asit.pdfover.pdfsignator.InvalidPropertyValueException;
+
+public class StringProfileProperty extends ProfileProperty {
+ /**
+ * Sets the string value of the Property
+ * @param value The string value
+ * @throws InvalidPropertyValueException
+ * @throws InvalidPropertyTypeException
+ */
+ public void SetValue(String value) throws InvalidPropertyValueException, InvalidPropertyTypeException {
+ this.SetTextValue(value);
+ }
+
+ /**
+ * Gets the string value
+ * @return the string value of the property
+ */
+ public String GetValue() {
+ return this.GetTextValue();
+ }
+}
diff --git a/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/FloatRangeValidator.java b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/FloatRangeValidator.java
new file mode 100644
index 00000000..8cca9230
--- /dev/null
+++ b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/FloatRangeValidator.java
@@ -0,0 +1,57 @@
+package at.asit.pdfover.pdfsignator.profileproperties.validators;
+
+import at.asit.pdfover.pdfsignator.InvalidPropertyTypeException;
+import at.asit.pdfover.pdfsignator.InvalidPropertyValueException;
+import at.asit.pdfover.pdfsignator.profileproperties.FloatProfileProperty;
+import at.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;
+
+public class FloatRangeValidator extends PropertyValidator {
+
+ /**
+ * The maximum value
+ */
+ protected float max;
+
+ /**
+ * The minimum value
+ */
+ protected float min;
+
+ /**
+ * Constructor
+ * @param min The minimum allowed value
+ * @param max The maximum allowed value
+ */
+ public FloatRangeValidator(float min, float max) {
+ this.max = max;
+ this.min = min;
+ }
+
+ @Override
+ public void validate(ProfileProperty property)
+ throws InvalidPropertyValueException, InvalidPropertyTypeException {
+ this.CheckPropertyType(property);
+
+ FloatProfileProperty prop = (FloatProfileProperty) property;
+
+ if (prop.GetValue() == null) {
+ throw new InvalidPropertyValueException(property,
+ "Value is not set!");
+ }
+
+ float value = prop.GetValue();
+
+ if (value < min || value > max) {
+ throw new InvalidPropertyValueException(property, String.format(
+ "Value has to be between %f and %f", min, max));
+ }
+ }
+
+ @Override
+ public void CheckPropertyType(ProfileProperty property)
+ throws InvalidPropertyTypeException {
+ if (!(property instanceof FloatProfileProperty)) {
+ throw new InvalidPropertyTypeException(property, this);
+ }
+ }
+}
diff --git a/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/IntegerRangeValidator.java b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/IntegerRangeValidator.java
new file mode 100644
index 00000000..504cb482
--- /dev/null
+++ b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/IntegerRangeValidator.java
@@ -0,0 +1,58 @@
+package at.asit.pdfover.pdfsignator.profileproperties.validators;
+
+import at.asit.pdfover.pdfsignator.InvalidPropertyTypeException;
+import at.asit.pdfover.pdfsignator.InvalidPropertyValueException;
+import at.asit.pdfover.pdfsignator.profileproperties.IntegerProfileProperty;
+import at.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;
+
+public class IntegerRangeValidator extends PropertyValidator {
+
+ /**
+ * Maximum value of property
+ */
+ protected int max;
+
+ /**
+ * Minimum value of property
+ */
+ protected int min;
+
+ /**
+ * Constructor
+ * @param min The minimum allowed value
+ * @param max The maximum allowed value
+ */
+ public IntegerRangeValidator(int min, int max) {
+ this.max = max;
+ this.min = min;
+ }
+
+ @Override
+ public void validate(ProfileProperty property)
+ throws InvalidPropertyValueException, InvalidPropertyTypeException {
+ this.CheckPropertyType(property);
+
+ IntegerProfileProperty prop = (IntegerProfileProperty) property;
+
+ if(prop.GetValue() == null)
+ {
+ throw new InvalidPropertyValueException(property, "Value is not set!");
+ }
+
+ int value = prop.GetValue();
+
+ if(value < min || value > max) {
+ throw new InvalidPropertyValueException(property,
+ String.format("Value has to be between %d and %d", min, max));
+ }
+ }
+
+ @Override
+ public void CheckPropertyType(ProfileProperty property)
+ throws InvalidPropertyTypeException {
+ if(!(property instanceof IntegerProfileProperty)) {
+ throw new InvalidPropertyTypeException(property, this);
+ }
+ }
+
+}
diff --git a/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/PropertyValidator.java b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/PropertyValidator.java
new file mode 100644
index 00000000..8da9babc
--- /dev/null
+++ b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/PropertyValidator.java
@@ -0,0 +1,41 @@
+package at.asit.pdfover.pdfsignator.profileproperties.validators;
+
+import at.asit.pdfover.pdfsignator.InvalidPropertyTypeException;
+import at.asit.pdfover.pdfsignator.InvalidPropertyValueException;
+import at.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;
+
+/**
+ * Validates the value of a property
+ */
+public abstract class PropertyValidator {
+
+ /**
+ * The priority of this property should determine the order of validations
+ */
+ protected int priority = 1;
+
+ /**
+ * Called to validate the value of the given property and throws an InvalidPropertyValueException if value is invalid
+ * @param propety
+ * @throws InvalidPropertyValueException
+ */
+ public abstract void validate(ProfileProperty property) throws InvalidPropertyValueException, InvalidPropertyTypeException;
+
+ /**
+ * Sets the priority of this validator
+ * @param value The new priority
+ */
+ public void SetPriority(int value) {
+ this.priority = value;
+ }
+
+ /**
+ * Gets the priority of this validator
+ * @return The priority of this validator
+ */
+ public int GetPriority() {
+ return this.priority;
+ }
+
+ public abstract void CheckPropertyType(ProfileProperty property) throws InvalidPropertyTypeException;
+}
diff --git a/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/PropertyValidatorComparer.java b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/PropertyValidatorComparer.java
new file mode 100644
index 00000000..76c7f0e2
--- /dev/null
+++ b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/PropertyValidatorComparer.java
@@ -0,0 +1,16 @@
+package at.asit.pdfover.pdfsignator.profileproperties.validators;
+
+import java.util.Comparator;
+
+/**
+ * Compares the Priority of two PropertyValidators
+ * @author afitzek
+ *
+ */
+public class PropertyValidatorComparer implements Comparator<PropertyValidator> {
+
+ public int compare(PropertyValidator o1, PropertyValidator o2) {
+ return o1.GetPriority() - o2.GetPriority();
+ }
+
+}
diff --git a/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/RegExValidator.java b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/RegExValidator.java
new file mode 100644
index 00000000..9ca8d113
--- /dev/null
+++ b/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/RegExValidator.java
@@ -0,0 +1,37 @@
+package at.asit.pdfover.pdfsignator.profileproperties.validators;
+
+import at.asit.pdfover.pdfsignator.InvalidPropertyTypeException;
+import at.asit.pdfover.pdfsignator.InvalidPropertyValueException;
+import at.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;
+
+public class RegExValidator extends PropertyValidator {
+
+ /**
+ * The regex value
+ */
+ protected String regex;
+
+ /**
+ * Constructor
+ * @param regex The regex to check
+ */
+ public RegExValidator(String regex) {
+ this.regex = regex;
+ }
+
+ @Override
+ public void validate(ProfileProperty property)
+ throws InvalidPropertyValueException, InvalidPropertyTypeException {
+
+ if(!property.GetTextValue().matches(this.regex)) {
+ throw new InvalidPropertyValueException(property, String.format(
+ "Value is invalid!"));
+ }
+ }
+
+ @Override
+ public void CheckPropertyType(ProfileProperty property)
+ throws InvalidPropertyTypeException {
+ // Is valid on all Property Types
+ }
+}