001: package org.tigris.scarab.tools;
002:
003: /* ================================================================
004: * Copyright (c) 2000 CollabNet. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions are
008: * met:
009: *
010: * 1. Redistributions of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * 2. Redistributions in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in the
015: * documentation and/or other materials provided with the distribution.
016: *
017: * 3. The end-user documentation included with the redistribution, if
018: * any, must include the following acknowlegement: "This product includes
019: * software developed by CollabNet (http://www.collab.net/)."
020: * Alternately, this acknowlegement may appear in the software itself, if
021: * and wherever such third-party acknowlegements normally appear.
022: *
023: * 4. The hosted project names must not be used to endorse or promote
024: * products derived from this software without prior written
025: * permission. For written permission, please contact info@collab.net.
026: *
027: * 5. Products derived from this software may not use the "Tigris" name
028: * nor may "Tigris" appear in their names without prior written
029: * permission of CollabNet.
030: *
031: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
032: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
033: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
034: * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
035: * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
036: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
037: * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
038: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
039: * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
040: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
041: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
042: *
043: * ====================================================================
044: *
045: * This software consists of voluntary contributions made by many
046: * individuals on behalf of CollabNet.
047: */
048:
049: import java.util.Date;
050: import java.text.DateFormat;
051: import java.text.SimpleDateFormat;
052:
053: /**
054: * Takes a date in any format and converts it to the desired format
055: */
056: public class Format {
057: /**
058: * The default date/time format string.
059: */
060: public static final String DATE_TIME_FMT = "yyyy-MM-dd HH:mm";
061:
062: /**
063: * Formats the date according to the passed in <code>DateFormat</code>.
064: * This is generally used with SRT.getDateFormat() and in the templates
065: * it looks something like this:
066: * $format.getDate($scarabR.DateFormat, $issue.CreatedDate)
067: */
068: public static String getDate(DateFormat format, Date date) {
069: return format.format(date);
070: }
071:
072: /**
073: * Formats the date according to the passed in format
074: * Uses SimpleDateFormat to do its magic.
075: */
076: public static String getDate(String format, Date date) {
077: SimpleDateFormat newFormat = new SimpleDateFormat(format);
078: return newFormat.format(date);
079: }
080:
081: /**
082: * Formats the current date according to the passed in format
083: * Uses SimpleDateFormat to do its magic.
084: */
085: public static String getNow(SimpleDateFormat format) {
086: return getDate(format, new Date());
087: }
088:
089: /**
090: * Formats the current date according to the passed in format
091: * Uses SimpleDateFormat to do its magic.
092: */
093: public static String getNow(String format) {
094: return getDate(format, new Date());
095: }
096:
097: /**
098: * Formats a dimension in bytes to the most appropriate
099: * size unit (bytes, KB, MB)
100: */
101: public static String getFileSize(long fileSize) {
102: // naive implementation..
103: String fileUnit = "bytes";
104: double fSize = fileSize;
105:
106: if (fSize > 1024) {
107: fSize /= 1024;
108: fileUnit = "KB";
109: }
110:
111: if (fSize > 1024) {
112: fSize /= 1024;
113: fileUnit = "MB";
114: }
115:
116: fSize = Math.round(fSize * 100.0) / 100.0;
117: return String.valueOf(fSize) + " " + fileUnit;
118: }
119: }
|