KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > killingar > webwork > view > taglib > SizeTag


1 /* Copyright 2000-2005 Anders Hovmöller
2  *
3  * The person or persons who have associated their work with
4  * this document (the "Dedicator") hereby dedicate the entire
5  * copyright in the work of authorship identified below (the
6  * "Work") to the public domain.
7  *
8  * Dedicator makes this dedication for the benefit of the
9  * public at large and to the detriment of Dedicator's heirs
10  * and successors. Dedicator intends this dedication to be an
11  * overt act of relinquishment in perpetuity of all present
12  * and future rights under copyright law, whether vested or
13  * contingent, in the Work. Dedicator understands that such
14  * relinquishment of all rights includes the relinquishment of
15  * all rights to enforce (by lawsuit or otherwise) those
16  * copyrights in the Work.
17  *
18  * Dedicator recognizes that, once placed in the public
19  * domain, the Work may be freely reproduced, distributed,
20  * transmitted, used, modified, built upon, or otherwise
21  * exploited by anyone for any purpose, commercial or non-
22  * commercial, and in any way, including by methods that have
23  * not yet been invented or conceived.
24  */

25
26 /**
27  * Prints a file size in a human readable form.
28  */

29 package net.killingar.webwork.view.taglib;
30
31 import javax.servlet.jsp.JspException JavaDoc;
32 import javax.servlet.jsp.JspTagException JavaDoc;
33
34 public class SizeTag extends webwork.view.taglib.WebWorkTagSupport
35 {
36     // Attributes ----------------------------------------------------
37
protected String JavaDoc valueAttr;
38
39     // Public --------------------------------------------------------
40
public void setValue(String JavaDoc inName)
41     {
42         valueAttr = inName;
43     }
44
45     // BodyTag implementation ----------------------------------------
46
public int doStartTag() throws JspException JavaDoc
47     {
48         Object JavaDoc value = findValue(valueAttr);
49
50         try
51         {
52             if (value != null && value instanceof Number JavaDoc)
53             {
54                 double n = ((Number JavaDoc)value).longValue();
55
56                 String JavaDoc[] suffixes = {"B", "KB", "MB", "GB", "TB", "PB", "EB"};
57                 int suffix = 0;
58
59                 for (int i = 0; i < suffixes.length; i++)
60                 {
61                     if (n >= 1024)
62                     {
63                         suffix++;
64                         n /= 1024;
65                     }
66                     else
67                         break;
68                 }
69                 String JavaDoc ns;
70                 if (suffix == 0)
71                     ns = Long.toString((long)n);
72                 else
73                 {
74                     ns = Double.toString(n);
75                     int foo = ns.indexOf(".");
76                     if (foo < ns.length()-4)
77                         ns = ns.substring(0, foo+3);
78                 }
79
80
81
82                 StringBuffer JavaDoc s = new StringBuffer JavaDoc();
83                 s.append(ns);
84                 s.append(" ");
85                 s.append(suffixes[suffix]);
86
87                 pageContext.getOut().write(s.toString());
88             }
89             else
90                 pageContext.getOut().write(""); // Printing out null gives no output
91
}
92         catch (Exception JavaDoc e)
93         {
94             e.printStackTrace();
95             throw new JspTagException JavaDoc("Could not show value " + valueAttr + ":" + e);
96         }
97
98         return SKIP_BODY;
99     }
100 }
Popular Tags