001: /* Copyright 2002 The JA-SIG Collaborative. All rights reserved.
002: * See license distributed with this file and
003: * available online at http://www.uportal.org/license.html
004: */
005:
006: package org.jasig.portal.services.stats;
007:
008: import org.jasig.portal.properties.PropertiesManager;
009: import org.apache.commons.logging.Log;
010: import org.apache.commons.logging.LogFactory;
011:
012: /**
013: * This class is responsible for maintaining the on/off settings
014: * for each type of portal event that the StatsRecorder can record.
015: * StatsRecorder will consult with this class before it attempts
016: * to record an event. The initial values for each setting will
017: * be read upon portal startup from portal.properties. At runtime,
018: * the settings in this class can be controlled via
019: * <code>StatsRecorder.set()</code>.
020: * @author Ken Weiner, kweiner@unicon.net
021: * @version $Revision: 34788 $
022: */
023: public class StatsRecorderSettings {
024:
025: private static final Log log = LogFactory
026: .getLog(StatsRecorderSettings.class);
027:
028: // Types of portal events that StatsRecorder can record
029: public static final int RECORD_LOGIN = 0;
030: public static final int RECORD_LOGOUT = 1;
031: public static final int RECORD_SESSION_CREATED = 2;
032: public static final int RECORD_SESSION_DESTROYED = 3;
033: public static final int RECORD_CHANNEL_DEFINITION_PUBLISHED = 4;
034: public static final int RECORD_CHANNEL_DEFINITION_MODIFIED = 5;
035: public static final int RECORD_CHANNEL_DEFINITION_REMOVED = 6;
036: public static final int RECORD_CHANNEL_ADDED_TO_LAYOUT = 7;
037: public static final int RECORD_CHANNEL_UPDATED_IN_LAYOUT = 8;
038: public static final int RECORD_CHANNEL_MOVED_IN_LAYOUT = 9;
039: public static final int RECORD_CHANNEL_REMOVED_FROM_LAYOUT = 10;
040: public static final int RECORD_FOLDER_ADDED_TO_LAYOUT = 11;
041: public static final int RECORD_FOLDER_UPDATED_IN_LAYOUT = 12;
042: public static final int RECORD_FOLDER_MOVED_IN_LAYOUT = 13;
043: public static final int RECORD_FOLDER_REMOVED_FROM_LAYOUT = 14;
044: public static final int RECORD_CHANNEL_INSTANTIATED = 15;
045: public static final int RECORD_CHANNEL_RENDERED = 16;
046: public static final int RECORD_CHANNEL_TARGETED = 17;
047:
048: // The settings...
049: private boolean recordLogin = false;
050: private boolean recordLogout = false;
051: private boolean recordSessionCreated = false;
052: private boolean recordSessionDestroyed = false;
053: private boolean recordChannelDefinitionPublished = false;
054: private boolean recordChannelDefinitionModified = false;
055: private boolean recordChannelDefinitionRemoved = false;
056: private boolean recordChannelAddedToLayout = false;
057: private boolean recordChannelUpdatedInLayout = false;
058: private boolean recordChannelMovedInLayout = false;
059: private boolean recordChannelRemovedFromLayout = false;
060: private boolean recordFolderAddedToLayout = false;
061: private boolean recordFolderUpdatedInLayout = false;
062: private boolean recordFolderMovedInLayout = false;
063: private boolean recordFolderRemovedFromLayout = false;
064: private boolean recordChannelInstantiated = false;
065: private boolean recordChannelRendered = false;
066: private boolean recordChannelTargeted = false;
067:
068: private static StatsRecorderSettings settingsInstance = null;
069:
070: /**
071: * Constructor with private access so that StatsRecorderSettings
072: * maintains only one instance of itself.
073: */
074: private StatsRecorderSettings() {
075: try {
076: String prefix = this .getClass().getName() + ".";
077: // Read in the initial settings from portal.properties
078: recordLogin = PropertiesManager.getPropertyAsBoolean(prefix
079: + "recordLogin");
080: recordLogout = PropertiesManager
081: .getPropertyAsBoolean(prefix + "recordLogout");
082: recordSessionCreated = PropertiesManager
083: .getPropertyAsBoolean(prefix
084: + "recordSessionCreated");
085: recordSessionDestroyed = PropertiesManager
086: .getPropertyAsBoolean(prefix
087: + "recordSessionDestroyed");
088: recordChannelDefinitionPublished = PropertiesManager
089: .getPropertyAsBoolean(prefix
090: + "recordChannelDefinitionPublished");
091: recordChannelDefinitionModified = PropertiesManager
092: .getPropertyAsBoolean(prefix
093: + "recordChannelDefinitionModified");
094: recordChannelDefinitionRemoved = PropertiesManager
095: .getPropertyAsBoolean(prefix
096: + "recordChannelDefinitionRemoved");
097: recordChannelAddedToLayout = PropertiesManager
098: .getPropertyAsBoolean(prefix
099: + "recordChannelAddedToLayout");
100: recordChannelUpdatedInLayout = PropertiesManager
101: .getPropertyAsBoolean(prefix
102: + "recordChannelUpdatedInLayout");
103: recordChannelMovedInLayout = PropertiesManager
104: .getPropertyAsBoolean(prefix
105: + "recordChannelMovedInLayout");
106: recordChannelRemovedFromLayout = PropertiesManager
107: .getPropertyAsBoolean(prefix
108: + "recordChannelRemovedFromLayout");
109: recordFolderAddedToLayout = PropertiesManager
110: .getPropertyAsBoolean(prefix
111: + "recordFolderAddedToLayout");
112: recordFolderUpdatedInLayout = PropertiesManager
113: .getPropertyAsBoolean(prefix
114: + "recordFolderUpdatedInLayout");
115: recordFolderMovedInLayout = PropertiesManager
116: .getPropertyAsBoolean(prefix
117: + "recordFolderMovedInLayout");
118: recordFolderRemovedFromLayout = PropertiesManager
119: .getPropertyAsBoolean(prefix
120: + "recordFolderRemovedFromLayout");
121: recordChannelInstantiated = PropertiesManager
122: .getPropertyAsBoolean(prefix
123: + "recordChannelInstantiated");
124: recordChannelRendered = PropertiesManager
125: .getPropertyAsBoolean(prefix
126: + "recordChannelRendered");
127: recordChannelTargeted = PropertiesManager
128: .getPropertyAsBoolean(prefix
129: + "recordChannelTargeted");
130:
131: } catch (Exception e) {
132: log.error("Error instantiating StatsRecorderSettings", e);
133: }
134: }
135:
136: /**
137: * Creates an instance of StatsRecorderSettings.
138: * @return settingsInstance, a <code>StatsRecorderSettings</code>
139: * instance
140: */
141: public final static synchronized StatsRecorderSettings instance() {
142: if (settingsInstance == null) {
143: settingsInstance = new StatsRecorderSettings();
144: }
145: return settingsInstance;
146: }
147:
148: /**
149: * Get the value of a particular setting.
150: * @param setting the setting
151: * @return value the value for the setting
152: */
153: public boolean get(int setting) {
154: boolean value = false;
155: switch (setting) {
156: case RECORD_LOGIN:
157: value = recordLogin;
158: break;
159: case RECORD_LOGOUT:
160: value = recordLogout;
161: break;
162: case RECORD_SESSION_CREATED:
163: value = recordSessionCreated;
164: break;
165: case RECORD_SESSION_DESTROYED:
166: value = recordSessionDestroyed;
167: break;
168: case RECORD_CHANNEL_DEFINITION_PUBLISHED:
169: value = recordChannelDefinitionPublished;
170: break;
171: case RECORD_CHANNEL_DEFINITION_MODIFIED:
172: value = recordChannelDefinitionModified;
173: break;
174: case RECORD_CHANNEL_DEFINITION_REMOVED:
175: value = recordChannelDefinitionRemoved;
176: break;
177: case RECORD_CHANNEL_ADDED_TO_LAYOUT:
178: value = recordChannelAddedToLayout;
179: break;
180: case RECORD_CHANNEL_UPDATED_IN_LAYOUT:
181: value = recordChannelUpdatedInLayout;
182: break;
183: case RECORD_CHANNEL_MOVED_IN_LAYOUT:
184: value = recordChannelMovedInLayout;
185: break;
186: case RECORD_CHANNEL_REMOVED_FROM_LAYOUT:
187: value = recordChannelRemovedFromLayout;
188: break;
189: case RECORD_FOLDER_ADDED_TO_LAYOUT:
190: value = recordFolderAddedToLayout;
191: break;
192: case RECORD_FOLDER_UPDATED_IN_LAYOUT:
193: value = recordFolderUpdatedInLayout;
194: break;
195: case RECORD_FOLDER_MOVED_IN_LAYOUT:
196: value = recordFolderMovedInLayout;
197: break;
198: case RECORD_FOLDER_REMOVED_FROM_LAYOUT:
199: value = recordFolderRemovedFromLayout;
200: break;
201: case RECORD_CHANNEL_INSTANTIATED:
202: value = recordChannelInstantiated;
203: break;
204: case RECORD_CHANNEL_RENDERED:
205: value = recordChannelRendered;
206: break;
207: case RECORD_CHANNEL_TARGETED:
208: value = recordChannelTargeted;
209: break;
210:
211: default:
212: break;
213: }
214:
215: return value;
216: }
217:
218: /**
219: * Set the value of a particular setting.
220: * @param setting the setting to change
221: * @param newValue the new value for the setting
222: */
223: public void set(int setting, boolean newValue) {
224: switch (setting) {
225: case RECORD_LOGIN:
226: recordLogin = newValue;
227: break;
228: case RECORD_LOGOUT:
229: recordLogout = newValue;
230: break;
231: case RECORD_SESSION_CREATED:
232: recordSessionCreated = newValue;
233: break;
234: case RECORD_SESSION_DESTROYED:
235: recordSessionDestroyed = newValue;
236: break;
237: case RECORD_CHANNEL_DEFINITION_PUBLISHED:
238: recordChannelDefinitionPublished = newValue;
239: break;
240: case RECORD_CHANNEL_DEFINITION_MODIFIED:
241: recordChannelDefinitionModified = newValue;
242: break;
243: case RECORD_CHANNEL_DEFINITION_REMOVED:
244: recordChannelDefinitionRemoved = newValue;
245: break;
246: case RECORD_CHANNEL_ADDED_TO_LAYOUT:
247: recordChannelAddedToLayout = newValue;
248: break;
249: case RECORD_CHANNEL_UPDATED_IN_LAYOUT:
250: recordChannelUpdatedInLayout = newValue;
251: break;
252: case RECORD_CHANNEL_MOVED_IN_LAYOUT:
253: recordChannelMovedInLayout = newValue;
254: break;
255: case RECORD_CHANNEL_REMOVED_FROM_LAYOUT:
256: recordChannelRemovedFromLayout = newValue;
257: break;
258: case RECORD_FOLDER_ADDED_TO_LAYOUT:
259: recordFolderAddedToLayout = newValue;
260: break;
261: case RECORD_FOLDER_UPDATED_IN_LAYOUT:
262: recordFolderUpdatedInLayout = newValue;
263: break;
264: case RECORD_FOLDER_MOVED_IN_LAYOUT:
265: recordFolderMovedInLayout = newValue;
266: break;
267: case RECORD_FOLDER_REMOVED_FROM_LAYOUT:
268: recordFolderRemovedFromLayout = newValue;
269: break;
270: case RECORD_CHANNEL_INSTANTIATED:
271: recordChannelInstantiated = newValue;
272: break;
273: case RECORD_CHANNEL_RENDERED:
274: recordChannelRendered = newValue;
275: break;
276: case RECORD_CHANNEL_TARGETED:
277: recordChannelTargeted = newValue;
278: break;
279:
280: default:
281: break;
282: }
283: }
284:
285: /**
286: * Returns a String representation of this object.
287: * @return the settings as a String
288: */
289: public String toString() {
290: StringBuffer sb = new StringBuffer(1024);
291: sb.append("StatsRecorderSettings: \n");
292: sb.append(" recordLogin=" + recordLogin).append("\n");
293: sb.append(" recordLogout=" + recordLogout).append("\n");
294: sb.append(" recordSessionCreated=" + recordSessionCreated)
295: .append("\n");
296: sb.append(" recordSessionDestroyed=" + recordSessionDestroyed)
297: .append("\n");
298: sb.append(
299: " recordChannelDefinitionPublished="
300: + recordChannelDefinitionPublished)
301: .append("\n");
302: sb.append(
303: " recordChannelDefinitionModified="
304: + recordChannelDefinitionModified).append("\n");
305: sb.append(
306: " recordChannelDefinitionRemoved="
307: + recordChannelDefinitionRemoved).append("\n");
308: sb.append(
309: " recordChannelAddedToLayout="
310: + recordChannelAddedToLayout).append("\n");
311: sb.append(
312: " recordChannelUpdatedInLayout="
313: + recordChannelUpdatedInLayout).append("\n");
314: sb.append(
315: " recordChannelMovedInLayout="
316: + recordChannelMovedInLayout).append("\n");
317: sb.append(
318: " recordChannelRemovedFromLayout="
319: + recordChannelRemovedFromLayout).append("\n");
320: sb.append(
321: " recordFolderAddedToLayout="
322: + recordFolderAddedToLayout).append("\n");
323: sb.append(
324: " recordFolderUpdatedInLayout="
325: + recordFolderUpdatedInLayout).append("\n");
326: sb.append(
327: " recordFolderMovedInLayout="
328: + recordFolderMovedInLayout).append("\n");
329: sb.append(
330: " recordFolderRemovedFromLayout="
331: + recordFolderRemovedFromLayout).append("\n");
332: sb.append(
333: " recordChannelInstantiated="
334: + recordChannelInstantiated).append("\n");
335: sb.append(" recordChannelRendered=" + recordChannelRendered)
336: .append("\n");
337: sb.append(" recordChannelTargeted=" + recordChannelTargeted)
338: .append("\n");
339:
340: return sb.toString();
341: }
342: }
|