com/bstek/dorado/sample/basic/LocaleResolver.java


package com.bstek.dorado.sample.basic;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;

import com.bstek.dorado.web.DoradoContext;

public class LocaleResolver implements
		com.bstek.dorado.core.resource.LocaleResolver {
	private final static String CURRENT_LOCALE_KEY = "com.bstek.dorado.sample.CurrentLocale";

	public Locale resolveLocale() throws Exception {
		Locale locale = null;
		HttpServletRequest request = DoradoContext.getAttachedRequest();
		boolean isView = request.getRequestURI().endsWith(".d");
		if (isView) {
			String localeParam = request.getParameter("locale");
			if (StringUtils.isNotEmpty(localeParam)) {
				locale = new Locale(StringUtils.substringBefore(localeParam,
						"_"), StringUtils.substringAfter(localeParam, "_"));
			}
			request.getSession().setAttribute(CURRENT_LOCALE_KEY, locale);
		} else {
			locale = (Locale) request.getSession().getAttribute(
					CURRENT_LOCALE_KEY);
		}

		if (locale == null) {
			locale = request.getLocale();
		}
		return locale;
	}

}