1 package eu
.etaxonomy
.cdm
.remote
.l10n
;
3 import java
.util
.Enumeration
;
4 import java
.util
.Hashtable
;
6 import java
.util
.Locale
;
7 import java
.util
.Vector
;
9 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
10 import org
.springframework
.stereotype
.Component
;
12 import eu
.etaxonomy
.cdm
.api
.service
.ITermService
;
13 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
16 public class LocaleContext
{
18 protected static ThreadLocal
<Vector
<Locale
>> localesHolder
= new ThreadLocal
<Vector
<Locale
>>(){
21 protected Vector
<Locale
> initialValue() {
22 return new Vector
<Locale
>();
27 protected static Hashtable
<String
, List
<Language
>> languageMap
= new Hashtable
<String
, List
<Language
>>();
29 private static ITermService termService
;
32 public void setTermService(ITermService termService
) {
33 this.termService
= termService
;
36 public static void setLocales(Enumeration
<Locale
> locales
) {
37 Vector
<Locale
> l
= new Vector
<Locale
>();
38 while(locales
.hasMoreElements()){
39 l
.add(locales
.nextElement());
41 LocaleContext
.localesHolder
.set(l
);
45 public static Enumeration
<Locale
> getLocales(){
46 return localesHolder
.get().elements();
53 public static List
<Language
> getLanguages(){
54 String localesKey
= composeLocalesKey(getLocales());
55 return languageMap
.get(localesKey
);
58 private static void mapToLanguages(Vector
<Locale
> locales
) {
60 String localesKey
= composeLocalesKey(locales
.elements());
62 if(!languageMap
.containsKey(localesKey
)){
63 List
<Language
> languages
= termService
.getLanguagesByLocale(locales
.elements());
64 languageMap
.put(localesKey
, languages
);
68 private static String
composeLocalesKey(Enumeration
<Locale
> locales
) {
69 String localesKey
= "";
70 while(locales
.hasMoreElements()){
71 localesKey
+= locales
.nextElement() + ",";