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>
    * &lt;name&gt;format&lt;/name&gt;
  @@ -91,22 +100,33 @@
    * &lt;info&gt;Formats a date for output.&lt;/info&gt;
    *   &lt;attribute&gt;
    *     &lt;name&gt;pattern&lt;/name&gt;
  - *     &lt;sessuired&gt;false&lt;/sessuired&gt;
  + *     &lt;required&gt;false&lt;/required&gt;
    *     &lt;rtexprvalue&gt;false&lt;/rtexprvalue&gt;
    *   &lt;/attribute&gt;
    *   &lt;attribute&gt;
    *     &lt;name&gt;timezone&lt;/name&gt;
  - *     &lt;sessuired&gt;false&lt;/sessuired&gt;
  + *     &lt;required&gt;false&lt;/required&gt;
    *     &lt;rtexprvalue&gt;false&lt;/rtexprvalue&gt;
    *   &lt;/attribute&gt;
    *   &lt;attribute&gt;
    *     &lt;name&gt;locale&lt;/name&gt;
  - *     &lt;sessuired&gt;false&lt;/sessuired&gt;
  + *     &lt;required&gt;false&lt;/required&gt;
  + *     &lt;rtexprvalue&gt;false&lt;/rtexprvalue&gt;
  + *   &lt;/attribute&gt;
  + *   &lt;attribute&gt;                             
  + *     &lt;name&gt;date&lt;/name&gt;
  + *     &lt;required&gt;false&lt;/required&gt;
  + *     &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
  + *   &lt;/attribute&gt;
  + *   &lt;attribute&gt;                             
  + *     &lt;name&gt;default&lt;/name&gt;
  + *     &lt;required&gt;false&lt;/required&gt;
    *     &lt;rtexprvalue&gt;false&lt;/rtexprvalue&gt;
    *   &lt;/attribute&gt;
    * </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;
       }
   
   }
  
  
  

Reply via email to