es.gob.afirma.standalone.ui.preferences.PreferencesManager Maven / Gradle / Ivy
/* 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);
}
}