package com.querydsl.mongodb.domain;
import java.util.Locale;
import org.mongodb.morphia.converters.SimpleValueConverter;
import org.mongodb.morphia.converters.TypeConverter;
import org.mongodb.morphia.mapping.MappedField;
import org.mongodb.morphia.mapping.MappingException;
public class LocaleConverter extends TypeConverter implements SimpleValueConverter {
public LocaleConverter() {
super(Locale.class);
}
@Override
public final Object encode(Object value, MappedField optionalExtraInfo) throws MappingException {
if (value == null) {
return null;
}
if (!(value instanceof Locale)) {
throw new MappingException("Unable to convert " + value.getClass().getName());
}
return ((Locale) value).toLanguageTag();
}
@Override
@SuppressWarnings("rawtypes")
public Locale decode(Class targetClass, Object fromDBObject, MappedField optionalExtraInfo) throws MappingException {
if (fromDBObject == null) {
return null;
}
if (fromDBObject instanceof String) {
return Locale.forLanguageTag((String) fromDBObject);
}
throw new MappingException("Unable to convert " + fromDBObject.getClass().getName());
}
}