1 package com.dotmarketing.cache; 2 3 import java.io.FileInputStream ; 4 import java.io.FileNotFoundException ; 5 import java.io.IOException ; 6 import java.util.Properties ; 7 8 import com.dotmarketing.portlets.languagesmanager.factories.LanguageFactory; 9 import com.dotmarketing.portlets.languagesmanager.model.Language; 10 import com.dotmarketing.util.Logger; 11 import com.dotmarketing.util.UtilMethods; 12 13 16 public class LanguageCache { 17 18 private static DotCache cache; 20 21 private static String providerEntry = "CACHE_PROVIDER"; 23 24 private static String propertiesEntry = "CACHE_PROPERTIES_FILE"; 26 27 private static String regionName = "LanguageCache"; 29 30 static 31 { 32 init(); 33 } 34 35 public static void addLanguage(Language l) 36 { 37 long id = l.getId(); 38 String idSt = String.valueOf(l.getId()); 39 String languageKey = l.getLanguageCode() + "-" + l.getCountryCode(); 40 cache.put(id, l); 41 cache.put(idSt, l); 42 cache.put(languageKey, l); 43 44 } 45 46 public static Language getLanguageById(long id) 47 { 48 Language f = (Language) cache.get(id); 49 if (f == null) { 50 f = LanguageFactory.getLanguage(id); 51 addLanguage(f); 52 } 53 return f; 54 } 55 56 public static Language getLanguageById(String id) 57 { 58 Language f = (Language) cache.get(id); 59 if (f == null) { 60 f = LanguageFactory.getLanguage(id); 61 addLanguage(f); 62 } 63 return f; 64 } 65 66 public static Language getLanguageByCode(String languageCode, String countryCode) 67 { 68 String languageKey = languageCode + "-" + countryCode; 69 Language l = (Language) cache.get(languageKey); 70 if (l == null) { 71 l = LanguageFactory.getLanguage(languageCode, countryCode); 72 addLanguage(l); 73 } 74 75 return l; 76 } 77 78 public boolean hasLanguage (String id) { 79 Language l = (Language) cache.get(id); 80 return l != null; 81 } 82 83 public boolean hasLanguage (long id) { 84 Language l = (Language) cache.get(id); 85 return l != null; 86 } 87 88 public boolean hasLanguage (String languageCode, String countryCode) { 89 String languageKey = languageCode + "-" + countryCode; 90 Language l = (Language) cache.get(languageKey); 91 return l != null; 92 } 93 94 public static void removeLanguage(Language l) 95 { 96 long id = l.getId(); 97 String idSt = String.valueOf(l.getId()); 98 String languageKey = l.getLanguageCode() + "-" + l.getCountryCode(); 99 cache.remove(id); 100 cache.remove(idSt); 101 cache.remove(languageKey); 102 } 103 104 public static void clearCache() 105 { 106 cache.clear(); 108 } 109 110 private static void init() 111 { 112 try 113 { 114 Properties WorkingProperties = new Properties (); 115 String cacheProviderClassName = com.dotmarketing.util.Config.getStringProperty(providerEntry); 116 try { 117 String propertyFilePath = com.dotmarketing.util.Config.getStringProperty(propertiesEntry); 118 if (UtilMethods.isSet(propertyFilePath)) { 119 FileInputStream fileInputStream = new FileInputStream (propertyFilePath); 120 WorkingProperties.load(fileInputStream); 121 } 122 } catch (FileNotFoundException ex) { 123 124 String propertyFileNotFound = "The property file has been no found \n"; 125 Logger.debug(LanguageCache.class, propertyFileNotFound + ex.getMessage()); 126 } catch (IOException ex) { 127 Logger.debug(LanguageCache.class, ex.getMessage()); 128 } 129 finally 130 { 131 cache = new DotCache(cacheProviderClassName, regionName,WorkingProperties); 132 } 133 } 134 catch(Exception ex) 135 { 136 Logger.error(LanguageCache.class,ex.toString()); 137 } 138 } 139 } 140 | Popular Tags |