1 23 24 package org.mdarad.framework.util.struts; 25 26 import org.apache.struts.Globals; 27 import org.dataisland.primitives.bean.LocalizationContext; 28 import org.dataisland.primitives.util.Keys; 29 import org.dataisland.primitives.util.LocalizationUtils; 30 31 import javax.servlet.http.HttpServletRequest ; 32 import java.util.ArrayList ; 33 import java.util.Collections ; 34 import java.util.Enumeration ; 35 import java.util.Iterator ; 36 import java.util.List ; 37 import java.util.Locale ; 38 import java.util.SortedMap ; 39 import java.util.TreeMap ; 40 41 42 public class StrutsLocalizationUtils { 43 44 protected static LocalizationContext createLocalizationContext(HttpServletRequest httpServletRequest) { 45 46 LocalizationContext localizationContext = new LocalizationContext(); 47 48 List localeList = new ArrayList (); 49 50 Locale locale = (Locale ) httpServletRequest.getSession().getAttribute(Globals.LOCALE_KEY); 51 localeList.add(locale); 52 53 Enumeration localeEnumeration = httpServletRequest.getLocales(); 54 while (localeEnumeration.hasMoreElements()) { 55 Locale requestLocale = (Locale ) localeEnumeration.nextElement(); 56 if (!localeList.contains(requestLocale)) { 57 localeList.add(requestLocale); 58 } 59 } 60 61 localizationContext.setLocales(localeList); 62 63 return localizationContext; 64 } 65 66 public static void cacheLocalizationContext(HttpServletRequest httpServletRequest, LocalizationContext localizationContext) { 67 httpServletRequest.getSession().setAttribute(org.dataisland.primitives.util.Keys.LOCALIZATIONCONTEXT_KEY, localizationContext); 68 } 69 70 74 public static LocalizationContext getLocalizationContext(HttpServletRequest httpServletRequest) { 75 LocalizationContext localizationContext = (LocalizationContext) httpServletRequest.getSession().getAttribute(Keys.LOCALIZATIONCONTEXT_KEY); 76 if (localizationContext == null) { 77 localizationContext = createLocalizationContext(httpServletRequest); 78 cacheLocalizationContext(httpServletRequest, localizationContext); 79 } 80 81 return localizationContext; 82 } 83 84 public static LocalizationContext getCompositeLocalizationContext(HttpServletRequest httpServletRequest, String localizationContextHumanReadableKey) throws org.dataisland.primitives.exception.LocalizationException { 85 LocalizationContext output = (LocalizationContext) httpServletRequest.getAttribute(org.dataisland.primitives.util.Keys.LOCALIZATIONCONTEXT_KEY); 86 if (output == null) { 87 org.dataisland.primitives.bean.LocalizationContext clientLocalizationContext = getLocalizationContext(httpServletRequest); 88 output = org.mdarad.framework.facade.LocalizationFacade.getInstance().buildLocalizationContext(clientLocalizationContext, localizationContextHumanReadableKey); 89 httpServletRequest.setAttribute(org.dataisland.primitives.util.Keys.LOCALIZATIONCONTEXT_KEY, output); 90 } 91 return output; 92 } 93 94 95 static public void processLocale(HttpServletRequest httpServletRequest, String localizationContextHumanReadableKey) throws org.dataisland.primitives.exception.LocalizationException { 96 LocalizationContext clientLocalizationContext = getLocalizationContext(httpServletRequest); 97 LocalizationContext compositeLocalizationContext = org.mdarad.framework.facade.LocalizationFacade.getInstance().buildLocalizationContext(clientLocalizationContext, localizationContextHumanReadableKey); 98 List locales = compositeLocalizationContext.getLocales(); 99 100 Locale locale = (Locale ) locales.get(0); 101 httpServletRequest.getSession().setAttribute(Globals.LOCALE_KEY, locale); 102 103 List sortedLocales = new ArrayList (locales); 105 Collections.sort(sortedLocales, LocalizationUtils.getDefaultLocaleComparator()); 106 107 httpServletRequest.setAttribute(Keys.LOCALES_KEY, sortedLocales); 108 } 109 110 public static SortedMap getEmptyStringKeyedMap(List locales) { 111 SortedMap lOutputMap = new TreeMap (org.dataisland.primitives.util.LocalizationUtils.getDefaultObjectComparator()); 112 Iterator localeIterator = locales.iterator(); 113 114 while (localeIterator.hasNext()) { 115 Locale localeKey = (Locale ) localeIterator.next(); 116 lOutputMap.put(localeKey.toString(), ""); 117 } 118 119 return lOutputMap; 120 } 121 } | Popular Tags |