ingo@1022: /* ingo@1022: * Copyright (c) 2010 by Intevation GmbH ingo@1022: * ingo@1022: * This program is free software under the LGPL (>=v2.1) ingo@1022: * Read the file LGPL.txt coming with the software for details ingo@1022: * or visit http://www.gnu.org/licenses/ if it does not exist. ingo@1022: */ ingo@1022: ingo@706: package de.intevation.gnv.action; ingo@706: ingo@706: import de.intevation.gnv.action.sessionmodel.SessionModel; ingo@706: import de.intevation.gnv.action.sessionmodel.SessionModelFactory; ingo@965: import de.intevation.gnv.artifactdatabase.objects.ArtifactObject; ingo@706: ingo@706: import java.util.Locale; ingo@706: ingo@706: import javax.servlet.http.HttpServletRequest; ingo@706: import javax.servlet.http.HttpServletResponse; ingo@706: ingo@706: import org.apache.log4j.Logger; ingo@706: ingo@965: import org.apache.struts.Globals; ingo@706: import org.apache.struts.action.ActionForm; ingo@706: import org.apache.struts.action.ActionForward; ingo@706: import org.apache.struts.action.ActionMapping; ingo@706: ingo@706: /** ingo@706: * Toggle the current language used to create the user interface. Two ingo@706: * languages are available now - german and english. ingo@706: * ingo@706: * @author Ingo Weinzierl ingo@706: */ ingo@706: public class SwitchLanguageAction extends DescribeUIAction { ingo@706: ingo@706: public static Logger logger = Logger.getLogger(SwitchLanguageAction.class); ingo@706: ingo@706: @Override ingo@706: public ActionForward execute( ingo@706: ActionMapping mapping, ingo@706: ActionForm form, ingo@706: HttpServletRequest request, ingo@706: HttpServletResponse response ingo@706: ) throws Exception ingo@706: { ingo@991: if (isSessionExhausted(request)) { ingo@991: return sessionExhaustedForward(mapping, form, request, response); ingo@991: } ingo@991: ingo@706: SessionModelFactory factory = SessionModelFactory.getInstance(); ingo@706: SessionModel sm = factory.getSessionModel(request); ingo@965: Locale locale = switchLanguage(sm.getCurrentLocale()); ingo@706: ingo@965: sm.setCurrentLocale(locale); ingo@965: ArtifactObject artifactFactory = sm.getSelectedArtifactFactory(); ingo@965: ingo@965: if (artifactFactory == null) { ingo@965: request.getSession().setAttribute(Globals.LOCALE_KEY, locale); ingo@965: return mapping.findForward(SUCCSESS_FORWARD_ID); ingo@965: } ingo@706: ingo@706: return super.execute(mapping, form, request, response); ingo@706: } ingo@706: ingo@706: ingo@706: /** ingo@706: * This method toggles between german and english language. ingo@706: * ingo@706: * @param currentLocale The locale which is currently used. ingo@706: * @return an english locale, if the current locale is german - otherwise ingo@706: * a german locale. ingo@706: */ ingo@706: protected Locale switchLanguage(Locale currentLocale) { ingo@706: if (currentLocale.getLanguage().equals(Locale.GERMAN.getLanguage())) { ingo@706: logger.info("Switch from german to english locale."); ingo@706: return Locale.ENGLISH; ingo@706: } ingo@706: else { ingo@706: logger.info("Switch from english to german locale."); ingo@706: return Locale.GERMAN; ingo@706: } ingo@706: } ingo@706: } ingo@706: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :