/** * Copyright 2006 by Know-Center, Graz, Austria * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a * joint initiative of the Federal Chancellery Austria and Graz University of * Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. * * $Id: SignatorFactory.java,v 1.2 2006/08/30 14:02:35 wprinz Exp $ */ package at.knowcenter.wag.egov.egiz.framework; import at.gv.egiz.pdfas.impl.signator.textual.TextualSignator_1_2_0; 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.BinarySignator_1_1_0; import at.knowcenter.wag.egov.egiz.framework.signators.DetachedSignator_1_0_0; import at.knowcenter.wag.egov.egiz.framework.signators.DetachedfTextualSignator_1_0_0; import at.knowcenter.wag.egov.egiz.framework.signators.TextualSignator_1_0_0; import at.knowcenter.wag.egov.egiz.framework.signators.TextualSignator_1_1_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"; //$NON-NLS-1$ /** * The binary Signator algorithm. */ public static final String TYPE_BINARY = "binaer"; //$NON-NLS-1$ /** * The textual Signator algorithm. */ public static final String TYPE_TEXTUAL = "text"; //$NON-NLS-1$ /** * This signator is only for testing the framework. */ public static final String TYPE_TEST = "testalgo"; //$NON-NLS-1$ /** * This signator is only for testing the framework. */ public static final String TYPE_DETACHED_TEXTUAL = "detachedtext"; //$NON-NLS-1$ /** * This application's current algorithm versions. */ public static final String VERSION_1_0_0 = "v1.0.0"; //$NON-NLS-1$ /** * This application's current algorithm versions. */ public static final String VERSION_1_1_0 = "v1.1.0"; //$NON-NLS-1$ /** * This application's current algorithm versions. */ public static final String VERSION_1_2_0 = "v1.2.0"; //$NON-NLS-1$ /** * The most recent binary algorithm this application provides. */ public static final PdfASID MOST_RECENT_BINARY_SIGNATOR_ID = BinarySignator_1_1_0.MY_ID; /** * The most recent textual algorithm this application provides. */ public static final PdfASID MOST_RECENT_TEXTUAL_SIGNATOR_ID = TextualSignator_1_2_0.MY_ID; /** * The most recent test algorithm this application provides. */ public static final PdfASID MOST_RECENT_DETACHED_SIGNATOR_ID = DetachedfTextualSignator_1_0_0.MY_ID; /** * The most recent test algorithm this application provides. */ public static final PdfASID MOST_RECENT_DETACHEDTEXT_SIGNATOR_ID = DetachedfTextualSignator_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 + "')"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } if (id.getType().equals(TYPE_BINARY)) { if (id.getVersion().equals(VERSION_1_0_0)) { return new BinarySignator_1_0_0(); } if (id.getVersion().equals(VERSION_1_1_0)) { return new BinarySignator_1_1_0(); } throw new SignatorFactoryException("The version '" + id.getVersion() + "' of type '" + id.getType() + "' is not supported by this SignatorFactory. (id='" + id + "')"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } if (id.getType().equals(TYPE_TEXTUAL)) { if (id.getVersion().equals(VERSION_1_0_0)) { return new TextualSignator_1_0_0(); } if (id.getVersion().equals(VERSION_1_1_0)) { return new TextualSignator_1_1_0(); } throw new SignatorFactoryException("The version '" + id.getVersion() + "' of type '" + id.getType() + "' is not supported by this SignatorFactory. (id='" + id + "')"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } 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 + "')"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } if (id.getType().equals(TYPE_DETACHED_TEXTUAL)) { if (id.getVersion().equals(VERSION_1_0_0)) { return new DetachedfTextualSignator_1_0_0(); } throw new SignatorFactoryException("The version '" + id.getVersion() + "' of type '" + id.getType() + "' is not supported by this SignatorFactory. (id='" + id + "')"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } throw new SignatorFactoryException("The type '" + id.getType() + "' is not supported by this SignatorFactory. (id='" + id + "')"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } /** * 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."); //$NON-NLS-1$ //$NON-NLS-2$ } return createSignator(id); } /** * Returns the list of available Signator algorithms of this application. * *

* Use createMostRecentSignator to create the most recent signator for the * type. *

* * @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; } }