X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fnetwork%2FLocaleConfiguration.java;fp=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fnetwork%2FLocaleConfiguration.java;h=2230885078fcc3ae95bf09d1bac0bf93d558e699;hb=869bf9eeef97f5364d46b76f64c94cec67846c28;hp=0000000000000000000000000000000000000000;hpb=aa03fa52face6f13f8da2e9b89e798671653a074;p=svjatoslav_commons.git diff --git a/src/main/java/eu/svjatoslav/commons/network/LocaleConfiguration.java b/src/main/java/eu/svjatoslav/commons/network/LocaleConfiguration.java new file mode 100755 index 0000000..2230885 --- /dev/null +++ b/src/main/java/eu/svjatoslav/commons/network/LocaleConfiguration.java @@ -0,0 +1,63 @@ +/* + * Svjatoslav Commons - shared library of common functionality. + * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 3 of the GNU Lesser General Public License + * or later as published by the Free Software Foundation. + */ + +package eu.svjatoslav.commons.network; + +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +public class LocaleConfiguration { + + Locale defaultLocale; + + private final List allowedLocales = new ArrayList(); + + public LocaleConfiguration(final Locale defaultLocale, + final Locale... allowedLocales) { + + this.defaultLocale = defaultLocale; + + for (final Locale locale : allowedLocales) + this.getAllowedLocales().add(locale); + } + + public Locale detectCurrentLocale(final HttpServletRequest request) { + + final String sessionLocaleString = (String) request.getSession() + .getAttribute("locale"); + + Locale result = localeFromString(sessionLocaleString); + if (result == null) + result = defaultLocale; + + final Locale requestLocale = localeFromString(request + .getParameter("locale")); + if (requestLocale != null) + result = requestLocale; + + request.getSession().setAttribute("locale", result.asString()); + + return result; + } + + private Locale localeFromString(final String localeString) { + for (final Locale locale : getAllowedLocales()) + if (locale.asString().equals(localeString)) + return locale; + + return null; + } + + public List getAllowedLocales() { + return allowedLocales; + } + +}