KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > util > LanguageProperties


1 package com.dotmarketing.util;
2
3 import java.io.File JavaDoc;
4 import java.io.FileInputStream JavaDoc;
5 import java.io.IOException JavaDoc;
6 import java.io.InputStream JavaDoc;
7 import java.io.InputStreamReader JavaDoc;
8 import java.util.Calendar JavaDoc;
9 import java.util.Date JavaDoc;
10 import java.util.GregorianCalendar JavaDoc;
11 import java.util.HashMap JavaDoc;
12 import java.util.Iterator JavaDoc;
13 import java.util.Map JavaDoc;
14
15 import org.apache.commons.configuration.PropertiesConfiguration;
16
17 public class LanguageProperties {
18
19     // Config internal properties
20
private static Map JavaDoc<Integer JavaDoc, Date JavaDoc> lastRefreshTimes = new HashMap JavaDoc<Integer JavaDoc, Date JavaDoc>();
21     private static Map JavaDoc<Integer JavaDoc, PropertiesConfiguration> languageProps = new HashMap JavaDoc<Integer JavaDoc, PropertiesConfiguration>();
22
23     // Config internal methods
24
public static void initializeConfig() {
25     }
26
27     private static Date JavaDoc getLastRefreshTime(int languageId) {
28         return lastRefreshTimes.get(languageId);
29     }
30
31     private static void setLastRefreshTime(int languageId, Date JavaDoc newTime) {
32         lastRefreshTimes.put(languageId, newTime);
33     }
34
35     private static void _loadProperties(int languageId) {
36         String JavaDoc globalVarsPath = Config.getStringProperty("GLOBAL_VARIABLES_PATH");
37         if (!UtilMethods.isSet(globalVarsPath)) {
38             globalVarsPath = "/../common/ext-ejb/content/";
39         }
40         if (!globalVarsPath.endsWith("/"))
41             globalVarsPath = globalVarsPath + File.separator;
42
43         String JavaDoc filePath = globalVarsPath + "cms_language_" + languageId + ".properties";
44         File JavaDoc f = new File JavaDoc(filePath);
45         try {
46             if (!f.exists()) {
47                 Logger.info("The properties file: " + filePath + " doesn't exist, creating it!");
48                 if (!f.createNewFile()) {
49                     Logger.error("Unable to create the file, doing nothing!");
50                     return;
51                 }
52             } else {
53                 if (!f.canRead()) {
54                     Logger.error("Unable to read the file, the properties will not to be reloaded.");
55                     return;
56                 }
57             }
58         } catch (IOException JavaDoc e) {
59             Logger.warn("Unable to reload the properties. Returning without reload.", e);
60             return;
61         }
62
63         PropertiesConfiguration props = new PropertiesConfiguration();
64
65         Date JavaDoc lastModified = new Date JavaDoc(f.lastModified());
66         Date JavaDoc lastRefreshTime = getLastRefreshTime(languageId);
67         if (lastRefreshTime == null || lastModified.after(lastRefreshTime)) {
68             try {
69                 Logger.info(Config.class, "Loading Language: " + languageId + " Properties...");
70                 InputStream JavaDoc propsInputStream = new FileInputStream JavaDoc(f);
71                 props.load(new InputStreamReader JavaDoc(propsInputStream));
72                 propsInputStream.close();
73                 languageProps.put(languageId, props);
74                 Logger.info(Config.class, "Language: " + languageId + " Properties Loaded");
75             } catch (Exception JavaDoc e) {
76                 Logger.error(Config.class, "Unable to load the properties at: " + filePath, e);
77             }
78         }
79
80         setLastRefreshTime(languageId, new Date JavaDoc());
81
82     }
83
84     private static PropertiesConfiguration _refreshProperties(int languageId) {
85         int refreshInterval = Config.getIntProperty("LANGUAGES_REFRESH_INTERVAL");
86         Calendar cal = new GregorianCalendar JavaDoc();
87         Calendar calNow = new GregorianCalendar JavaDoc();
88         calNow.setTimeInMillis(System.currentTimeMillis());
89         Date JavaDoc lastRefreshTime = getLastRefreshTime(languageId);
90         if (lastRefreshTime != null)
91             cal.setTime(lastRefreshTime);
92         cal.add(Calendar.MINUTE, refreshInterval);
93         if (lastRefreshTime == null || cal.before(calNow)) {
94             _loadProperties(languageId);
95         }
96         return languageProps.get(languageId);
97     }
98
99     // Config get and set properties methods
100
public static String JavaDoc getStringProperty(int languageId, String JavaDoc name) {
101         PropertiesConfiguration props = _refreshProperties(languageId);
102         String JavaDoc[] propsArr = props.getStringArray(name);
103         String JavaDoc property = new String JavaDoc();
104         int i = 0;
105         for (String JavaDoc propItem : propsArr) {
106             if (i > 0)
107                 property += ",";
108             property += propItem;
109             i++;
110         }
111         return property;
112     }
113
114     public static String JavaDoc[] getStringArrayProperty(int languageId, String JavaDoc name) {
115         PropertiesConfiguration props = _refreshProperties(languageId);
116         return props.getStringArray(name);
117     }
118
119     public static int getIntProperty(int languageId, String JavaDoc name) {
120         PropertiesConfiguration props = _refreshProperties(languageId);
121         return props.getInt(name);
122     }
123
124     public static int getIntProperty(int languageId, String JavaDoc name, int defaultVal) {
125         PropertiesConfiguration props = _refreshProperties(languageId);
126         return props.getInt(name, defaultVal);
127     }
128
129     public static float getFloatProperty(int languageId, String JavaDoc name) {
130         PropertiesConfiguration props = _refreshProperties(languageId);
131         return props.getFloat(name);
132     }
133
134     public static float getFloatProperty(int languageId, String JavaDoc name, float defaultVal) {
135         PropertiesConfiguration props = _refreshProperties(languageId);
136         return props.getFloat(name, defaultVal);
137     }
138
139     public static boolean getBooleanProperty(int languageId, String JavaDoc name) {
140         PropertiesConfiguration props = _refreshProperties(languageId);
141         return props.getBoolean(name);
142     }
143
144     public static boolean getBooleanProperty(int languageId, String JavaDoc name, boolean defaultVal) {
145         PropertiesConfiguration props = _refreshProperties(languageId);
146         return props.getBoolean(name, defaultVal);
147     }
148
149     public static Iterator JavaDoc getKeys(int languageId) {
150         PropertiesConfiguration props = _refreshProperties(languageId);
151         return props.getKeys();
152     }
153
154 }
155
Popular Tags