01: /*
02: * JBoss, Home of Professional Open Source.
03: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
04: * as indicated by the @author tags. See the copyright.txt file in the
05: * distribution for a full listing of individual contributors.
06: *
07: * This is free software; you can redistribute it and/or modify it
08: * under the terms of the GNU Lesser General Public License as
09: * published by the Free Software Foundation; either version 2.1 of
10: * the License, or (at your option) any later version.
11: *
12: * This software is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this software; if not, write to the Free
19: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21: */
22: package org.jboss.services.loggingmonitor;
23:
24: import java.util.HashMap;
25: import java.util.Map;
26:
27: /**
28: * This class encapsulates the specification of a log file's rollover period.
29: *
30: * @author <a href="mailto:jimmy.wilson@acxiom.com">James Wilson</a>
31: * @author <a href="mailto:dimitris@jboss.org">Dimitris Andreadis</a>
32: * @version $Revision: 57210 $
33: */
34: class RolloverPeriod {
35: private static final Map periodFormatsMap;
36: static {
37: periodFormatsMap = new HashMap();
38: periodFormatsMap.put("MONTH", "\'.\'yyyy-MM");
39: periodFormatsMap.put("MONTHLY", "\'.\'yyyy-MM");
40: periodFormatsMap.put("WEEK", "\'.\'yyyy-ww");
41: periodFormatsMap.put("WEEKLY", "\'.\'yyyy-ww");
42: periodFormatsMap.put("DAY", "\'.\'yyyy-MM-dd");
43: periodFormatsMap.put("DAILY", "\'.\'yyyy-MM-dd");
44: periodFormatsMap.put("HALFDAY", "\'.\'yyyy-MM-dd-a");
45: periodFormatsMap.put("HALFDAILY", "\'.\'yyyy-MM-dd-a");
46: periodFormatsMap.put("HOUR", "\'.\'yyyy-MM-dd-HH");
47: periodFormatsMap.put("HOURLY", "\'.\'yyyy-MM-dd-HH");
48: periodFormatsMap.put("MINUTE", "\'.\'yyyy-MM-dd-HH-mm");
49: }
50:
51: private String rolloverPeriod;
52: private String rolloverFormat;
53:
54: /**
55: * Constructor.
56: *
57: * @param rolloverPeriod a rollover period specification.
58: */
59: public RolloverPeriod(String rolloverPeriod) {
60: this .rolloverFormat = (String) periodFormatsMap
61: .get(rolloverPeriod.toUpperCase());
62:
63: if (this .rolloverFormat == null) {
64: throw new IllegalArgumentException(
65: "Unknown rollover period: " + rolloverPeriod);
66: }
67: this .rolloverPeriod = rolloverPeriod;
68: }
69:
70: /**
71: * Returns the rollover format specification associated with the rollover
72: * period specification used to construct this class.
73: */
74: public String getRolloverFormat() {
75: return rolloverFormat;
76: }
77:
78: /**
79: * Returns the rollover period specification used to construct this class.
80: */
81: public String toString() {
82: return rolloverPeriod;
83: }
84: }
|