package org.ovirt.engine.ui.uicompat;
import java.util.MissingResourceException;
import java.util.logging.Logger;
public class EnumTranslator implements Translator<Enum<?>> {
private static final Logger logger = Logger.getLogger(EnumTranslator.class.getName());
private static final UIConstants constants = ConstantsManager.getInstance().getConstants();
private static final EnumTranslator INSTANCE = new EnumTranslator();
private static final Enums enums = ConstantsManager.getInstance().getEnums();
private EnumTranslator() {
}
public static EnumTranslator getInstance() {
return INSTANCE;
}
@Override
public String translate(Enum<?> key) {
if (key == null) {
final String result = constants.notAvailableLabel();
logger.warning("trying to localize null, probable error. " +
"Exception is not thrown, returning '" + result + "'");
return result;
}
try {
final String translatedString = enums.getString(keyToTranslate(key));
return translatedString != null ? translatedString : notLocalizedKey(key);
} catch (MissingResourceException e) {
// Silently ignore missing resource
return notLocalizedKey(key, e);
}
}
private String notLocalizedKey(Enum<?> key) {
return notLocalizedKey(key, null);
}
private String notLocalizedKey(Enum<?> key, MissingResourceException e) {
String logString = "Missing Enum resource '" + key + "'."; //$NON-NLS-1$
if (e != null) {
logString += " " + e.getLocalizedMessage();
}
logger.warning(logString);
return key.name();
}
private String keyToTranslate(Enum<?> key) {
String className = key.getDeclaringClass().toString();
String classNameWithoutPackage = className.substring(className.lastIndexOf(".") + 1, className.length()); //$NON-NLS-1$
return classNameWithoutPackage + "___" + key.name();
}
@Override
public boolean containsKey(Enum<?> key) {
final String translatedString = enums.getString(keyToTranslate(key));
return translatedString != null;
}
}