All Downloads are FREE. Search and download functionalities are using the official Maven repository.

es.gob.afirma.standalone.ui.preferences.PreferencesManager Maven / Gradle / Ivy

There is a newer version: 1.8.2
Show newest version
/* Copyright (C) 2011 [Gobierno de Espana]
 * This file is part of "Cliente @Firma".
 * "Cliente @Firma" is free software; you can redistribute it and/or modify it under the terms of:
 *   - the GNU General Public License as published by the Free Software Foundation;
 *     either version 2 of the License, or (at your option) any later version.
 *   - or The European Software License; either version 1.1 or (at your option) any later version.
 * You may contact the copyright holder at: [email protected]
 */

package es.gob.afirma.standalone.ui.preferences;

import java.util.Properties;
import java.util.logging.Logger;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;

/** Nombre de las preferencias de configuración del programa.
 * @author Tomás García-Merás */
public final class PreferencesManager {

	private static final Logger LOGGER = Logger.getLogger("es.gob.afirma"); //$NON-NLS-1$

	/** Objecto general de preferencias donde se guarda la configuración de la
	 * aplicación. */
	private static final Preferences preferences;
	private static final Properties properties;
	static {
		preferences = Preferences.userNodeForPackage(PreferencesManager.class);

		properties = new Properties();
		try {

			properties.load(PreferencesManager.class.getResourceAsStream("/properties/preferences.properties" //$NON-NLS-1$
			));
		} catch (final Exception e) {
			LOGGER.severe(
					"No han podido cargarse los valores por defecto del fichero de configuracion de preferencias, se usaran los valores por defecto: " //$NON-NLS-1$
							+ e);
		}

	}

	private PreferencesManager() {
		/** No permitimos la instanciacion */
	}

	//**************************************************************************************************************************
	//**************** PREFERENCIAS GENERALES **********************************************************************************

    /** Idioma por defecto. */
    public static final String PREFERENCES_LOCALE = "default.locale"; //$NON-NLS-1$

	/** Configuración de proxy seleccionada.
	 * Un valor de true en esta preferencia indica que debe usarse el proxy configurado,
	 * y un valor de false que no usará proxy en las conexiones de red. */
	public static final String PREFERENCE_GENERAL_PROXY_SELECTED = "proxySelected"; //$NON-NLS-1$

	/** Host del servidor proxy configurado. */
	public static final String PREFERENCE_GENERAL_PROXY_HOST = "proxyHost"; //$NON-NLS-1$

	/** Puerto del servidor proxy configurado. */
	public static final String PREFERENCE_GENERAL_PROXY_PORT = "proxyPort"; //$NON-NLS-1$

	/** Nombre de usuario del servidor proxy configurado. */
	public static final String PREFERENCE_GENERAL_PROXY_USERNAME = "proxyUsername"; //$NON-NLS-1$

	/** Contraseña del servidor proxy configurado. */
	public static final String PREFERENCE_GENERAL_PROXY_PASSWORD = "proxyPassword"; //$NON-NLS-1$

	/** Proteger cambios en preferencias.
	 * Un valor de true en esta preferencia indica que deben limitarse las opciones de configuración
	 * mediante interfaz gráfico, apareciendo de forma deshabilitada (solo para consulta).
	 * Un valor de false habilitará que cualquier opción de configuración pueda ser
	 * alterada por parte del usuario mediante el interfaz gráfico. */
	public static final String PREFERENCE_GENERAL_BLOCKED = "preferencesBlocked"; //$NON-NLS-1$

	/** Evitar la confirmación al cerrar la aplicación o no.
	 * Un valor de true en esta preferencia permitirá cerrar la aplicación sin ningún diálogo
	 * de advertencia. Un valor de false hará que se muestre un diálogo para que el usuario confirme que
	 * realmente desea cerrar la aplicación. */
	public static final String PREFERENCE_GENERAL_OMIT_ASKONCLOSE = "omitAskOnClose"; //$NON-NLS-1$

