package rocks.inspectit.ui.rcp.preferences.valueproviders;
import rocks.inspectit.ui.rcp.preferences.PreferenceException;
import rocks.inspectit.ui.rcp.preferences.valueproviders.PreferenceValueProviderFactory.PreferenceValueProvider;
/**
* Provider that can save and retrieve an enum value.
*
* @param <E>
* the enumeration class
*
* @author Marius Oehler
*
*/
public class EnumPreferenceValueProvider<E extends Enum<E>> extends PreferenceValueProvider<E> {
/**
* Class of the enum.
*/
private Class<E> enumClass;
/**
* @param enumClass
* Class of the enum.
*/
public EnumPreferenceValueProvider(Class<E> enumClass) {
this.enumClass = enumClass;
}
/**
* {@inheritDoc}
*/
@Override
public boolean isObjectValid(Object object) {
return enumClass.isAssignableFrom(object.getClass());
}
/**
* {@inheritDoc}
*/
@Override
public String getValueForObject(E object) throws PreferenceException {
return object.toString();
}
/**
* {@inheritDoc}
*/
@Override
public E getObjectFromValue(String value) throws PreferenceException {
return Enum.valueOf(enumClass, value);
}
}