/*
 * Copyright 2010-2015 Institut Pasteur.
 * 
 * This file is part of Icy.
 * 
 * Icy 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 3 of the License, or
 * (at your option) any later version.
 * 
 * Icy is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with Icy. If not, see <http://www.gnu.org/licenses/>.
 */
package icy.preferences;

import icy.plugin.PluginLoader;
import icy.plugin.abstract_.Plugin;
import icy.util.ClassUtil;

/**
 * @author Stephane
 */
public class PluginsPreferences
{
    /**
     * pref id
     */
    private static final String PREF_ID = "plugins";

    /**
     * preferences
     */
    private static XMLPreferences preferences;

    public static void load()
    {
        // load preference
        preferences = IcyPreferences.root().node(PREF_ID);
    }

    /**
     * @return the preferences
     */
    public static XMLPreferences getPreferences()
    {
        return preferences;
    }

    /**
     * Return root node for specified Plugin class.
     */
    public static XMLPreferences root(Class<? extends Plugin> pluginClass)
    {
        if (pluginClass != null)
        {
            final String className = pluginClass.getName();

            if (className.startsWith(PluginLoader.PLUGIN_PACKAGE))
                return preferences.node(ClassUtil.getPathFromQualifiedName(className
                        .substring(PluginLoader.PLUGIN_PACKAGE.length() + 1)));
        }

        return null;
    }

    /**
     * Return root node for specified Plugin
     */
    public static XMLPreferences root(Plugin plugin)
    {
        if (plugin != null)
        {
            final String className = plugin.getClass().getName();

            if (className.startsWith(PluginLoader.PLUGIN_PACKAGE))
                return preferences.node(ClassUtil.getPathFromQualifiedName(className
                        .substring(PluginLoader.PLUGIN_PACKAGE.length() + 1)));
        }

        return null;
    }
}