LocaleConverter.java 1.16 KB
package fi.codecrew.moya.web.converter;

import java.util.Locale;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.inject.Named;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Named
public class LocaleConverter implements Converter {

	private static final Logger logger = LoggerFactory.getLogger(LocaleConverter.class);

	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		Locale ret = null;
		if (value != null && !value.isEmpty() && !"null".equals(value)) {
			try {
				ret = Locale.forLanguageTag(value);
			} catch (Throwable t) {
				logger.warn("Error parsing locale: '{}'", value);
			}
		}

		return ret;
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		String ret = "null";
		if (value != null && value instanceof Locale) {
			Locale loc = (Locale) value;
			ret = loc.toLanguageTag();
		}
		return ret;
	}

	public static void main(String[] ad)
	{
		Locale loc = new Locale("fi", "FI");
		System.out.println(loc.toLanguageTag());
		System.out.println(loc.toString());
	}
}