ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/util/uk/org/iscream/cms/util/DateUtils.java
(Generate patch)

Comparing projects/cms/source/util/uk/org/iscream/cms/util/DateUtils.java (file contents):
Revision 1.1 by tdb, Sat Feb 3 23:03:30 2001 UTC vs.
Revision 1.7 by tdb, Tue May 21 16:47:19 2002 UTC

# Line 1 | Line 1
1 + /*
2 + * i-scream central monitoring system
3 + * http://www.i-scream.org.uk
4 + * Copyright (C) 2000-2002 i-scream
5 + *
6 + * This program is free software; you can redistribute it and/or
7 + * modify it under the terms of the GNU General Public License
8 + * as published by the Free Software Foundation; either version 2
9 + * of the License, or (at your option) any later version.
10 + *
11 + * This program is distributed in the hope that it will be useful,
12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 + * GNU General Public License for more details.
15 + *
16 + * You should have received a copy of the GNU General Public License
17 + * along with this program; if not, write to the Free Software
18 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19 + */
20 +
21   //---PACKAGE DECLARATION---
22 < package uk.ac.ukc.iscream.util;
22 > package uk.org.iscream.cms.server.util;
23  
24   //---IMPORTS---
25   import java.util.*;
# Line 24 | Line 44 | public class DateUtils {
44      public static final long secsPerWeek = 7*24*60*60;
45      public static final long secsPerDay = 24*60*60;
46      public static final long secsPerHour = 60*60;
47 +    public static final long secsPerMin = 60;
48      
49 +    private static final String daysKey = "%DAYS%";
50 +    private static final String hoursKey = "%HOURS%";
51 +    private static final String minsKey = "%MINS%";
52 +    private static final String secsKey = "%SECS%";
53 +    
54   //---STATIC METHODS---
55  
56      /**
# Line 119 | Line 145 | public class DateUtils {
145          SimpleDateFormat formatter = new SimpleDateFormat("EEE");
146          Date conv = new Date(t*1000);
147          return formatter.format(conv);
148 <    }    
149 <
148 >    }
149 >    
150      /**
151       * Return a String representation of the time (short format).
152       */
# Line 128 | Line 154 | public class DateUtils {
154          SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
155          Date conv = new Date(t*1000);
156          return formatter.format(conv);
157 <    }    
157 >    }
158      
159 +    /**
160 +     * Format a long time (in seconds) as a String. Can be used to
161 +     * clearly layout a period of time in days, hours, minutes and
162 +     * seconds. It could, for example, be used to format an uptime.
163 +     * This method uses a built in default layout, as shown here;
164 +     *   "Days: xx,  Hours: xx,  Mins: xx,  Secs: xx"
165 +     *
166 +     * @param time A long value representing the time period in seconds
167 +     * @return A string representation of the given time period
168 +     */
169 +    public static String formatTime(long time) {
170 +        String defaultLayout = "Days: "+daysKey+",  Hours: "+hoursKey+",  Mins: "+minsKey+",  Secs: "+secsKey;
171 +        return formatTime(time, defaultLayout);
172 +    }
173 +    
174 +    /**
175 +     * Format a long time (in seconds) as a String. Can be used to
176 +     * clearly layout a period of time in days, hours, minutes and
177 +     * seconds. It could, for example, be used to format an uptime.
178 +     * This method uses a custom layout given as a String. This string
179 +     * should contain the following keys;
180 +     *   "%DAYS% %HOURS% %MINS% %SECS%"
181 +     * As an example, the default layout given by formatTime() is
182 +     * represented by the following layout String;
183 +     *   "Days: %DAYS%,  Hours: %HOURS%,  Mins: %MINS%,  Secs: %SECS%"
184 +     *
185 +     * @param time A long value representing the time period in seconds
186 +     * @param layout The custom layout format to use.
187 +     * @return A string representation of the given time period
188 +     */
189 +    public static String formatTime(long time, String layout) {
190 +        // calculate days
191 +        String days = new Long(time / secsPerDay).toString();
192 +        time = time % secsPerDay;
193 +        
194 +        // calculate hours
195 +        String hours = new Long(time / secsPerHour).toString();
196 +        time = time % secsPerHour;
197 +        
198 +        // calculate minutes
199 +        String mins = new Long(time / secsPerMin).toString();
200 +        time = time % secsPerMin;
201 +        
202 +        // seconds are left over
203 +        String secs = new Long(time).toString();
204 +        
205 +        // put the values into the layout
206 +        layout = StringUtils.replaceText(layout, daysKey, days);
207 +        layout = StringUtils.replaceText(layout, hoursKey, hours);
208 +        layout = StringUtils.replaceText(layout, minsKey, mins);
209 +        layout = StringUtils.replaceText(layout, secsKey, secs);
210 +        
211 +        return layout;
212 +    }
213 +    
214 +    /**
215 +     * Takes a time period in seconds and converts it to a
216 +     * reasonable message.
217 +     *
218 +     * @param time the time period in seconds
219 +     * @return a String respresentation of the given time period
220 +     */
221 +    public static String getTimeString(long time) {
222 +        String timeString = null;
223 +        if (time >= 3600) {
224 +            timeString = ((time/60) / 60) + " hour(s)";
225 +        } else if (time >= 60) {
226 +            timeString = (time / 60) + " minute(s)";
227 +        } else {
228 +            timeString = time + " second(s)";
229 +        }
230 +        return timeString;
231 +    }
232  
233   //---CONSTRUCTORS---
234  
# Line 139 | Line 238 | public class DateUtils {
238       * Overrides the {@link java.lang.Object#toString() Object.toString()}
239       * method to provide clean logging (every class should have this).
240       *
241 <     * This uses the uk.ac.ukc.iscream.util.FormatName class
241 >     * This uses the uk.org.iscream.cms.server.util.FormatName class
242       * to format the toString()
243       *
244       * @return the name of this class and its CVS revision
# Line 150 | Line 249 | public class DateUtils {
249              getClass().getName(),
250              REVISION);
251      }
252 <
252 >    
253   //---PRIVATE METHODS---
254  
255   //---ACCESSOR/MUTATOR METHODS---

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines