KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.dotmarketing.util;
2
3 import java.io.File JavaDoc;
4 import java.io.FileInputStream JavaDoc;
5 import java.io.InputStream JavaDoc;
6 import java.io.InputStreamReader JavaDoc;
7 import java.net.URL JavaDoc;
8 import java.util.Calendar JavaDoc;
9 import java.util.Date JavaDoc;
10 import java.util.GregorianCalendar JavaDoc;
11 import java.util.Iterator JavaDoc;
12 import java.util.NoSuchElementException JavaDoc;
13
14 import org.apache.commons.configuration.PropertiesConfiguration;
15
16 import com.dotmarketing.db.DbConnectionFactory;
17
18 public class Config {
19     
20     //Object Config properties
21
public static javax.servlet.ServletContext JavaDoc CONTEXT = null;
22     public static String JavaDoc CONTEXT_PATH = null;
23
24     //PERMISSION CONSTANTS
25
public static final int PERMISSION_READ = 1;
26     public static final int PERMISSION_WRITE = 2;
27     public static final int PERMISSION_PUBLISH = 4;
28     
29     //Config internal properties
30
private static int refreshInterval = 1; //In minutes, Default 5 can be overrided in the config file as config.refreshinterval int property
31
private static Date JavaDoc lastRefreshTime = new Date JavaDoc ();
32     
33     private static PropertiesConfiguration props = null;
34     private static ClassLoader JavaDoc classLoader = null;
35     private static URL JavaDoc url = null;
36     
37     //Config internal methods
38
public static void initializeConfig () {
39         classLoader = Thread.currentThread().getContextClassLoader();
40         _loadProperties();
41     }
42     
43     private static void _loadProperties () {
44         if (classLoader == null) {
45             classLoader = Thread.currentThread().getContextClassLoader();
46             Logger.warn(Config.class, "Exception loading properties: classloader not found, the config was never initialized.");
47         }
48         if (url == null)
49             url = classLoader.getResource("dotmarketing-config.properties");
50         
51         if (url != null) {
52             File JavaDoc f = new File JavaDoc(url.getPath());
53             Date JavaDoc lastModified = new Date JavaDoc(f.lastModified());
54             if (lastModified.after(lastRefreshTime) || props == null) {
55                 try {
56                     Logger.info(Config.class, "Loading DOTMARKETING Properties...");
57                     InputStream JavaDoc propsInputStream = new FileInputStream JavaDoc (f);
58                     Config.props = new PropertiesConfiguration ();
59                     props.load(new InputStreamReader JavaDoc(propsInputStream));
60                     propsInputStream.close();
61                     try {
62                         int interval = props.getInt("config.refreshinterval");
63                         refreshInterval = interval;
64                         Logger.info(Config.class, "Assigned custom refresh interval: " + interval + " minutes.");
65                     } catch (NoSuchElementException JavaDoc e) {
66                         Logger.info(Config.class, "Assigned default refresh interval: " + refreshInterval + " minutes.");
67                     }
68                     Logger.info(Config.class, "DOTMARKETING Properties Loaded");
69                 } catch (Exception JavaDoc e) {
70                     Logger.fatal(Config.class, "Exception loading properties", e);
71                     props = null;
72                 }
73             }
74             Config.lastRefreshTime = new Date JavaDoc ();
75         } else {
76             Logger.fatal(Config.class, "DOTMARKETING Properties file (dotmarketing-config.properties) not found.");
77         }
78     }
79
80     private static void _refreshProperties () {
81         Calendar cal = new GregorianCalendar JavaDoc ();
82         Calendar calNow = new GregorianCalendar JavaDoc ();
83         calNow.setTimeInMillis(System.currentTimeMillis());
84         cal.setTime(lastRefreshTime);
85         cal.add(Calendar.MINUTE, refreshInterval);
86         if (cal.before(calNow) || props == null) {
87             _loadProperties();
88         }
89     }
90     
91     //Config get and set properties methods
92
public static String JavaDoc getStringProperty (String JavaDoc name) {
93         _refreshProperties ();
94         String JavaDoc[] propsArr = props.getStringArray(name);
95         String JavaDoc property = new String JavaDoc ();
96         int i = 0;
97         for (String JavaDoc propItem : propsArr) {
98             if (i > 0)
99                 property += ",";
100             property += propItem;
101             i++;
102         }
103         return property;
104     }
105     
106     public static String JavaDoc[] getStringArrayProperty (String JavaDoc name) {
107         _refreshProperties ();
108         return props.getStringArray(name);
109     }
110
111     public static int getIntProperty (String JavaDoc name) {
112         _refreshProperties ();
113         return props.getInt(name);
114     }
115
116     public static int getIntProperty (String JavaDoc name, int defaultVal) {
117         _refreshProperties ();
118         return props.getInt(name, defaultVal);
119     }
120
121     public static float getFloatProperty (String JavaDoc name) {
122         _refreshProperties ();
123         return props.getFloat(name);
124     }
125
126     public static float getFloatProperty (String JavaDoc name, float defaultVal) {
127         _refreshProperties ();
128         return props.getFloat(name, defaultVal);
129     }
130
131     public static boolean getBooleanProperty (String JavaDoc name) {
132         _refreshProperties ();
133         return props.getBoolean(name);
134     }
135
136     public static boolean getBooleanProperty (String JavaDoc name, boolean defaultVal) {
137         _refreshProperties ();
138         return props.getBoolean(name, defaultVal);
139     }
140
141     public static Iterator JavaDoc getKeys () {
142         _refreshProperties ();
143         return props.getKeys();
144     }
145     
146     //Other Config Methods
147

148     public static final java.util.List JavaDoc reservedFolderNames = new java.util.ArrayList JavaDoc();
149     
150     @SuppressWarnings JavaDoc("unchecked")
151     public static void setReservedFolders() {
152         reservedFolderNames.add("WEB-INF");
153         reservedFolderNames.add("META-INF");
154     }
155
156     // Spindle Config
157
public static void setMyApp(javax.servlet.ServletContext JavaDoc myApp) {
158         CONTEXT = myApp;
159         CONTEXT_PATH = myApp.getRealPath("/");
160     }
161
162     public static String JavaDoc getLimitOffsetQuery(int limit, int offset) {
163         String JavaDoc db = DbConnectionFactory.getDBType();
164         
165         if (db.equals("PostgreSQL")){
166             return " limit " + limit + " offset " + offset;
167         }
168         else if (db.equals("MySQL")){
169             return " limit " + offset + " ," + limit;
170         }
171         return "";
172     }
173     
174
175
176 }
177
Popular Tags