All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.code.morphia.converters.LocaleConverter Maven / Gradle / Ivy

package com.google.code.morphia.converters;


import java.util.Locale;
import java.util.StringTokenizer;

import com.google.code.morphia.mapping.MappedField;
import com.google.code.morphia.mapping.MappingException;


/**
 * @author Uwe Schaefer, ([email protected])
 * @author scotthernandez
 */
@SuppressWarnings({"rawtypes" })
public class LocaleConverter extends TypeConverter implements SimpleValueConverter {

  public LocaleConverter() {
    super(Locale.class);
  }

  @Override
  public Object decode(final Class targetClass, final Object fromDBObject, final MappedField optionalExtraInfo) throws MappingException {
    return parseLocale(fromDBObject.toString());
  }

  @Override
  public Object encode(final Object val, final MappedField optionalExtraInfo) {
    if (val == null) {
      return null;
    }

    return val.toString();
  }

  public static Locale parseLocale(final String localeString) {
    if ((localeString != null) && (localeString.length() != 0)) {
      final StringTokenizer st = new StringTokenizer(localeString, "_");
      final String language = st.hasMoreElements() ? st.nextToken() : Locale.getDefault().getLanguage();
      final String country = st.hasMoreElements() ? st.nextToken() : "";
      final String variant = st.hasMoreElements() ? st.nextToken() : "";
      return new Locale(language, country, variant);
    }
    return null;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy