1 4 package com.nightlabs.ipanema.language; 5 6 import java.util.ArrayList ; 7 import java.util.HashMap ; 8 import java.util.Iterator ; 9 import java.util.List ; 10 import java.util.Map ; 11 12 import com.nightlabs.ipanema.base.login.Login; 13 import com.nightlabs.ipanema.language.Language; 14 import com.nightlabs.ipanema.language.LanguageManager; 15 import com.nightlabs.ipanema.language.LanguageManagerUtil; 16 import com.nightlabs.rcp.exceptionhandler.ExceptionHandlerRegistry; 17 18 24 public class LanguageCache 25 { 26 private static LanguageCache _sharedInstance = null; 27 public static LanguageCache sharedInstance() 28 { 29 if (_sharedInstance == null) { 30 _sharedInstance = new LanguageCache(); 31 } 32 return _sharedInstance; 33 } 34 35 protected List languages = new ArrayList (); 36 protected Map languagesByLanguageID = new HashMap (); 37 38 public LanguageCache() 39 { 40 try { 41 LanguageManager languageManager = LanguageManagerUtil.getHome( 42 Login.getLogin().getInitialContextProperties()).create(); 43 44 for (Iterator it = languageManager.getLanguages().iterator(); it.hasNext(); ) { 45 Language language = (Language) it.next(); 46 languages.add(language); 47 languagesByLanguageID.put(language.getLanguageID(), language); 48 } 49 50 languageManager.remove(); 51 52 if (languages.size() < 1) 53 throw new IllegalStateException ("There is no language registered in the server!"); 54 } catch (RuntimeException e) { 55 ExceptionHandlerRegistry.asyncHandleException(e); 56 throw e; 57 } catch (Exception e) { 58 ExceptionHandlerRegistry.asyncHandleException(e); 59 throw new RuntimeException (e); 60 } 61 } 62 63 68 public List getLanguages() 69 { 70 return languages; 71 } 72 73 83 public Language getLanguage(String languageID) 84 throws UnknownLanguageException 85 { 86 return getLanguage(languageID, true); 87 } 88 89 99 public Language getLanguage(String languageID, boolean throwExceptionIfNotExistent) 100 throws UnknownLanguageException 101 { 102 Language l = (Language) languagesByLanguageID.get(languageID); 103 if (l == null && throwExceptionIfNotExistent) 104 throw new UnknownLanguageException("Language \""+languageID+"\" does not exist!"); 105 return l; 106 } 107 } 108 | Popular Tags |