aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignatorFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/framework/SignatorFactory.java')
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/framework/SignatorFactory.java174
1 files changed, 174 insertions, 0 deletions
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignatorFactory.java b/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignatorFactory.java
new file mode 100644
index 0000000..fbba7dc
--- /dev/null
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/framework/SignatorFactory.java
@@ -0,0 +1,174 @@
+/**
+ * <copyright> Copyright (c) 2006 by Know-Center, Graz, Austria </copyright>
+ *
+ * This software is the confidential and proprietary information of Know-Center,
+ * Graz, Austria. You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered
+ * into with Know-Center.
+ *
+ * KNOW-CENTER MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ * NON-INFRINGEMENT. KNOW-CENTER SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
+ * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
+ * DERIVATIVES.
+ *
+ * $Id: SignatorFactory.java,v 1.2 2006/08/30 14:02:35 wprinz Exp $
+ */
+package at.knowcenter.wag.egov.egiz.framework;
+
+import at.knowcenter.wag.egov.egiz.PdfASID;
+import at.knowcenter.wag.egov.egiz.exceptions.SignatorFactoryException;
+import at.knowcenter.wag.egov.egiz.framework.signators.BinarySignator_1_0_0;
+import at.knowcenter.wag.egov.egiz.framework.signators.DetachedSignator_1_0_0;
+import at.knowcenter.wag.egov.egiz.framework.signators.TextualSignator_1_0_0;
+
+/**
+ * This factory creates instances of Signator classes corresponding to the given
+ * PdfAS Algorithm IDs.
+ *
+ * @author wprinz
+ */
+public abstract class SignatorFactory
+{
+ /**
+ * The Vendor.
+ */
+ public static final String VENDOR = "bka.gv.at";
+
+ /**
+ * The binary Signator algorithm.
+ */
+ public static final String TYPE_BINARY = "binaer";
+
+ /**
+ * The textual Signator algorithm.
+ */
+ public static final String TYPE_TEXTUAL = "text";
+
+ /**
+ * This signator is only for testing the framework.
+ */
+ public static final String TYPE_TEST = "testalgo";
+
+ /**
+ * This application's current algorithm versions.
+ */
+ public static final String VERSION_1_0_0 = "v1.0.0";
+
+ /**
+ * The most recent binary algorithm this application provides.
+ */
+ public static final PdfASID MOST_RECENT_BINARY_SIGNATOR_ID = BinarySignator_1_0_0.MY_ID;
+
+ /**
+ * The most recent textual algorithm this application provides.
+ */
+ public static final PdfASID MOST_RECENT_TEXTUAL_SIGNATOR_ID = TextualSignator_1_0_0.MY_ID;
+
+ /**
+ * The most recent test algorithm this application provides.
+ */
+ public static final PdfASID MOST_RECENT_DETACHED_SIGNATOR_ID = DetachedSignator_1_0_0.MY_ID;
+
+ /**
+ * Creates a Signator for the given ID.
+ *
+ * @param id
+ * The ID of the Signator to be created.
+ * @return Returns the created Signator object.
+ * @throws SignatorFactoryException
+ * Thrown, if there is no appropriate Signator for the given ID.
+ */
+ public static Signator createSignator(PdfASID id) throws SignatorFactoryException
+ {
+ if (!id.getVendor().equals(VENDOR))
+ {
+ throw new SignatorFactoryException("The vendor '" + id.getVendor() + "' is unrecognized by this SignatorFactory. (id='" + id + "')");
+ }
+
+ if (id.getType().equals(TYPE_BINARY))
+ {
+ if (id.getVersion().equals(VERSION_1_0_0))
+ {
+ return new BinarySignator_1_0_0();
+ }
+
+ throw new SignatorFactoryException("The version '" + id.getVersion() + "' of type '" + id.getType() + "' is not supported by this SignatorFactory. (id='" + id + "')");
+ }
+
+ if (id.getType().equals(TYPE_TEXTUAL))
+ {
+ if (id.getVersion().equals(VERSION_1_0_0))
+ {
+ return new TextualSignator_1_0_0();
+ }
+
+ throw new SignatorFactoryException("The version '" + id.getVersion() + "' of type '" + id.getType() + "' is not supported by this SignatorFactory. (id='" + id + "')");
+ }
+
+ if (id.getType().equals(TYPE_TEST))
+ {
+ if (id.getVersion().equals(VERSION_1_0_0))
+ {
+ return new DetachedSignator_1_0_0();
+ }
+
+ throw new SignatorFactoryException("The version '" + id.getVersion() + "' of type '" + id.getType() + "' is not supported by this SignatorFactory. (id='" + id + "')");
+ }
+
+ throw new SignatorFactoryException("The type '" + id.getType() + "' is not supported by this SignatorFactory. (id='" + id + "')");
+ }
+
+ /**
+ * Creates the most recent signator the application provides for the given
+ * type.
+ *
+ * @param signator_type
+ * The type of the signator to be created (see the type field of
+ * PdfASID).
+ * @return Returns the created Signator instance.
+ * @throws SignatorFactoryException
+ * Thrown, if the type is unknown.
+ */
+ public static Signator createMostRecentSignator(String signator_type) throws SignatorFactoryException
+ {
+ PdfASID id = null;
+ if (signator_type.equals(TYPE_BINARY))
+ {
+ id = MOST_RECENT_BINARY_SIGNATOR_ID;
+ }
+ if (signator_type.equals(TYPE_TEXTUAL))
+ {
+ id = MOST_RECENT_TEXTUAL_SIGNATOR_ID;
+ }
+ if (signator_type.equals(TYPE_TEST))
+ {
+ id = MOST_RECENT_TEXTUAL_SIGNATOR_ID;
+ }
+
+ if (id == null)
+ {
+ throw new SignatorFactoryException("The type '" + signator_type + "' is not supported by this SignatorFactory.");
+ }
+
+ return createSignator(id);
+ }
+
+ /**
+ * Returns the list of available Signator algorithms of this application.
+ *
+ * <p>
+ * Use createMostRecentSignator to create the most recent signator for the
+ * type.
+ * </p>
+ *
+ * @return Returns the list of available Signator algorithms of this
+ * application.
+ */
+ public static String[] getAvailableTyes()
+ {
+ String[] types = new String[] { TYPE_BINARY, TYPE_TEXTUAL, TYPE_TEST };
+ return types;
+ }
+}