mercury.tags.SetInitialLocale.java Source code

Java tutorial

Introduction

Here is the source code for mercury.tags.SetInitialLocale.java

Source

/**
 *  Este arquivo  parte do Biblivre3.
 *  
 *  Biblivre3  um software livre; voc pode redistribu-lo e/ou 
 *  modific-lo dentro dos termos da Licena Pblica Geral GNU como 
 *  publicada pela Fundao do Software Livre (FSF); na verso 3 da 
 *  Licena, ou (caso queira) qualquer verso posterior.
 *  
 *  Este programa  distribudo na esperana de que possa ser  til, 
 *  mas SEM NENHUMA GARANTIA; nem mesmo a garantia implcita de
 *  MERCANTIBILIDADE OU ADEQUAO PARA UM FIM PARTICULAR. Veja a
 *  Licena Pblica Geral GNU para maiores detalhes.
 *  
 *  Voc deve ter recebido uma cpia da Licena Pblica Geral GNU junto
 *  com este programa, Se no, veja em <http://www.gnu.org/licenses/>.
 * 
 *  @author Alberto Wagner <alberto@biblivre.org.br>
 *  @author Danniel Willian <danniel@biblivre.org.br>
 * 
 */

package mercury.tags;

import java.util.Properties;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

public class SetInitialLocale extends SimpleTagSupport {
    private static String errorJsp = "/jsp/login.jsp";
    private static String defaultLanguage = "pt_BR";
    protected Logger log = Logger.getLogger(this.getClass());

    @Override
    public void doTag() throws JspException {
        try {
            PageContext pageContext = (PageContext) getJspContext();

            if (pageContext.getServletContext().getAttribute("FIRST_EXECUTION") != null) {
                pageContext.getServletContext().removeAttribute("FIRST_EXECUTION");
                pageContext.getSession().removeAttribute("LAST_VISITED_PAGE");
                pageContext.getSession().removeAttribute("MESSAGE_TEXT");
                pageContext.getSession().removeAttribute("MESSAGE_LEVEL");
                pageContext.getSession().setAttribute("MESSAGE_TEXT", "DIALOG_VOID");
                pageContext.getSession().setAttribute("MESSAGE_LEVEL", "NORMAL");
            }

            String lastVisitedPage = (String) pageContext.getSession().getAttribute("LAST_VISITED_PAGE");
            if (lastVisitedPage == null || lastVisitedPage.trim().equals("")) {
                lastVisitedPage = errorJsp;
                pageContext.getSession().setAttribute("LAST_VISITED_PAGE", lastVisitedPage);
            }

            if ((String) pageContext.getSession().getAttribute("I18N") == null) {
                String locale = pageContext.getRequest().getLocale().toString();
                Properties languages = (Properties) pageContext.getServletContext().getAttribute("LANGUAGES");

                if (StringUtils.isNotBlank(locale) && languages.containsKey(locale)) {
                    pageContext.getSession().setAttribute("I18N", locale);
                } else {
                    pageContext.getSession().setAttribute("I18N", defaultLanguage);
                }
            }
        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
            throw new JspException("[mercury.SetInitialLocale.doTag()] Exception: " + ex.getMessage());
        }
    }
}