/*******************************************************************************
* Copyright (c) 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Zend Technologies
*******************************************************************************/
package org2.eclipse.php.internal.core.preferences;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.runtime.Preferences;
/**
* Desciption: This class is a factory for ProjectPreferencePropagators. It is a
* singletone that contains a Map of ProjectPreference propagators based on the
* node qualifier (which is basically the plugin identifier for that preference)
*
* @author Eden K.,2006
*
*/
@SuppressWarnings({"unchecked", "rawtypes", "deprecation"})
public class PreferencePropagatorFactory {
private static PreferencePropagatorFactory instance = new PreferencePropagatorFactory();
// map of <String (Node Qualifier), ProjectPreferencePropagator>
private final Map propagatorsMap = new HashMap();
private PreferencePropagatorFactory() {
};
/**
* Returns a single instance of the PreferencePropagatorFactory.
*
* @return the singelton of ProjectPreferencePropagatorFactory
*/
public static PreferencePropagatorFactory getInstance() {
return instance;
}
/**
* Returns a single instance of a {@link PreferencesPropagator} according to
* the given nodeQualifier and the preferences store.
*
* @param nodeQualifier
* @return the ProjectPreferencesPropagator given a nodeQualifier and a
* preference store
*/
public static PreferencesPropagator getPreferencePropagator(
String nodeQualifier, Preferences store) {
PreferencePropagatorFactory factory = getInstance();
if (factory.propagatorsMap.containsKey(nodeQualifier)) {
return (PreferencesPropagator) factory.propagatorsMap
.get(nodeQualifier);
} else {
PreferencesPropagator propagator = new PreferencesPropagator(
nodeQualifier, store);
factory.propagatorsMap.put(nodeQualifier, propagator);
return propagator;
}
}
}