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