	/** No mostrar la pantalla inicial de uso de DNIe.
	 * Un valor de true en esta preferencia hace que nunca se muestre la pantalla inicial que sugiere al usuario
	 * el uso directo del DNIe como almacén de claves. Un valor de false hará que se muestre esta pantalla
	 * al inicio siempre que se detecte un lector de tarjetas en el sistema. */
	public static final String PREFERENCE_GENERAL_HIDE_DNIE_START_SCREEN = "hideDnieStartScreen"; //$NON-NLS-1$

	/** Buscar actualizaciones al arrancar.
	 * Un valor de true en esta preferencia hace que, al arrancar, la aplicación compruebe automáticamente
	 * si hay publicadas versiones más actuales del aplicativo. Un valor de false hará que no se haga
	 * esta comprobación. */
	public static final String PREFERENCE_GENERAL_UPDATECHECK = "checkForUpdates"; //$NON-NLS-1$

	/** Envía estadísticas de uso.
	 * Un valor de true en esta preferencia hace que, al arrancar, la aplicación envíe
	 * de forma anónima estadísticas de uso a Google Analytics. Un valor de false
	 * hará que no se envíe ningún dato. */
	public static final String PREFERENCE_GENERAL_USEANALYTICS = "useAnalytics"; //$NON-NLS-1$

