/* * JBoss, Home of Professional Open Source * Copyright 2010, Red Hat, Inc., and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.services.resources; import java.util.List; import java.util.Locale; import java.util.Set; /** * Data structure that holds the inputs for {@link LocalePolicy} pluggable policies mechanism. * * @author <a href="mailto:mstrukel@redhat.com">Marko Strukelj</a> */ public class LocaleContextInfo { private Set<Locale> supportedLocales; private List<Locale> browserLocales; private List<Locale> cookieLocales; private Locale userProfileLocale; private String remoteUser; private Locale portalLocale; private Locale sessionLocale; private Locale requestLocale; /** * Setter for supportedLocales * * @param supportedLocales locales supported by portal */ public void setSupportedLocales(Set<Locale> supportedLocales) { this.supportedLocales = supportedLocales; } /** * Getter for supportedLocales * * @return supportedLocales */ public Set<Locale> getSupportedLocales() { return supportedLocales; } /** * Setter for browserLocales * * @param browserLocales list of locales as preferred by client's browser */ public void setBrowserLocales(List<Locale> browserLocales) { this.browserLocales = browserLocales; } /** * Getter for browserLocales * * @return browserLocales */ public List<Locale> getBrowserLocales() { return browserLocales; } /** * Setter for cookieLocales * * @param cookieLocales locales stored in user's browser cookie */ public void setCookieLocales(List<Locale> cookieLocales) { this.cookieLocales = cookieLocales; } /** * Getter for cookieLocales * * @return cookieLocales */ public List<Locale> getCookieLocales() { return cookieLocales; } /** * Setter for userProfileLocale * * @param userProfileLocale locale loaded from user's profile */ public void setUserProfileLocale(Locale userProfileLocale) { this.userProfileLocale = userProfileLocale; } /** * Getter for userProfileLocale * * @return userProfileLocale */ public Locale getUserProfileLocale() { return userProfileLocale; } /** * Setter for remoteUser * * @param remoteUser username of the currently logged in user. Null for anonymous users. */ public void setRemoteUser(String remoteUser) { this.remoteUser = remoteUser; } /** * Getter for remoteUser * * @return remoteUser */ public String getRemoteUser() { return remoteUser; } /** * Setter for portalLocale * * @param portalLocale default locale configured for the portal */ public void setPortalLocale(Locale portalLocale) { this.portalLocale = portalLocale; } /** * Getter for portalLocale * * @return portalLocale */ public Locale getPortalLocale() { return portalLocale; } /** * Setter for sessionLocale * * @param locale Locale stored in current session */ public void setSessionLocale(Locale locale) { this.sessionLocale = locale; } /** * Getter for sessionLocale * * @return sessionLocale */ public Locale getSessionLocale() { return sessionLocale; } /** * Getter for requestLocale * * @return requestLocale */ public Locale getRequestLocale() { return requestLocale; } /** * Setter for requestLocale * * @param requestLocale default locale configured for the request */ public void setRequestLocale(Locale requestLocale) { this.requestLocale = requestLocale; } /** * Helper method that returns the locale only if it's supported by portal. Otherwise it returns null. * * @param locale locale to check * @return original locale if supported, null otherwise */ public Locale getLocaleIfSupported(Locale locale) { if (locale == null) return null; if (supportedLocales.contains(locale)) return locale; return null; } /** * Helper method that returns the locale only if it's language is supported by portal. Otherwise it returns null. * * @param locale locale to check * @return original locale if language is supported, null otherwise */ public Locale getLocaleIfLangSupported(Locale locale) { if (locale == null) return null; if (supportedLocales.contains(locale)) return locale; if ("".equals(locale.getCountry()) == false) { Locale loc = new Locale(locale.getLanguage()); if (supportedLocales.contains(loc)) { // return original locale return locale; } } return null; } /** * Helper method to convert String representation of Locale into Locale object. * * @param portalLocaleName String representation of Locale * @return locale */ public static Locale getLocale(String portalLocaleName) { int pos = portalLocaleName.indexOf("_"); if (pos < 0) return new Locale(portalLocaleName); return new Locale(portalLocaleName.substring(0, pos), portalLocaleName.substring(pos + 1)); } /** * Helper method to get a String representation of the Locale * * @param locale * @return String representation of the locale */ public static String getLocaleAsString(Locale locale) { if (locale.getCountry().length() == 0) return locale.getLanguage(); return locale.getLanguage() + "_" + locale.getCountry(); } }