diff options
24 files changed, 1425 insertions, 0 deletions
| diff --git a/trunk/pdf-over/pdf-signer-interface/pom.xml b/trunk/pdf-over/pdf-signer-interface/pom.xml new file mode 100644 index 00000000..6b70ebb1 --- /dev/null +++ b/trunk/pdf-over/pdf-signer-interface/pom.xml @@ -0,0 +1,14 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +  <modelVersion>4.0.0</modelVersion> +  <parent> +    <artifactId>pdf-over</artifactId> +    <groupId>at.a-sit</groupId> +    <version>4.0-SNAPSHOT</version> +    <relativePath>..</relativePath> +  </parent> +  <artifactId>pdf-signer-interface</artifactId> +  <name>PDFSignator Interface</name> +  <version>0.1-SNAPSHOT</version> +  <inceptionYear>2012</inceptionYear> +  <url>http://www.buergerkarte.at/</url> +</project>
\ No newline at end of file diff --git a/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/DocumentSource.java b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/DocumentSource.java new file mode 100644 index 00000000..9343a981 --- /dev/null +++ b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/DocumentSource.java @@ -0,0 +1,5 @@ +package at.asit.pdfover.pdfsignator; + +public class DocumentSource { + +} diff --git a/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/InvalidPropertyTypeException.java b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/InvalidPropertyTypeException.java new file mode 100644 index 00000000..8f9d54a9 --- /dev/null +++ b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/InvalidPropertyTypeException.java @@ -0,0 +1,16 @@ +package at.asit.pdfover.pdfsignator; + +import at.asit.pdfover.pdfsignator.profileproperties.ProfileProperty; +import at.asit.pdfover.pdfsignator.profileproperties.validators.PropertyValidator; + +public class InvalidPropertyTypeException extends Exception { +	/** +	 *  +	 */ +	private static final long serialVersionUID = 6174277563400848906L; + +	public InvalidPropertyTypeException(ProfileProperty property, PropertyValidator validator) { +		super(String.format("Cannot add validator: %s to Property: %s (incompatible)",  +				validator.getClass().getName(), property.getClass().getName())); +	} +} diff --git a/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/InvalidPropertyValueException.java b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/InvalidPropertyValueException.java new file mode 100644 index 00000000..3b3d96e9 --- /dev/null +++ b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/InvalidPropertyValueException.java @@ -0,0 +1,16 @@ +package at.asit.pdfover.pdfsignator; + +import at.asit.pdfover.pdfsignator.profileproperties.ProfileProperty; + + +public class InvalidPropertyValueException extends Exception { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = -3823266882732616374L; + +	public InvalidPropertyValueException(ProfileProperty property, String message) { +		super(String.format("Invalid value for: %s: %s", property.GetKey(), message)); +	} +} diff --git a/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/PDFSignator.java b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/PDFSignator.java new file mode 100644 index 00000000..1801e608 --- /dev/null +++ b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/PDFSignator.java @@ -0,0 +1,77 @@ +package at.asit.pdfover.pdfsignator; + +import java.util.HashMap; + +/** + * PDF Signator base Class + * This class should be extended to support PDF-AS and PADES. + */ +public abstract class PDFSignator { +	 +	/** +	 * Map to store profiles +	 */ +	protected HashMap<String, SignatureProfile> profiles = new HashMap<String, SignatureProfile>(); +	 +	/** +	 * Perfom signature creation +	 * @param parameter The signature parameters +	 * @return The signing result +	 */ +	public abstract SignResult Sign(SignParameter parameter); +	 +	/** +	 * Creates new signing profile +	 * @param base The profile id of the base profile +	 * @param profileID The id of the new profile +	 * @return The new Profile +	 */ +	public abstract SignatureProfile CreateNewProfile(String base, String profileID); +	 +	/** +	 * Creates new signing profile +	 * @param base The base profile +	 * @param profileID The id of the new profile +	 * @return The new Profile +	 */ +	public abstract SignatureProfile CreateNewProfile(SignatureProfile base, String profileID); +	 +	/** +	 * Creates new signing profile +	 * @param profileID The id of the new profile +	 * @return The new Profile +	 */ +	public abstract SignatureProfile CreateNewProfile(String profileID); +	 +	/** +	 * Returns Profile object for given profile id +	 * @param profileID The profile id +	 * @return The requested Profile +	 */ +	public SignatureProfile GetProfile(String profileID) { +		if(this.profiles.containsKey(profileID)) { +			// TODO: Think about handing out a copy of the profile to keep default values ... +			return this.profiles.get(profileID); +		} +		 +		// TODO: throw Exception +		return null; +	} +	 +	/** +	 * Get all available profiles +	 * @return Array containing all knwon profiles +	 */ +	public SignatureProfile[] GetAvailableProfiles() { +		// TODO: Think about handing out a copy of the profile to keep default values ... +		return this.profiles.values().toArray(new SignatureProfile[0]); +	} +	 +	/** +	 * Gets all available profile ids +	 * @return Array containing all known profile ids +	 */ +	public String[] GetAvailableProfileIDs() { +		return this.profiles.keySet().toArray(new String[0]); +	} +} diff --git a/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignParameter.java b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignParameter.java new file mode 100644 index 00000000..3f0f2b6f --- /dev/null +++ b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignParameter.java @@ -0,0 +1,118 @@ +package at.asit.pdfover.pdfsignator; + +/** + * The Signature Parameter + */ +public class SignParameter { +	 +	/**  +	 * The Signature Position +	 * @uml.property name="signaturePosition" +	 * @uml.associationEnd multiplicity="(1 1)" aggregation="shared" inverse="signParameter:at.asit.pdfover.pdfsignator.SignaturePosition" +	 */ +	protected SignaturePosition signaturePosition = null; +	 +	/**  +	 * Getter of the property <tt>signaturePosition</tt> +	 * @return  Returns the signaturePosition. +	 */ +	public SignaturePosition GetSignaturePosition() { +		return signaturePosition; +	} +	 +	/**  +	 * Setter of the property <tt>signaturePosition</tt> +	 * @param signaturePosition  The signaturePosition to set. +	 */ +	public void SetSignaturePosition(SignaturePosition signaturePosition) { +		this.signaturePosition = signaturePosition; +	} +	 +	/** +	 * The Signature Profile +	 * @uml.property  name="signatureProfile" +	 * @uml.associationEnd  multiplicity="(1 1)" aggregation="shared" inverse="signParameter:at.asit.pdfover.pdfsignator.SignatureProfile" +	 */ +	protected SignatureProfile signatureProfile = null; +	 +	/** +	 * Getter of the property <tt>signatureProfile</tt> +	 * @return  Returns the signatureProfile. +	 */ +	public SignatureProfile GetSignatureProfile() { +		return signatureProfile; +	} +	 +	/** +	 * Setter of the property <tt>signatureProfile</tt> +	 * @param signatureProfile  The signatureProfile to set. +	 */ +	public void SetSignatureProfile(SignatureProfile signatureProfile) { +		this.signatureProfile = signatureProfile; +	} +	 +	/** +	 * The signature Device +	 */ +	protected String signatureDevice = null; +	 +	/** +	 * Getter of the property <tt>signatureDevice</tt> +	 * @return  Returns the signatureDevice. +	 */ +	public String GetSignatureDevice() { +		return signatureDevice; +	} +	 +	/** +	 * Setter of the property <tt>signatureDevice</tt> +	 * @param value  The signatureDevice to set. +	 */ +	public void SetSignatureDevice(String value) { +		this.signatureDevice = value; +	} +	 +	/** +	 * The signature Device +	 */ +	protected String KeyIdentifier = null; +	 +	/** +	 * Getter of the property <tt>KeyIdentifier</tt> +	 * @return  Returns the KeyIdentifier. +	 */ +	public String GetKeyIdentifier() { +		return KeyIdentifier; +	} +	 +	/** +	 * Setter of the property <tt>KeyIdentifier</tt> +	 * @param value  The KeyIdentifier to set. +	 */ +	public void SetKeyIdentifier(String value) { +		this.KeyIdentifier = value; +	} +	 +	/** +	 * The signature Device +	 *  +	 * @uml.associationEnd  multiplicity="(1 1)" aggregation="shared" inverse="signParameter:at.asit.pdfover.pdfsignator.DocumentSource" +	 */ +	protected DocumentSource documentSource = null; +	 +	/** +	 * Getter of the property <tt>documentSource</tt> +	 * @return  Returns the documentSource. +	 */ +	public DocumentSource GetDocumentSource() { +		return documentSource; +	} +	 +	/** +	 * Setter of the property <tt>documentSource</tt> +	 * @param value  The documentSource to set. +	 */ +	public void SetDocumentSource(DocumentSource value) { +		this.documentSource = value; +	} +} diff --git a/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignResult.java b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignResult.java new file mode 100644 index 00000000..56d98952 --- /dev/null +++ b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignResult.java @@ -0,0 +1,71 @@ +package at.asit.pdfover.pdfsignator; + +import javax.security.cert.Certificate; + +public class SignResult { + +	/**  +	 * The position of the signatur +	 * @uml.associationEnd multiplicity="(1 1)" aggregation="composite" inverse="signResult:at.asit.pdfover.pdfsignator.SignaturePosition" +	 */ +	protected SignaturePosition signaturePosition = null; + +	/**  +	 * Getter of the property <tt>signaturePosition</tt> +	 * @return  Returns the signaturePosition. +	 */ +	public SignaturePosition GetSignaturePosition() { +		return signaturePosition; +	} + +	/**  +	 * Setter of the property <tt>signaturePosition</tt> +	 * @param signaturePosition  The signaturePosition to set. +	 */ +	public void SetSignaturePosition(SignaturePosition signaturePosition) { +		this.signaturePosition = signaturePosition; +	} + +	/** +	 * The signed Document +	 * @uml.associationEnd  multiplicity="(1 1)" aggregation="shared" inverse="signResult:at.asit.pdfover.pdfsignator.DocumentSource" +	 */ +	protected DocumentSource documentSource = null; + +	/** +	 * Gets the signed Document +	 * @return  Returns the documentSource. +	 */ +	public DocumentSource GetDocumentSource() { +		return documentSource; +	} + +	/** +	 * Setter of the property <tt>documentSource</tt> +	 * @param documentSource  The documentSource to set. +	 */ +	public void SetDocumentSource(DocumentSource documentSource) { +		this.documentSource = documentSource; +	} +	 +	/** +	 * The signer certificate +	 */ +	protected Certificate signerCertificate; +	 +	/** +	 * Sets the signer certificate +	 * @param cert The signer certificate +	 */ +	public void SetSignerCertificate(Certificate cert) { +		this.signerCertificate = cert; +	} +	 +	/** +	 * Gets the signer certificate +	 * @return The signer x509 certificate +	 */ +	public Certificate SetSignerCertificate() { +		return this.signerCertificate; +	} +} diff --git a/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignatureDimension.java b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignatureDimension.java new file mode 100644 index 00000000..133f4f74 --- /dev/null +++ b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignatureDimension.java @@ -0,0 +1,59 @@ +package at.asit.pdfover.pdfsignator; + +/** + * The Dimensions of the visible signature block + */ +public class SignatureDimension { + +	/** +	 * The visible Signature block width +	 */ +	protected int width; + +	/** +	 * The visible Signature block height +	 */ +	protected int height; + +	/** +	 * Sets the width for the dimension +	 * @param value +	 */ +	public void SetWidth(int value) { +		this.width = value; +	} + +	/** +	 * Constructor +	 * @param width The width of the signature block +	 * @param height The height of the signature block +	 */ +	public SignatureDimension(int width, int height) { +		this.width = width; +		this.height = height; +	} +	 +	/** +	 * Gets the width of the visible Signature block +	 * @return +	 */ +	public int GetWidth() { +		return this.width; +	} +	 +	/** +	 * Sets the height for the dimension +	 * @param value +	 */ +	public void SetHeight(int value) { +		this.height = value; +	} + +	/** +	 * Gets the height of the visible Signature block +	 * @return +	 */ +	public int GetHeight() { +		return this.height; +	} +} diff --git a/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignaturePosition.java b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignaturePosition.java new file mode 100644 index 00000000..48b320b3 --- /dev/null +++ b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignaturePosition.java @@ -0,0 +1,100 @@ +package at.asit.pdfover.pdfsignator; + + +/** + * Represents the position of a visible signature block + * @author afitzek + */ +public class SignaturePosition { +	/** +	 * The x value of the position +	 */ +	protected int x = 0; +	 +	/** +	 * The y value of the position +	 */ +	protected int y = 0; +	 +	/** +	 * The page value of the position +	 */ +	protected int page = 1; +	 +	/** +	 * Default constructor +	 */ +	public SignaturePosition() { +	} +	 +	/** +	 * X - Y Constructor Page = 1 +	 * @param x The x value of the position +	 * @param y The y value of the position +	 */ +	public SignaturePosition(int x, int y) { +		this.x = x; +		this.y = y; +	} +	 +	/** +	 * Constructor +	 * @param x The x value of the position +	 * @param y The y value of the position +	 * @param page The page value of the position +	 */ +	public SignaturePosition(int x, int y, int page) { +		this.x = x; +		this.y = y; +		this.page = page; +	} +	 +	/** +	 * Sets X value of position +	 * @param value the new x value +	 */ +	public void SetX(int value) { +		this.x = value; +	} +	 +	/** +	 * Gets the X value of the position +	 * @return int the x value of the position +	 */ +	public int GetX() { +		return this.x; +	} +	 +	/** +	 * Sets Y value of position +	 * @param value the new y value +	 */ +	public void SetY(int value) { +		this.y = value; +	} +	 +	/** +	 * Gets the Y value of the position +	 * @return int the y value of the position +	 */ +	public int GetY() { +		return this.y; +	} +	 +	/** +	 * Sets Page value of position +	 * @param value the new page value +	 */ +	public void SetPage(int value) { +		this.page = value; +	} +	 +	/** +	 * Gets the Page value of the position +	 * @return int the page value of the position +	 */ +	public int GetPage() { +		return this.page; +	} + +} diff --git a/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignatureProfile.java b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignatureProfile.java new file mode 100644 index 00000000..84c1023d --- /dev/null +++ b/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/SignatureProfile.java @@ -0,0 +1,81 @@ +package at.asit.pdfover.pdfsignator; + +import java.util.ArrayList; +import java.util.List; + +import at.asit.pdfover.pdfsignator.profileproperties.ProfileProperty; + +/** + * Represents a Signature profile + * @author afitzek + */ +public abstract class SignatureProfile { + +	/**  +	 * The profile ID +	 */ +	protected String profileID; + +	/** +	 * The Profile properties +	 * @uml.property  name="profileProperty" +	 * @uml.associationEnd  multiplicity="(0 -1)" ordering="true" aggregation="shared" inverse="signatureProfile:at.asit.pdfover.pdfsignator.profileproperties.ProfileProperty" +	 * +	 */ +	protected List<ProfileProperty> properties = new ArrayList<ProfileProperty>(); +	 +	/** +	 * Gets the profile ID +	 * @return  Returns the profileID. +	 */ +	public String GetProfileID() { +		return profileID; +	} + +	/** +	 * Adds a property to this profile +	 * @param property +	 */ +	public void AddProperty(ProfileProperty property) { +		 +		ProfileProperty replace = this.GetProperty(property.GetKey()); +		 +		if(replace != null) +		{ +			this.properties.remove(replace); +			replace = null; +		} +		 +		this.properties.add(property); +	} +	 +	/** +	 * Gets a property by its key +	 * @param key The property key +	 * @return The ProfileProperty or null if not available +	 */ +	public ProfileProperty GetProperty(String key) { +		ProfileProperty find = null; +		for(ProfileProperty available : this.properties) { +			find = available; +			if(find.GetKey().equals(key)) { +				return find; +			} +		} +		return null; +	} +	 +	/** +	 * Gets the Signature Dimension +	 * @return +	 */ +	public abstract SignatureDimension GetSignatureDimension(); +	 +	/** +	 * Gets available Properties for this Profile  +	 * @return +	 */ +	public ProfileProperty[] GetAvailableProperties() { +		return this.properties.toArray(new ProfileProperty[0]); +	} +} diff --git a/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/DateProfileProperty.java b/trunk/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/trunk/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/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/FileProfileProperty.java b/trunk/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/trunk/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/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/FloatProfileProperty.java b/trunk/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/trunk/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/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/IntegerProfileProperty.java b/trunk/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/trunk/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/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/ProfileProperty.java b/trunk/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/trunk/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/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/StringProfileProperty.java b/trunk/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/trunk/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/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/FloatRangeValidator.java b/trunk/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/trunk/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/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/IntegerRangeValidator.java b/trunk/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/trunk/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/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/PropertyValidator.java b/trunk/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/trunk/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/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/PropertyValidatorComparer.java b/trunk/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/trunk/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/trunk/pdf-over/pdf-signer-interface/src/main/java/at/asit/pdfover/pdfsignator/profileproperties/validators/RegExValidator.java b/trunk/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/trunk/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 +	} +} diff --git a/trunk/pdf-over/pdf-signer-interface/src/model/at.asit.pdfover.pdfsignator.ucd b/trunk/pdf-over/pdf-signer-interface/src/model/at.asit.pdfover.pdfsignator.ucd new file mode 100644 index 00000000..49f5a6c7 --- /dev/null +++ b/trunk/pdf-over/pdf-signer-interface/src/model/at.asit.pdfover.pdfsignator.ucd @@ -0,0 +1,301 @@ +<?xml version="1.0" encoding="UTF-8"?> +<editmodel:ClassDiagramEditModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:editmodel="editmodel.xmi" xmlns:options="options.xmi" size="2193,949" id="at.asit.pdfover.pdfsignator" metadata="uml2-1.0" initialized="true" zoom="0.6744639376218323" scrolledY="-44" tag="1000" key="32303037303533312D31303030205044465369676E61746F72205363686E6974747374656C6C652F616E6479"> +  <children xsi:type="editmodel:ClassEditModel" name="SignaturePosition" location="535,329" size="317,266" id="at.asit.pdfover.pdfsignator/SignaturePosition" runTimeClassModel="GetPage(),SignaturePosition(),GetX(),SignaturePosition(III),SetPage(I),page,SetX(I),SignaturePosition(II),y,SetY(I),GetY(),x"> +    <children xsi:type="editmodel:CompartmentEditModel" size="69,54"> +      <children xsi:type="editmodel:AttributeEditModel" name="page" id="at.asit.pdfover.pdfsignator/SignaturePosition#page"/> +      <children xsi:type="editmodel:AttributeEditModel" name="x" id="at.asit.pdfover.pdfsignator/SignaturePosition#x"/> +      <children xsi:type="editmodel:AttributeEditModel" name="y" id="at.asit.pdfover.pdfsignator/SignaturePosition#y"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="294,162"> +      <children xsi:type="editmodel:MethodEditModel" name="GetPage" id="at.asit.pdfover.pdfsignator/SignaturePosition#GetPage()"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetX" id="at.asit.pdfover.pdfsignator/SignaturePosition#GetX()"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetY" id="at.asit.pdfover.pdfsignator/SignaturePosition#GetY()"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetPage" id="at.asit.pdfover.pdfsignator/SignaturePosition#SetPage(I)"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetX" id="at.asit.pdfover.pdfsignator/SignaturePosition#SetX(I)"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetY" id="at.asit.pdfover.pdfsignator/SignaturePosition#SetY(I)"/> +      <children xsi:type="editmodel:MethodEditModel" name="SignaturePosition" id="at.asit.pdfover.pdfsignator/SignaturePosition#SignaturePosition(II)"/> +      <children xsi:type="editmodel:MethodEditModel" name="SignaturePosition" id="at.asit.pdfover.pdfsignator/SignaturePosition#SignaturePosition(III)"/> +      <children xsi:type="editmodel:MethodEditModel" name="SignaturePosition" id="at.asit.pdfover.pdfsignator/SignaturePosition#SignaturePosition()"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:AssociationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator/SignaturePosition@signaturePosition+at.asit.pdfover.pdfsignator/SignParameter@signParameter" source="//@children.0" target="//@children.4" targetEnd="//@children.0/@sourceConnections.0/@children.1" label="//@children.0/@sourceConnections.0/@children.2" sourceEnd="//@children.0/@sourceConnections.0/@children.0" connectionRouterKind="Manhattan"> +      <children xsi:type="editmodel:AssociationEndEditModel" name="signaturePosition" location="317,14" id="at.asit.pdfover.pdfsignator/SignaturePosition@signaturePosition+at.asit.pdfover.pdfsignator/SignParameter@signParameter|at.asit.pdfover.pdfsignator/SignaturePosition#signaturePosition" attachSource="true" multiplicityLabel="//@children.0/@sourceConnections.0/@children.0/@children.1" roleLabel="//@children.0/@sourceConnections.0/@children.0/@children.0" aggregationKind="Aggregration" navigable="true"> +        <children xsi:type="editmodel:LabelEditModel" name=" # signaturePosition" location="858,322" size="116,13" anchorKind="FirstPart"/> +        <children xsi:type="editmodel:LabelEditModel" name="1" location="858,349" size="7,13" anchorKind="FirstPart"/> +      </children> +      <children xsi:type="editmodel:AssociationEndEditModel" name="signParameter" location="0,268" id="at.asit.pdfover.pdfsignator/SignaturePosition@signaturePosition+at.asit.pdfover.pdfsignator/SignParameter@signParameter|at.asit.pdfover.pdfsignator/SignParameter#signParameter"/> +      <children xsi:type="editmodel:WireLabelEditModel" size="0,13" anchorKind="MiddlePart"/> +    </sourceConnections> +    <sourceConnections xsi:type="editmodel:AssociationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator/SignaturePosition@signaturePosition+at.asit.pdfover.pdfsignator/SignResult@signResult" source="//@children.0" target="//@children.12" targetEnd="//@children.0/@sourceConnections.1/@children.1" label="//@children.0/@sourceConnections.1/@children.2" sourceEnd="//@children.0/@sourceConnections.1/@children.0" connectionRouterKind="Manhattan"> +      <children xsi:type="editmodel:AssociationEndEditModel" name="signaturePosition" location="0,12" id="at.asit.pdfover.pdfsignator/SignaturePosition@signaturePosition+at.asit.pdfover.pdfsignator/SignResult@signResult|at.asit.pdfover.pdfsignator/SignaturePosition#signaturePosition" attachSource="true" multiplicityLabel="//@children.0/@sourceConnections.1/@children.0/@children.1" roleLabel="//@children.0/@sourceConnections.1/@children.0/@children.0" aggregationKind="Composition" navigable="true"> +        <children xsi:type="editmodel:LabelEditModel" name=" # signaturePosition" location="410,319" size="116,13" anchorKind="FirstPart"/> +        <children xsi:type="editmodel:LabelEditModel" name="1" location="519,346" size="7,13" anchorKind="FirstPart"/> +      </children> +      <children xsi:type="editmodel:AssociationEndEditModel" name="signResult" location="394,162" id="at.asit.pdfover.pdfsignator/SignaturePosition@signaturePosition+at.asit.pdfover.pdfsignator/SignResult@signResult|at.asit.pdfover.pdfsignator/SignResult#signResult"/> +      <children xsi:type="editmodel:WireLabelEditModel" size="0,13" anchorKind="MiddlePart"/> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" name="SignatureProfile" location="1034,412" size="312,176" id="at.asit.pdfover.pdfsignator/SignatureProfile" runTimeClassModel="GetProperty(Ljava.lang.String;),profileID,GetAvailableProperties(),profileProperty,GetProfileID(),AddProperty(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;),GetSignatureDimension()"> +    <children xsi:type="editmodel:CompartmentEditModel" size="227,36"> +      <children xsi:type="editmodel:AttributeEditModel" name="profileID" id="at.asit.pdfover.pdfsignator/SignatureProfile#profileID"/> +      <children xsi:type="editmodel:AttributeEditModel" name="profileProperty" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty@profileProperty+at.asit.pdfover.pdfsignator/SignatureProfile@signatureProfile|at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#profileProperty"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="289,90"> +      <children xsi:type="editmodel:MethodEditModel" name="AddProperty" id="at.asit.pdfover.pdfsignator/SignatureProfile#AddProperty(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetAvailableProperties" id="at.asit.pdfover.pdfsignator/SignatureProfile#GetAvailableProperties()"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetProfileID" id="at.asit.pdfover.pdfsignator/SignatureProfile#GetProfileID()"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetProperty" id="at.asit.pdfover.pdfsignator/SignatureProfile#GetProperty(Ljava.lang.String;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetSignatureDimension" id="at.asit.pdfover.pdfsignator/SignatureProfile#GetSignatureDimension()"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:AssociationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator/SignatureProfile@signatureProfile+at.asit.pdfover.pdfsignator/SignParameter@signParameter" source="//@children.1" target="//@children.4" targetEnd="//@children.1/@sourceConnections.0/@children.1" label="//@children.1/@sourceConnections.0/@children.2" sourceEnd="//@children.1/@sourceConnections.0/@children.0" connectionRouterKind="Manhattan"> +      <children xsi:type="editmodel:AssociationEndEditModel" name="signatureProfile" location="156,0" id="at.asit.pdfover.pdfsignator/SignatureProfile@signatureProfile+at.asit.pdfover.pdfsignator/SignParameter@signParameter|at.asit.pdfover.pdfsignator/SignatureProfile#signatureProfile" attachSource="true" multiplicityLabel="//@children.1/@sourceConnections.0/@children.0/@children.1" roleLabel="//@children.1/@sourceConnections.0/@children.0/@children.0" aggregationKind="Aggregration" navigable="true"> +        <children xsi:type="editmodel:LabelEditModel" name=" # signatureProfile" location="1196,390" size="107,13" anchorKind="FirstPart"/> +        <children xsi:type="editmodel:LabelEditModel" name="1" location="1175,390" size="7,13" anchorKind="FirstPart"/> +      </children> +      <children xsi:type="editmodel:AssociationEndEditModel" name="signParameter" location="155,284" id="at.asit.pdfover.pdfsignator/SignatureProfile@signatureProfile+at.asit.pdfover.pdfsignator/SignParameter@signParameter|at.asit.pdfover.pdfsignator/SignParameter#signParameter"/> +      <children xsi:type="editmodel:WireLabelEditModel" size="0,13" anchorKind="MiddlePart"/> +    </sourceConnections> +    <sourceConnections xsi:type="editmodel:AssociationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty@profileProperty+at.asit.pdfover.pdfsignator/SignatureProfile@signatureProfile" source="//@children.1" target="//@children.2" targetEnd="//@children.1/@sourceConnections.1/@children.2" label="//@children.1/@sourceConnections.1/@children.0" sourceEnd="//@children.1/@sourceConnections.1/@children.1" connectionRouterKind="Manhattan"> +      <children xsi:type="editmodel:WireLabelEditModel" size="0,13" anchorKind="MiddlePart"/> +      <children xsi:type="editmodel:AssociationEndEditModel" name="signatureProfile" location="312,33" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty@profileProperty+at.asit.pdfover.pdfsignator/SignatureProfile@signatureProfile|at.asit.pdfover.pdfsignator/SignatureProfile#signatureProfile" attachSource="true"/> +      <children xsi:type="editmodel:AssociationEndEditModel" name="profileProperty" location="0,191" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty@profileProperty+at.asit.pdfover.pdfsignator/SignatureProfile@signatureProfile|at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#profileProperty" multiplicityLabel="//@children.1/@sourceConnections.1/@children.2/@children.1" roleLabel="//@children.1/@sourceConnections.1/@children.2/@children.0" aggregationKind="Aggregration" navigable="true" orderingKind="1"> +        <children xsi:type="editmodel:LabelEditModel" name=" # profileProperty" location="1405,424" size="101,13" anchorKind="LastPart"/> +        <children xsi:type="editmodel:LabelEditModel" name="*" location="1500,451" size="6,13" anchorKind="LastPart"/> +      </children> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" targetConnections="//@children.1/@sourceConnections.1 //@children.3/@sourceConnections.0 //@children.5/@sourceConnections.0 //@children.6/@sourceConnections.0 //@children.7/@sourceConnections.0 //@children.8/@sourceConnections.0" name="ProfileProperty" location="1514,254" size="292,225" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty" runTimeClassModel="propertyValidator,Validate(),GetKey(),SetTextValue(Ljava.lang.String;),GetTextValue(),SetKey(Ljava.lang.String;),optional,SetOptional(Z),GetOptional(),AddValidator(Lat.asit.pdfover.pdfsignator.profileproperties.validators.PropertyValidator;)"> +    <children xsi:type="editmodel:CompartmentEditModel" size="117,18"> +      <children xsi:type="editmodel:AttributeEditModel" name="optional" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#optional"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="269,144"> +      <children xsi:type="editmodel:MethodEditModel" name="AddValidator" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#AddValidator(Lat.asit.pdfover.pdfsignator.profileproperties.validators.PropertyValidator;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetKey" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#GetKey()"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetOptional" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#GetOptional()"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetTextValue" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#GetTextValue()"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetKey" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#SetKey(Ljava.lang.String;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetOptional" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#SetOptional(Z)"/> +      <children xsi:type="editmodel:MethodEditModel" name="Validate" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#Validate()"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetTextValue" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#SetTextValue(Ljava.lang.String;)"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" targetConnections="//@children.9/@sourceConnections.0 //@children.10/@sourceConnections.0 //@children.11/@sourceConnections.0" name="PropertyValidator" location="2009,239" size="314,153" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator" runTimeClassModel="priority,GetPriority(),SetPriority(I),validate(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;),CheckPropertyType(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"> +    <children xsi:type="editmodel:CompartmentEditModel" size="80,18"> +      <children xsi:type="editmodel:AttributeEditModel" name="priority" location="-3,46" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator#priority"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="291,72"> +      <children xsi:type="editmodel:MethodEditModel" name="GetPriority" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator#GetPriority()"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetPriority" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator#SetPriority(I)"/> +      <children xsi:type="editmodel:MethodEditModel" name="validate" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator#validate(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="CheckPropertyType" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator#CheckPropertyType(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:AssociationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator@propertyValidator+at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty@profileProperty" source="//@children.3" target="//@children.2" targetEnd="//@children.3/@sourceConnections.0/@children.1" label="//@children.3/@sourceConnections.0/@children.2" sourceEnd="//@children.3/@sourceConnections.0/@children.0" connectionRouterKind="Manhattan"> +      <children xsi:type="editmodel:AssociationEndEditModel" name="propertyValidator" location="0,83" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator@propertyValidator+at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty@profileProperty|at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator#propertyValidator" attachSource="true" multiplicityLabel="//@children.3/@sourceConnections.0/@children.0/@children.1" roleLabel="//@children.3/@sourceConnections.0/@children.0/@children.0" aggregationKind="Aggregration" navigable="true" orderingKind="1"> +        <children xsi:type="editmodel:LabelEditModel" name=" # propertyValidator" location="1886,301" size="114,13" anchorKind="FirstPart"/> +        <children xsi:type="editmodel:LabelEditModel" name="*" location="1994,328" size="6,13" anchorKind="FirstPart"/> +      </children> +      <children xsi:type="editmodel:AssociationEndEditModel" name="profileProperty" location="292,68" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator@propertyValidator+at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty@profileProperty|at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty#profileProperty"/> +      <children xsi:type="editmodel:WireLabelEditModel" size="0,13" anchorKind="MiddlePart"/> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" targetConnections="//@children.0/@sourceConnections.0 //@children.1/@sourceConnections.0" name="SignParameter" location="1035,75" size="394,284" id="at.asit.pdfover.pdfsignator/SignParameter" runTimeClassModel="SetKeyIdentifier(Ljava.lang.String;),documentSource,keyIdentifier,SetSignatureProfile(Lat.asit.pdfover.pdfsignator.SignatureProfile;),signatureProfile,SetDocumentSource(Lat.asit.pdfover.pdfsignator.DocumentSource;),GetSignatureDevice(),GetKeyIdentifier(),GetSignaturePosition(),SetSignaturePosition(Lat.asit.pdfover.pdfsignator.SignaturePosition;),SetSignatureDevice(Ljava.lang.String;),signatureDevice,signaturePosition,GetDocumentSource(),GetSignatureProfile()"> +    <children xsi:type="editmodel:CompartmentEditModel" size="220,54"> +      <children xsi:type="editmodel:AttributeEditModel" name="documentSource" id="at.asit.pdfover.pdfsignator/DocumentSource@documentSource+at.asit.pdfover.pdfsignator/SignParameter@signParameter|at.asit.pdfover.pdfsignator/DocumentSource#documentSource"/> +      <children xsi:type="editmodel:AttributeEditModel" name="keyIdentifier" id="at.asit.pdfover.pdfsignator/SignParameter#keyIdentifier"/> +      <children xsi:type="editmodel:AttributeEditModel" name="signatureDevice" id="at.asit.pdfover.pdfsignator/SignParameter#signatureDevice"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="371,180"> +      <children xsi:type="editmodel:MethodEditModel" name="SetSignaturePosition" id="at.asit.pdfover.pdfsignator/SignParameter#SetSignaturePosition(Lat.asit.pdfover.pdfsignator.SignaturePosition;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetDocumentSource" id="at.asit.pdfover.pdfsignator/SignParameter#SetDocumentSource(Lat.asit.pdfover.pdfsignator.DocumentSource;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetSignatureProfile" id="at.asit.pdfover.pdfsignator/SignParameter#SetSignatureProfile(Lat.asit.pdfover.pdfsignator.SignatureProfile;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetSignaturePosition" id="at.asit.pdfover.pdfsignator/SignParameter#GetSignaturePosition()"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetKeyIdentifier" id="at.asit.pdfover.pdfsignator/SignParameter#SetKeyIdentifier(Ljava.lang.String;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetSignatureDevice" id="at.asit.pdfover.pdfsignator/SignParameter#SetSignatureDevice(Ljava.lang.String;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetDocumentSource" id="at.asit.pdfover.pdfsignator/SignParameter#GetDocumentSource()"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetSignatureProfile" id="at.asit.pdfover.pdfsignator/SignParameter#GetSignatureProfile()"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetKeyIdentifier" id="at.asit.pdfover.pdfsignator/SignParameter#GetKeyIdentifier()"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetSignatureDevice" id="at.asit.pdfover.pdfsignator/SignParameter#GetSignatureDevice()"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:AssociationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator/DocumentSource@documentSource+at.asit.pdfover.pdfsignator/SignParameter@signParameter" source="//@children.4" target="//@children.13" targetEnd="//@children.4/@sourceConnections.0/@children.2" label="//@children.4/@sourceConnections.0/@children.0" sourceEnd="//@children.4/@sourceConnections.0/@children.1" connectionRouterKind="Manhattan"> +      <children xsi:type="editmodel:WireLabelEditModel" size="0,13" anchorKind="MiddlePart"/> +      <children xsi:type="editmodel:AssociationEndEditModel" name="signParameter" location="0,119" id="at.asit.pdfover.pdfsignator/DocumentSource@documentSource+at.asit.pdfover.pdfsignator/SignParameter@signParameter|at.asit.pdfover.pdfsignator/SignParameter#signParameter" attachSource="true"/> +      <children xsi:type="editmodel:AssociationEndEditModel" name="documentSource" location="167,14" id="at.asit.pdfover.pdfsignator/DocumentSource@documentSource+at.asit.pdfover.pdfsignator/SignParameter@signParameter|at.asit.pdfover.pdfsignator/DocumentSource#documentSource" multiplicityLabel="//@children.4/@sourceConnections.0/@children.2/@children.1" roleLabel="//@children.4/@sourceConnections.0/@children.2/@children.0" aggregationKind="Aggregration" navigable="true"> +        <children xsi:type="editmodel:LabelEditModel" name=" # documentSource" location="803,172" size="113,13" anchorKind="LastPart"/> +        <children xsi:type="editmodel:LabelEditModel" name="1" location="803,199" size="7,13" anchorKind="LastPart"/> +      </children> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" name="DateProfileProperty" location="1680,793" size="188,117" id="at.asit.pdfover.pdfsignator.profileproperties/DateProfileProperty" runTimeClassModel="dvalue,SetValue(Ljava.util.Date;),GetValue()"> +    <children xsi:type="editmodel:CompartmentEditModel" size="90,18"> +      <children xsi:type="editmodel:AttributeEditModel" name="dvalue" id="at.asit.pdfover.pdfsignator.profileproperties/DateProfileProperty#dvalue"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="158,36"> +      <children xsi:type="editmodel:MethodEditModel" name="GetValue" id="at.asit.pdfover.pdfsignator.profileproperties/DateProfileProperty#GetValue()"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetValue" id="at.asit.pdfover.pdfsignator.profileproperties/DateProfileProperty#SetValue(Ljava.util.Date;)"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:GeneralizationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty<-at.asit.pdfover.pdfsignator.profileproperties/DateProfileProperty" source="//@children.5" target="//@children.2" targetEnd="//@children.5/@sourceConnections.0/@children.1" sourceEnd="//@children.5/@sourceConnections.0/@children.0" connectionRouterKind="Manual"> +      <children xsi:type="editmodel:AssociationEndEditModel" location="62,0" attachSource="true"/> +      <children xsi:type="editmodel:AssociationEndEditModel" location="228,225"/> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" name="FileProfileProperty" location="1215,601" size="179,117" id="at.asit.pdfover.pdfsignator.profileproperties/FileProfileProperty" runTimeClassModel="SetValue(Ljava.io.File;),GetValue(),fvalue"> +    <children xsi:type="editmodel:CompartmentEditModel" size="79,18"> +      <children xsi:type="editmodel:AttributeEditModel" name="fvalue" id="at.asit.pdfover.pdfsignator.profileproperties/FileProfileProperty#fvalue"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="150,36"> +      <children xsi:type="editmodel:MethodEditModel" name="GetValue" id="at.asit.pdfover.pdfsignator.profileproperties/FileProfileProperty#GetValue()"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetValue" id="at.asit.pdfover.pdfsignator.profileproperties/FileProfileProperty#SetValue(Ljava.io.File;)"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:GeneralizationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty<-at.asit.pdfover.pdfsignator.profileproperties/FileProfileProperty" source="//@children.6" target="//@children.2" targetEnd="//@children.6/@sourceConnections.0/@children.1" sourceEnd="//@children.6/@sourceConnections.0/@children.0" connectionRouterKind="Manual"> +      <children xsi:type="editmodel:AssociationEndEditModel" location="159,0" attachSource="true"/> +      <children xsi:type="editmodel:AssociationEndEditModel" location="9,225"/> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" name="FloatProfileProperty" location="1469,793" size="190,117" id="at.asit.pdfover.pdfsignator.profileproperties/FloatProfileProperty" runTimeClassModel="SetValue(F),GetValue(),fvalue"> +    <children xsi:type="editmodel:CompartmentEditModel" size="88,18"> +      <children xsi:type="editmodel:AttributeEditModel" name="fvalue" id="at.asit.pdfover.pdfsignator.profileproperties/FloatProfileProperty#fvalue"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="157,36"> +      <children xsi:type="editmodel:MethodEditModel" name="GetValue" id="at.asit.pdfover.pdfsignator.profileproperties/FloatProfileProperty#GetValue()"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetValue" id="at.asit.pdfover.pdfsignator.profileproperties/FloatProfileProperty#SetValue(F)"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:GeneralizationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty<-at.asit.pdfover.pdfsignator.profileproperties/FloatProfileProperty" source="//@children.7" target="//@children.2" targetEnd="//@children.7/@sourceConnections.0/@children.1" sourceEnd="//@children.7/@sourceConnections.0/@children.0" connectionRouterKind="Manual"> +      <children xsi:type="editmodel:AssociationEndEditModel" location="117,0" attachSource="true"/> +      <children xsi:type="editmodel:AssociationEndEditModel" location="72,225"/> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" name="IntegerProfileProperty" location="1215,793" size="206,117" id="at.asit.pdfover.pdfsignator.profileproperties/IntegerProfileProperty" runTimeClassModel="ivalue,SetValue(I),GetValue()"> +    <children xsi:type="editmodel:CompartmentEditModel" size="100,18"> +      <children xsi:type="editmodel:AttributeEditModel" name="ivalue" id="at.asit.pdfover.pdfsignator.profileproperties/IntegerProfileProperty#ivalue"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="146,36"> +      <children xsi:type="editmodel:MethodEditModel" name="GetValue" id="at.asit.pdfover.pdfsignator.profileproperties/IntegerProfileProperty#GetValue()"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetValue" id="at.asit.pdfover.pdfsignator.profileproperties/IntegerProfileProperty#SetValue(I)"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:GeneralizationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator.profileproperties/ProfileProperty<-at.asit.pdfover.pdfsignator.profileproperties/IntegerProfileProperty" source="//@children.8" target="//@children.2" targetEnd="//@children.8/@sourceConnections.0/@children.1" sourceEnd="//@children.8/@sourceConnections.0/@children.0" connectionRouterKind="Manual"> +      <children xsi:type="editmodel:AssociationEndEditModel" location="144,0" attachSource="true"/> +      <children xsi:type="editmodel:AssociationEndEditModel" location="66,225"/> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" name="IntegerRangeValidator" location="2248,629" size="314,153" id="at.asit.pdfover.pdfsignator.profileproperties.validators/IntegerRangeValidator" runTimeClassModel="min,max,IntegerRangeValidator(II),validate(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;),CheckPropertyType(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"> +    <children xsi:type="editmodel:CompartmentEditModel" size="65,36"> +      <children xsi:type="editmodel:AttributeEditModel" name="max" id="at.asit.pdfover.pdfsignator.profileproperties.validators/IntegerRangeValidator#max"/> +      <children xsi:type="editmodel:AttributeEditModel" name="min" id="at.asit.pdfover.pdfsignator.profileproperties.validators/IntegerRangeValidator#min"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="291,54"> +      <children xsi:type="editmodel:MethodEditModel" name="CheckPropertyType" id="at.asit.pdfover.pdfsignator.profileproperties.validators/IntegerRangeValidator#CheckPropertyType(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="IntegerRangeValidator" id="at.asit.pdfover.pdfsignator.profileproperties.validators/IntegerRangeValidator#IntegerRangeValidator(II)"/> +      <children xsi:type="editmodel:MethodEditModel" name="validate" id="at.asit.pdfover.pdfsignator.profileproperties.validators/IntegerRangeValidator#validate(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:GeneralizationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator<-at.asit.pdfover.pdfsignator.profileproperties.validators/IntegerRangeValidator" source="//@children.9" target="//@children.3" targetEnd="//@children.9/@sourceConnections.0/@children.1" sourceEnd="//@children.9/@sourceConnections.0/@children.0" connectionRouterKind="Manual"> +      <children xsi:type="editmodel:AssociationEndEditModel" location="37,0" attachSource="true"/> +      <children xsi:type="editmodel:AssociationEndEditModel" location="276,153"/> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" name="FloatRangeValidator" location="2249,449" size="314,153" id="at.asit.pdfover.pdfsignator.profileproperties.validators/FloatRangeValidator" runTimeClassModel="min,max,validate(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;),FloatRangeValidator(FF),CheckPropertyType(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"> +    <children xsi:type="editmodel:CompartmentEditModel" size="76,36"> +      <children xsi:type="editmodel:AttributeEditModel" name="max" id="at.asit.pdfover.pdfsignator.profileproperties.validators/FloatRangeValidator#max"/> +      <children xsi:type="editmodel:AttributeEditModel" name="min" id="at.asit.pdfover.pdfsignator.profileproperties.validators/FloatRangeValidator#min"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="291,54"> +      <children xsi:type="editmodel:MethodEditModel" name="CheckPropertyType" id="at.asit.pdfover.pdfsignator.profileproperties.validators/FloatRangeValidator#CheckPropertyType(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="FloatRangeValidator" id="at.asit.pdfover.pdfsignator.profileproperties.validators/FloatRangeValidator#FloatRangeValidator(FF)"/> +      <children xsi:type="editmodel:MethodEditModel" name="validate" id="at.asit.pdfover.pdfsignator.profileproperties.validators/FloatRangeValidator#validate(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:GeneralizationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator<-at.asit.pdfover.pdfsignator.profileproperties.validators/FloatRangeValidator" source="//@children.10" target="//@children.3" targetEnd="//@children.10/@sourceConnections.0/@children.1" sourceEnd="//@children.10/@sourceConnections.0/@children.0" connectionRouterKind="Manual"> +      <children xsi:type="editmodel:AssociationEndEditModel" location="36,0" attachSource="true"/> +      <children xsi:type="editmodel:AssociationEndEditModel" location="276,153"/> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" name="RegExValidator" location="2249,810" size="314,135" id="at.asit.pdfover.pdfsignator.profileproperties.validators/RegExValidator" runTimeClassModel="regex,RegExValidator(Ljava.lang.String;),validate(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;),CheckPropertyType(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"> +    <children xsi:type="editmodel:CompartmentEditModel" size="93,18"> +      <children xsi:type="editmodel:AttributeEditModel" name="regex" id="at.asit.pdfover.pdfsignator.profileproperties.validators/RegExValidator#regex"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="291,54"> +      <children xsi:type="editmodel:MethodEditModel" name="CheckPropertyType" id="at.asit.pdfover.pdfsignator.profileproperties.validators/RegExValidator#CheckPropertyType(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="RegExValidator" id="at.asit.pdfover.pdfsignator.profileproperties.validators/RegExValidator#RegExValidator(Ljava.lang.String;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="validate" id="at.asit.pdfover.pdfsignator.profileproperties.validators/RegExValidator#validate(Lat.asit.pdfover.pdfsignator.profileproperties.ProfileProperty;)"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:GeneralizationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator.profileproperties.validators/PropertyValidator<-at.asit.pdfover.pdfsignator.profileproperties.validators/RegExValidator" source="//@children.11" target="//@children.3" targetEnd="//@children.11/@sourceConnections.0/@children.1" sourceEnd="//@children.11/@sourceConnections.0/@children.0" connectionRouterKind="Manual"> +      <children xsi:type="editmodel:AssociationEndEditModel" location="36,0" attachSource="true"/> +      <children xsi:type="editmodel:AssociationEndEditModel" location="276,153"/> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" targetConnections="//@children.0/@sourceConnections.1 //@children.13/@sourceConnections.0" name="SignResult" location="29,179" size="394,176" id="at.asit.pdfover.pdfsignator/SignResult" runTimeClassModel="SetDocumentSource(Lat.asit.pdfover.pdfsignator.DocumentSource;),SetSignerCertificate(Ljavax.security.cert.Certificate;),SetSignerCertificate(),signerCertificate,documentSource,SetSignaturePosition(Lat.asit.pdfover.pdfsignator.SignaturePosition;),GetSignaturePosition(),GetDocumentSource(),signaturePosition"> +    <children xsi:type="editmodel:CompartmentEditModel" size="179,18"> +      <children xsi:type="editmodel:AttributeEditModel" name="signerCertificate" id="at.asit.pdfover.pdfsignator/SignResult#signerCertificate"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="371,108"> +      <children xsi:type="editmodel:MethodEditModel" name="GetDocumentSource" id="at.asit.pdfover.pdfsignator/SignResult#GetDocumentSource()"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetSignaturePosition" id="at.asit.pdfover.pdfsignator/SignResult#GetSignaturePosition()"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetDocumentSource" id="at.asit.pdfover.pdfsignator/SignResult#SetDocumentSource(Lat.asit.pdfover.pdfsignator.DocumentSource;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetSignaturePosition" id="at.asit.pdfover.pdfsignator/SignResult#SetSignaturePosition(Lat.asit.pdfover.pdfsignator.SignaturePosition;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetSignerCertificate" id="at.asit.pdfover.pdfsignator/SignResult#SetSignerCertificate()"/> +      <children xsi:type="editmodel:MethodEditModel" name="SetSignerCertificate" id="at.asit.pdfover.pdfsignator/SignResult#SetSignerCertificate(Ljavax.security.cert.Certificate;)"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" targetConnections="//@children.4/@sourceConnections.0" name="DocumentSource" location="630,180" size="167,30" id="at.asit.pdfover.pdfsignator/DocumentSource" runTimeClassModel=""> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <sourceConnections xsi:type="editmodel:AssociationEditModel" autoLocated="true" id="at.asit.pdfover.pdfsignator/DocumentSource@documentSource+at.asit.pdfover.pdfsignator/SignResult@signResult" source="//@children.13" target="//@children.12" targetEnd="//@children.13/@sourceConnections.0/@children.1" label="//@children.13/@sourceConnections.0/@children.2" sourceEnd="//@children.13/@sourceConnections.0/@children.0" connectionRouterKind="Manhattan"> +      <children xsi:type="editmodel:AssociationEndEditModel" name="documentSource" location="0,14" id="at.asit.pdfover.pdfsignator/DocumentSource@documentSource+at.asit.pdfover.pdfsignator/SignResult@signResult|at.asit.pdfover.pdfsignator/DocumentSource#documentSource" attachSource="true" multiplicityLabel="//@children.13/@sourceConnections.0/@children.0/@children.1" roleLabel="//@children.13/@sourceConnections.0/@children.0/@children.0" aggregationKind="Aggregration" navigable="true"> +        <children xsi:type="editmodel:LabelEditModel" name=" # documentSource" location="508,172" size="113,13" anchorKind="FirstPart"/> +        <children xsi:type="editmodel:LabelEditModel" name="1" location="614,199" size="7,13" anchorKind="FirstPart"/> +      </children> +      <children xsi:type="editmodel:AssociationEndEditModel" name="signResult" location="394,15" id="at.asit.pdfover.pdfsignator/DocumentSource@documentSource+at.asit.pdfover.pdfsignator/SignResult@signResult|at.asit.pdfover.pdfsignator/SignResult#signResult"/> +      <children xsi:type="editmodel:WireLabelEditModel" size="0,13" anchorKind="MiddlePart"/> +    </sourceConnections> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <children xsi:type="editmodel:ClassEditModel" name="PDFSignator" location="479,-60" size="503,194" id="at.asit.pdfover.pdfsignator/PDFSignator" runTimeClassModel="Sign(Lat.asit.pdfover.pdfsignator.SignParameter;),CreateNewProfile(Ljava.lang.String;),CreateNewProfile(Ljava.lang.String;Ljava.lang.String;),GetAvailableProfileIDs(),GetProfile(Ljava.lang.String;),profiles,CreateNewProfile(Lat.asit.pdfover.pdfsignator.SignatureProfile;Ljava.lang.String;),GetAvailableProfiles()"> +    <children xsi:type="editmodel:CompartmentEditModel" size="269,18"> +      <children xsi:type="editmodel:AttributeEditModel" name="profiles" id="at.asit.pdfover.pdfsignator/PDFSignator#profiles"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="480,126"> +      <children xsi:type="editmodel:MethodEditModel" name="CreateNewProfile" id="at.asit.pdfover.pdfsignator/PDFSignator#CreateNewProfile(Ljava.lang.String;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetProfile" id="at.asit.pdfover.pdfsignator/PDFSignator#GetProfile(Ljava.lang.String;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="Sign" id="at.asit.pdfover.pdfsignator/PDFSignator#Sign(Lat.asit.pdfover.pdfsignator.SignParameter;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetAvailableProfiles" id="at.asit.pdfover.pdfsignator/PDFSignator#GetAvailableProfiles()"/> +      <children xsi:type="editmodel:MethodEditModel" name="CreateNewProfile" id="at.asit.pdfover.pdfsignator/PDFSignator#CreateNewProfile(Ljava.lang.String;Ljava.lang.String;)"/> +      <children xsi:type="editmodel:MethodEditModel" name="GetAvailableProfileIDs" id="at.asit.pdfover.pdfsignator/PDFSignator#GetAvailableProfileIDs()"/> +      <children xsi:type="editmodel:MethodEditModel" name="CreateNewProfile" id="at.asit.pdfover.pdfsignator/PDFSignator#CreateNewProfile(Lat.asit.pdfover.pdfsignator.SignatureProfile;Ljava.lang.String;)"/> +    </children> +    <children xsi:type="editmodel:CompartmentEditModel" size="0,0"/> +    <classifierPreferences xsi:type="editmodel:UMLClassDiagramClassifierPreference" showStereotype="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +  </children> +  <diagramOptions xsi:type="options:ClassDiagramOptions" properties="wireOptions=3;Product=eUML2" autoName="false"/> +  <boardSetting snapToGeometry="true" gridEnabled="true" gridSpacing="15,15" gridOrigin="0,0" rulerUnit="pixel" gridVisibility="false"> +    <leftRuler/> +    <topRuler> +      <guides position="450"/> +      <guides position="719"/> +    </topRuler> +  </boardSetting> +  <classDiagramPreferences xsi:type="editmodel:UMLClassDiagramPreference" showPopupBars="true" showConnectionHandles="true" showMethodsParameterTypes="true" showMethodsReturnType="true" showMethodsParameterNames="true" showMethodsParameterKinds="true" attributeSorter="Natural" methodSorter="Natural" showClassStereotype="true" showPackageStereotype="true" showDependencyStereotype="true" showInterfaceStereotype="true" innerClassSorter="Natural" showProtectedAttributes="true" showPublicAttributes="true" showPackageAttributes="true" showStaticAttributes="true" showProtectedMethods="true" showPublicMethods="true" showPackageMethods="true" showStaticMethods="true" showProtectedInnerClasses="true" showPublicInnerClasses="true" showPackageInnerClasses="true" showStaticInnerClasses="true" packageIndication="3" showAttributeProperty="true" showAssociationMember="true"/> +</editmodel:ClassDiagramEditModel> diff --git a/trunk/pdf-over/pdf-signer-pdf-as/pom.xml b/trunk/pdf-over/pdf-signer-pdf-as/pom.xml new file mode 100644 index 00000000..6bf80b1b --- /dev/null +++ b/trunk/pdf-over/pdf-signer-pdf-as/pom.xml @@ -0,0 +1,20 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +  <modelVersion>4.0.0</modelVersion> +  <parent> +    <artifactId>pdf-over</artifactId> +    <groupId>at.a-sit</groupId> +    <version>4.0-SNAPSHOT</version> +    <relativePath>..</relativePath> +  </parent> +  <artifactId>pdf-signer-pdf-as</artifactId> +  <name>PDFSignator PDF-AS Implementation</name> +  <dependencies> +  	<dependency> +  		<groupId>at.a-sit</groupId> +  		<artifactId>pdf-signer-interface</artifactId> +  		<version>0.1-SNAPSHOT</version> +  	</dependency> +  </dependencies> +  <inceptionYear>2012</inceptionYear> +  <url>http://www.buergerkarte.at</url> +</project>
\ No newline at end of file diff --git a/trunk/pdf-over/pom.xml b/trunk/pdf-over/pom.xml new file mode 100644 index 00000000..ce5044e1 --- /dev/null +++ b/trunk/pdf-over/pom.xml @@ -0,0 +1,72 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +  <modelVersion>4.0.0</modelVersion> + +  <groupId>at.a-sit</groupId> +  <artifactId>pdf-over</artifactId> +  <version>4.0-SNAPSHOT</version> +  <packaging>pom</packaging> + +  <name>PDF-OVER</name> +  <url>http://www.buergerkarte.at</url> + +  <properties> +    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> +  </properties> + +  <dependencies> +    <dependency> +      <groupId>junit</groupId> +      <artifactId>junit</artifactId> +      <version>3.8.1</version> +      <scope>test</scope> +    </dependency> +  </dependencies> +  <inceptionYear>2012</inceptionYear> +   +  <developers> + +		<developer> +			<id>tkellner</id> +			<name>Tobias Kellner</name> +			<email>tobias.kellner@egiz.gv.at</email> +			<organization>EGIZ</organization> +			<roles> +				<role>developer</role> +			</roles> +			<timezone>+1</timezone> +		</developer> + +		<developer> +			<id>vkrnjic</id> +			<name>Vesna Krnjic</name> +			<email>vesna.krnjic@iaik.tugraz.at</email> +			<organization>EGIZ</organization> +			<roles> +				<role>developer</role> +			</roles> +			<timezone>+1</timezone> +		</developer> + +		<developer> +			<id>afitzek</id> +			<name>Andreas Fitzek</name> +			<email>roland.fitzek@iaik.tugraz.at</email> +			<organization>EGIZ</organization> +			<roles> +				<role>developer</role> +			</roles> +			<timezone>+1</timezone> +		</developer> + +	</developers> +   +  <organization> +  	<name>EGIZ - E-Government Innovationszentrum</name> +  	<url>http://www.egiz.gv.at/</url> +  </organization> +  <modules> +  	<module>pdf-signer-interface</module> +  	<module>pdf-signer-pdf-as</module> +  </modules> +</project> | 