	/** Algoritmo de firma.
	 * Esta preferencia debe tener uno de estos valores:
	 * 
    *
  • SHA1withRSA
  • *
  • SHA256withRSA
  • *
  • SHA384withRSA
  • *
  • SHA512withRSA
  • *
*/ public static final String PREFERENCE_GENERAL_SIGNATURE_ALGORITHM = "signatureAlgorithm"; //$NON-NLS-1$ /** Formato de firma por defecto para documentos PDF. * Esta preferencia debe tener uno de estos valores: *
    *
  • PAdes
  • *
  • CAdes
  • *
  • XAdes
  • *
*/ public static final String PREFERENCE_GENERAL_DEFAULT_FORMAT_PDF = "defaultSignatureFormatPdf"; //$NON-NLS-1$ /** Formato de firma por defecto para documentos OOXML de Microsoft Office. * Esta preferencia debe tener uno de estos valores: *
    *
  • OOXML (Office Open XML)
  • *
  • CAdES
  • *
  • XAdES
  • *
*/ public static final String PREFERENCE_GENERAL_DEFAULT_FORMAT_OOXML = "defaultSignatureFormatOoxml"; //$NON-NLS-1$ /** Formato de firma por defecto para Facturas Electrónicas. * Esta preferencia debe tener uno de estos valores: *
    *
  • FacturaE
  • *
  • CAdES
  • *
  • XAdES
  • *
*/ public static final String PREFERENCE_GENERAL_DEFAULT_FORMAT_FACTURAE = "defaultSignatureFormatFacturae"; //$NON-NLS-1$ /** Formato de firma por defecto para documentos ODF de LibreOffice / OpenOffice. * Esta preferencia debe tener uno de estos valores: *
    *
  • ODF (Open Document Format)
  • *
  • CAdES
  • *
  • XAdES
  • *
*/ public static final String PREFERENCE_GENERAL_DEFAULT_FORMAT_ODF = "defaultSignatureFormatOdf"; //$NON-NLS-1$ /** Formato de firma por defecto para documentos XML. * Esta preferencia debe tener uno de estos valores: *
    *
  • CAdES
  • *
  • XAdES
  • *
*/ public static final String PREFERENCE_GENERAL_DEFAULT_FORMAT_XML = "defaultSignatureFormatXml"; //$NON-NLS-1$ /** Formato de firma por defecto para ficheros binarios que no se adecúen a ninguna otra categoría. * Esta preferencia debe tener uno de estos valores: *
    *
  • CAdES
  • *
  • XAdES
  • *
*/ public static final String PREFERENCE_GENERAL_DEFAULT_FORMAT_BIN = "defaultSignatureFormatBin"; //$NON-NLS-1$ //**************** FIN PREFERENCIAS GENERALES ****************************************************************************** //************************************************************************************************************************** //************************************************************************************************************************** //**************** PREFERENCIAS DE ALMACENES DE CLAVES ********************************************************************* /** En firma, restringir que únicamente se puedan usar certificados de firma. * Un valor de true en esta preferencia permitirá usar solo certificados específicos * para firma en las firmas electrónicas. */ public static final String PREFERENCE_KEYSTORE_SIGN_ONLY_CERTS = "useOnlySignatureCertificates"; //$NON-NLS-1$ /** En firma, restringir que únicamente se puedan usar certificados de seudónimo cuando estos estén * disponibles. Un valor de true en esta preferencia permitirá usar solo certificados de * seudónimo cuando estos estén disponibles.*/ public static final String PREFERENCE_KEYSTORE_ALIAS_ONLY_CERTS = "useOnlyAliasCertificates"; //$NON-NLS-1$ /** Almacén de claves por defecto. */ public static final String PREFERENCE_KEYSTORE_DEFAULT_STORE = "defaultStore"; //$NON-NLS-1$ //**************** FIN PREFERENCIAS DE ALMACENES DE CLAVES ***************************************************************** //************************************************************************************************************************** //************************************************************************************************************************** //************************* PREFERENCIAS DE FIRMAS XAdES ******************************************************************* /** Identificador de la política de firma para XAdES. Debe ser un OID.*/ public static final String PREFERENCE_XADES_POLICY_IDENTIFIER = "xadesPolicyIdentifier"; //$NON-NLS-1$ /** Huella digital del identificador de la política de firma para XAdES. Debe estar en base64.*/ public static final String PREFERENCE_XADES_POLICY_HASH = "xadesPolicyIdentifierHash"; //$NON-NLS-1$ /** Algoritmo de la huella digital del identificador de la política de firma para XAdES. * Esta preferencia debe tener uno de estos valores: *
    *
  • SHA1
  • *
  • SHA-512
  • *
  • SHA-384
  • *
  • SHA-256
  • *
*/ public static final String PREFERENCE_XADES_POLICY_HASH_ALGORITHM = "xadesPolicyIdentifierHashAlgorithm"; //$NON-NLS-1$ /** Calificador de la política de firma para XAdES. Debe ser una URL.*/ public static final String PREFERENCE_XADES_POLICY_QUALIFIER = "xadesPolicyQualifier"; //$NON-NLS-1$ /** Ciudad de firma para firmas XAdES. */ public static final String PREFERENCE_XADES_SIGNATURE_PRODUCTION_CITY = "xadesSignatureProductionCity"; //$NON-NLS-1$ /** Provincia de firma para firmas XAdES. */ public static final String PREFERENCE_XADES_SIGNATURE_PRODUCTION_PROVINCE = "xadesSignatureProductionProvince"; //$NON-NLS-1$ /** Código de firma para firmas XAdES. */ public static final String PREFERENCE_XADES_SIGNATURE_PRODUCTION_POSTAL_CODE = "xadesSignatureProductionPostalCode"; //$NON-NLS-1$ /** País de firma para firmas XAdES. */ public static final String PREFERENCE_XADES_SIGNATURE_PRODUCTION_COUNTRY = "xadesSignatureProductionCountry"; //$NON-NLS-1$ /** Cargo supuesto para el firmante en firmas XAdES. */ public static final String PREFERENCE_XADES_SIGNER_CLAIMED_ROLE = "xadesSignerClaimedRole"; //$NON-NLS-1$ /** Formato de las firmas XAdES. * Esta preferencia debe tener uno de estos valores: *
    *
  • XAdES Detached
  • *
  • XAdES Enveloping
  • *
  • XAdES Enveloped
  • *
*/ public static final String PREFERENCE_XADES_SIGN_FORMAT = "xadesSignFormat"; //$NON-NLS-1$ //************************* FIN PREFERENCIAS DE FIRMAS XAdES *************************************************************** //************************************************************************************************************************** //************************************************************************************************************************** //************************* PREFERENCIAS DE FIRMAS PAdES ******************************************************************* /** Motivo de la firma en firmas PAdES. */ public static final String PREFERENCE_PADES_SIGN_REASON = "padesSignReason"; //$NON-NLS-1$ /** Ciudad de firma para firmas PAdES. */ public static final String PREFERENCE_PADES_SIGN_PRODUCTION_CITY = "padesSignProductionCity"; //$NON-NLS-1$ /** Contacto del firmante en firmas PAdES. */ public static final String PREFERENCE_PADES_SIGNER_CONTACT = "padesSignerContact"; //$NON-NLS-1$ /** Formato de firma PAdES (PAdES Básico o PAdES-BES). * Esta preferencia debe tener uno de estos valores: *
    *
  • PAdES-BES
  • *
  • PAdES Básico
  • *
*/ public static final String PREFERENCE_PADES_FORMAT = "padesBasicFormat"; //$NON-NLS-1$ /** Identificador de la política de firma para PAdES. Debe ser un OID.*/ public static final String PREFERENCE_PADES_POLICY_IDENTIFIER = "padesPolicyIdentifier"; //$NON-NLS-1$ /** Huella digital del identificador de la política de firma para PAdES. Debe estar en base64.*/ public static final String PREFERENCE_PADES_POLICY_HASH = "padesPolicyIdentifierHash"; //$NON-NLS-1$ /** Algoritmo de la huella digital del identificador de la política de firma para PAdES. * Esta preferencia debe tener uno de estos valores: *
    *
  • SHA1
  • *
  • SHA-512
  • *
  • SHA-384
  • *
  • SHA-256
  • *
*/ public static final String PREFERENCE_PADES_POLICY_HASH_ALGORITHM = "padesPolicyIdentifierHashAlgorithm"; //$NON-NLS-1$ /** Calificador de la política de firma para PAdES. Debe ser una URL.*/ public static final String PREFERENCE_PADES_POLICY_QUALIFIER = "padesPolicyQualifier"; //$NON-NLS-1$ /** Si está establecido a true se pide al usuario que determine mediante diálogos * gráficos los parámetros de una firma visible PDF y se inserta como tal en el * documento. */ public static final String PREFERENCE_PADES_VISIBLE = "padesVisibleSignature"; //$NON-NLS-1$ //************************* FIN PREFERENCIAS DE FIRMAS PAdES *************************************************************** //************************************************************************************************************************** //************************************************************************************************************************** //************************* PREFERENCIAS DE FIRMAS CAdES ******************************************************************* /** Identificador de la política de firma para CAdES. Debe ser un OID.*/ public static final String PREFERENCE_CADES_POLICY_IDENTIFIER = "cadesPolicyIdentifier"; //$NON-NLS-1$ /** Huella digital del identificador de la política de firma para CAdES. */ public static final String PREFERENCE_CADES_POLICY_HASH = "cadesPolicyIdentifierHash"; //$NON-NLS-1$ /** Algoritmo de la huella digital del identificador de la política de firma para CAdES. * Esta preferencia debe tener uno de estos valores: *
    *
  • SHA1
  • *
  • SHA-512
  • *
  • SHA-384
  • *
  • SHA-256
  • *
*/ public static final String PREFERENCE_CADES_POLICY_HASH_ALGORITHM = "cadesPolicyIdentifierHashAlgorithm"; //$NON-NLS-1$ /** Calificador de la política de firma para CAdES. Debe ser una URL.*/ public static final String PREFERENCE_CADES_POLICY_QUALIFIER = "cadesPolicyQualifier"; //$NON-NLS-1$ /** Si está establecido a true la firma CAdES se realizará en modo implícito (attached), * si está establecido a false se realizará en modo (detached). */ public static final String PREFERENCE_CADES_IMPLICIT = "cadesImplicitMode"; //$NON-NLS-1$ //************************* FIN PREFERENCIAS DE FIRMAS CAdES *************************************************************** //************************************************************************************************************************** //************************************************************************************************************************** //**************** PREFERENCIAS DE FACTURAS ELECTRONICAS ******************************************************************* /** Nombre de la política de FacturaE. * Esta preferencia debe tener uno de estos valores: *
    *
  • Política de Factura Electrónica 3.0
  • *
  • Política de Factura Electrónica 3.1
  • *
*/ public static final String PREFERENCE_FACTURAE_POLICY = "facturaEPolicy"; //$NON-NLS-1$ /** Ciudad de firma para firmas FacturaE. */ public static final String PREFERENCE_FACTURAE_SIGNATURE_PRODUCTION_CITY = "facturaeSignatureProductionCity"; //$NON-NLS-1$ /** Provincia de firma para firmas FacturaE. */ public static final String PREFERENCE_FACTURAE_SIGNATURE_PRODUCTION_PROVINCE = "facturaeSignatureProductionProvince"; //$NON-NLS-1$ /** Código de firma para firmas FacturaE. */ public static final String PREFERENCE_FACTURAE_SIGNATURE_PRODUCTION_POSTAL_CODE = "facturaeSignatureProductionPostalCode"; //$NON-NLS-1$ /** País de firma para firmas FacturaE. */ public static final String PREFERENCE_FACTURAE_SIGNATURE_PRODUCTION_COUNTRY = "facturaeSignatureProductionCountry"; //$NON-NLS-1$ /** Papel del firmante de las facturas. * Esta preferencia debe tener uno de estos valores: *
    *
  • Emisor
  • *
  • Receptor
  • *
  • Tercero
  • *
*/ public static final String PREFERENCE_FACTURAE_SIGNER_ROLE = "facturaeSignerRole"; //$NON-NLS-1$ /** Identificador de la política de firma para FacturaE. Debe ser un OID.*/ public static final String PREFERENCE_FACTURAE_POLICY_IDENTIFIER = "facturaePolicyIdentifier"; //$NON-NLS-1$ /** Huella digital del identificador de la política de firma para FacturaE. Debe estar en base64.*/ public static final String PREFERENCE_FACTURAE_POLICY_IDENTIFIER_HASH = "facturaePolicyIdentifierHash"; //$NON-NLS-1$ /** Algoritmo de la huella digital del identificador de la política de firma para FacturaE. * Esta preferencia debe tener uno de estos valores: *
    *
  • SHA1
  • *
  • SHA-512
  • *
  • SHA-384
  • *
  • SHA-256
  • *
*/ public static final String PREFERENCE_FACTURAE_POLICY_IDENTIFIER_HASH_ALGORITHM = "facturaePolicyIdentifierHashAlgorithm"; //$NON-NLS-1$ /** Calificador de la política de firma para FacturaE. Debe ser una URL. */ public static final String PREFERENCE_FACTURAE_POLICY_QUALIFIER = "facturaePolicyQualifier"; //$NON-NLS-1$ //**************** FIN PREFERENCIAS DE FACTURAS ELECTRONICAS *************************************************************** //************************************************************************************************************************** //************************************************************************************************************************** //**************** PREFERENCIAS DE HUELLAS DIGITALES *********************************************************************** /** Algoritmo de la huella digital para la creación de huellas digitales de ficheros.*/ public static final String PREFERENCE_CREATE_HASH_ALGORITHM = "createHashAlgorithm"; //$NON-NLS-1$ /** Formato de la huella digital para la creación de huellas digitales de ficheros.*/ public static final String PREFERENCE_CREATE_HASH_FORMAT = "createHashFormat"; //$NON-NLS-1$ /** Si está establecido a true se copiara la huella digital de fichero al portapapeles.*/ public static final String PREFERENCE_CREATE_HASH_CLIPBOARD = "createHashCopyToClipBoard"; //$NON-NLS-1$ /** Algoritmo de la huella digital para la creación de huellas digitales de directorio. */ public static final String PREFERENCE_CREATE_HASH_DIRECTORY_ALGORITHM = "createHashDirectoryAlgorithm"; //$NON-NLS-1$ //**************** FIN PREFERENCIAS DE HUELLAS DIGITALES ******************************************************************* //************************************************************************************************************************** /** Recupera el valor de una cadena de texto almacenada entre las preferencias de la * aplicación. * @param key Clave del valor que queremos recuperar. * @return La preferencia almacenada o {@code def} si no se encontró. */ public static String get(final String key) { return preferences.get(key, getDefaultPreference(key)); } /** * Recupera el valor de una cadena de texto almacenada en un fichero de propiedades. * @param key Clave del valor que queremos recuperar. * @return La preferencia almacenada o {@code def} si no se encontró. */ public static String getDefaultPreference(final String key) { return properties.getProperty(key); } /** Recupera el valor {@code true} o {@code false} almacenado entre las preferencias de la * aplicación. * @param key Clave del valor que queremos recuperar. * @return La preferencia almacenada o {@code def} si no se encontró. */ public static boolean getBoolean(final String key) { return preferences.getBoolean(key, getBooleanDefaultPreference(key)); } /** * Recupera el valor de una cadena de texto almacenada en un fichero de propiedades. * @param key Clave del valor que queremos recuperar. * @return La preferencia almacenada o {@code def} si no se encontró. */ public static boolean getBooleanDefaultPreference(final String key) { return Boolean.parseBoolean(properties.getProperty(key)); } /** Establece una cadena de texto en la configuración de la aplicación * identificándola con una clave. Para realizar el guardado completo, es * necesario ejecutar el método {@code flush()}. * @param key Clave con la que identificaremos el valor. * @param value Valor que se desea almacenar. */ public static void put(final String key, final String value) { preferences.put(key, value); } /** Establece un {@code true} o {@code false} en la configuración de la aplicación * identificándolo con una clave. Para realizar el guardado completo, es * necesario ejecutar el método {@code flush()}. * @param key Clave con la que identificaremos el valor. * @param value Valor que se desea almacenar. */ public static void putBoolean(final String key, final boolean value) { preferences.putBoolean(key, value); } /** Elimina una clave de entre la configuración de la aplicación. * @param key Clave que eliminar. */ public static void remove(final String key) { preferences.remove(key); } /** * Elimina todas las preferencias de la aplicación. * @throws BackingStoreException Si ocurre un error eliminando las preferencias. */ public static void clearAll() throws BackingStoreException { preferences.clear(); } /** Almacena en las preferencias de la aplicación todos los valores * establecidos hasta el momento. * @throws BackingStoreException Cuando ocurre un error durante el guardado. */ public static void flush() throws BackingStoreException { preferences.flush(); } /** * Comprueba si la preferencia se puede bloquear * @param key Clave de la preferencia * @return {@code true} Si es una preferencia bloqueable, {@code false} en caso contrario */ public static boolean isProtectedPreference(final String key) { return key.equals(PREFERENCE_GENERAL_SIGNATURE_ALGORITHM) || key.equals(PREFERENCE_GENERAL_DEFAULT_FORMAT_PDF) || key.equals(PREFERENCE_GENERAL_DEFAULT_FORMAT_OOXML) || key.equals(PREFERENCE_GENERAL_DEFAULT_FORMAT_FACTURAE) || key.equals(PREFERENCE_GENERAL_DEFAULT_FORMAT_ODF) || key.equals(PREFERENCE_GENERAL_DEFAULT_FORMAT_XML) || key.equals(PREFERENCE_GENERAL_DEFAULT_FORMAT_BIN) || key.equals(PREFERENCE_XADES_POLICY_IDENTIFIER) || key.equals(PREFERENCE_XADES_POLICY_HASH) || key.equals(PREFERENCE_XADES_POLICY_HASH_ALGORITHM) || key.equals(PREFERENCE_XADES_POLICY_QUALIFIER) || key.equals(PREFERENCE_XADES_SIGN_FORMAT) || key.equals(PREFERENCE_PADES_FORMAT) || key.equals(PREFERENCE_PADES_POLICY_IDENTIFIER) || key.equals(PREFERENCE_PADES_POLICY_HASH) || key.equals(PREFERENCE_PADES_POLICY_HASH_ALGORITHM) || key.equals(PREFERENCE_PADES_POLICY_QUALIFIER) || key.equals(PREFERENCE_CADES_POLICY_IDENTIFIER) || key.equals(PREFERENCE_CADES_POLICY_HASH) || key.equals(PREFERENCE_CADES_POLICY_HASH_ALGORITHM) || key.equals(PREFERENCE_CADES_POLICY_QUALIFIER) || key.equals(PREFERENCE_CADES_IMPLICIT) || key.equals(PREFERENCE_FACTURAE_POLICY); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy