glenn 01/04/25 19:47:29
Modified: datetime/src/org/apache/taglibs/datetime FormatTag.java
Log:
Add date and default attributes to FormatTag
Revision Changes Path
1.4 +68 -20
jakarta-taglibs/datetime/src/org/apache/taglibs/datetime/FormatTag.java
Index: FormatTag.java
===================================================================
RCS file:
/home/cvs/jakarta-taglibs/datetime/src/org/apache/taglibs/datetime/FormatTag.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- FormatTag.java 2001/04/26 01:55:49 1.3
+++ FormatTag.java 2001/04/26 02:47:28 1.4
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-taglibs/datetime/src/org/apache/taglibs/datetime/FormatTag.java,v
1.3 2001/04/26 01:55:49 glenn Exp $
- * $Revision: 1.3 $
- * $Date: 2001/04/26 01:55:49 $
+ * $Header:
/home/cvs/jakarta-taglibs/datetime/src/org/apache/taglibs/datetime/FormatTag.java,v
1.4 2001/04/26 02:47:28 glenn Exp $
+ * $Revision: 1.4 $
+ * $Date: 2001/04/26 02:47:28 $
*
* ====================================================================
*
@@ -83,6 +83,15 @@
* If the optional attribute <b>locale</b> is true, the Date
* is formatted for the clients locale if known.
* <p>
+ * The optional attribute <b>date</b> can be set to a
+ * Date object using a runtime expression value. If set,
+ * date will be used instead of the tag body.
+ * <p>
+ * The optional attribute <b>default</b> can be set to a
+ * default string to output if the date object doesn't exist
+ * or the tag body is not a valid date. If no default is set,
+ * the string "Invalid Date" is output.
+ * <p>
* JSP Tag Lib Descriptor
* <p><pre>
* <name>format</name>
@@ -91,22 +100,33 @@
* <info>Formats a date for output.</info>
* <attribute>
* <name>pattern</name>
- * <sessuired>false</sessuired>
+ * <required>false</required>
* <rtexprvalue>false</rtexprvalue>
* </attribute>
* <attribute>
* <name>timezone</name>
- * <sessuired>false</sessuired>
+ * <required>false</required>
* <rtexprvalue>false</rtexprvalue>
* </attribute>
* <attribute>
* <name>locale</name>
- * <sessuired>false</sessuired>
+ * <required>false</required>
+ * <rtexprvalue>false</rtexprvalue>
+ * </attribute>
+ * <attribute>
+ * <name>date</name>
+ * <required>false</required>
+ * <rtexprvalue>true</rtexprvalue>
+ * </attribute>
+ * <attribute>
+ * <name>default</name>
+ * <required>false</required>
* <rtexprvalue>false</rtexprvalue>
* </attribute>
* </pre>
*
* @author Glenn Nielsen
+ * @author Mark Femal
*/
public class FormatTag extends BodyTagSupport
@@ -119,6 +139,10 @@
private TimeZone timezone = null;
// The date after being formatted for output
private String date_formatted = null;
+ // The raw date given from the tag
+ private Date date = null;
+ // The default text if the tag body or date given is invalid/null
+ private String default_text = "Invalid Date";
/**
* Method called at start of tag, always returns EVAL_BODY_TAG
@@ -142,21 +166,24 @@
String s = body.getString();
// Clear the body since we will output only the formatted date
body.clearBody();
- StringTokenizer st = new StringTokenizer(s,"\r\n\t\f ");
- String val = s;
- while( st.hasMoreTokens() ) {
- val = st.nextToken();
- if( val != null && val.length() > 0 )
- break;
+ if( date == null ) {
+ StringTokenizer st = new StringTokenizer(s,"\r\n\t\f ");
+ String val = s;
+ while( st.hasMoreTokens() ) {
+ val = st.nextToken();
+ if( val != null && val.length() > 0 )
+ break;
+ }
+ long time;
+ try {
+ time = Long.valueOf(val).longValue();
+ } catch(NumberFormatException nfe) {
+ date_formatted = default_text;
+ return SKIP_BODY;
+ }
+ date = new Date(time);
}
- long time;
- try {
- time = Long.valueOf(val).longValue();
- } catch(NumberFormatException nfe) {
- date_formatted = "Invalid Date";
- return SKIP_BODY;
- }
- Date date = new Date(time);
+
SimpleDateFormat sdf;
// Get the default pattern if none defined
if( pattern == null ) {
@@ -228,6 +255,27 @@
public final void setPattern(String str)
{
pattern = str;
+ }
+
+
+ /**
+ * Set the date to use (overrides tag body) for formatting
+ *
+ * @param Date to use for formatting (could be null)
+ */
+ public final void setDate(Date date)
+ {
+ this.date = date;
+ }
+
+ /**
+ * Set the default text if an invalid date or no tag body is given
+ *
+ * @param String to use as default text
+ */
+ public final void setDefault(String default_text)
+ {
+ this.default_text = default_text;
}
}