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

es.gob.afirma.standalone.plugins.PluginPreferences Maven / Gradle / Ivy

The newest version!
package es.gob.afirma.standalone.plugins;

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

/**
 * Gestiona la configuración almacenada del plugin.
 */
public class PluginPreferences {

	private final Preferences preferences;

	private static PluginPreferences instance = null;

	/**
	 * Carga la configuración del plugin.
	 * @param plugin El plugin en ejecución.
	 * @return Preferencias del plugin.
	 */
	public static PluginPreferences getInstance(final AfirmaPlugin plugin) {
		if (instance == null) {
			instance = new PluginPreferences(plugin);
		}
		return instance;
	}

	private PluginPreferences(final AfirmaPlugin plugin) {
		this.preferences = Preferences.userNodeForPackage(plugin.getClass());
	}

	/**
	 * Almacenamos la configuración del plugin.
	 * @param config Configuración que deseamos almacenar.
	 */
	public void saveConfig(final Properties config) {
		// Eliminamos la configuracion que hubiese antes
		try {
			for (final String key : this.preferences.childrenNames()) {
				this.preferences.remove(key);
			}
		} catch (final BackingStoreException e) {
			Logger.getLogger(PluginPreferences.class.getName()).warning(
					"No se pudo eliminar la configuracion anterior del plugin: " + e); //$NON-NLS-1$
		}

		// Almacenamos la nueva configuracion
		for (final String key : config.keySet().toArray(new String[config.size()])) {
			this.preferences.put(key, config.getProperty(key));
		}
		try {
			this.preferences.flush();
		} catch (final BackingStoreException e) {
			Logger.getLogger(PluginPreferences.class.getName()).warning(
					"No se pudo guardar la nueva configuracion del plugin: " + e); //$NON-NLS-1$
		}
	}

	/**
	 * Obtiene la configuración almacenada del plugin.
	 * @return Configuración del plugin.
	 */
	public Properties recoverConfig() {
		final Properties config = new Properties();
		try {
			for (final String key : this.preferences.keys()) {
				config.setProperty(key, this.preferences.get(key, "")); //$NON-NLS-1$
			}
		} catch (final BackingStoreException e) {
			Logger.getLogger(PluginPreferences.class.getName()).warning(
					"No se pudo recuperar toda la configuracion del plugin: " + e); //$NON-NLS-1$
		}
		return config;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy