FileDocCategorySizeDatePackage
ParseDateSupport.javaAPI DocGlassfish v2 API8081Sat May 05 19:17:52 BST 2007org.apache.taglibs.standard.tag.common.fmt

ParseDateSupport

public abstract class ParseDateSupport extends javax.servlet.jsp.tagext.BodyTagSupport
Support for tag handlers for <parseDate>, the date and time parsing tag in JSTL 1.0.
author
Jan Luehe

Fields Summary
private static final String
DATE
private static final String
TIME
private static final String
DATETIME
protected String
value
protected boolean
valueSpecified
protected String
type
protected String
pattern
protected Object
timeZone
protected Locale
parseLocale
protected String
dateStyle
protected String
timeStyle
private String
var
private int
scope
Constructors Summary
public ParseDateSupport()

                           // 'scope' attribute


    //*********************************************************************
    // Constructor and initialization

      
	super();
	init();
    
Methods Summary
private java.text.DateFormatcreateParser(java.util.Locale loc)

	DateFormat parser = null;

	if ((type == null) || DATE.equalsIgnoreCase(type)) {
	    parser = DateFormat.getDateInstance(
	        Util.getStyle(dateStyle, "PARSE_DATE_INVALID_DATE_STYLE"),
		loc);
	} else if (TIME.equalsIgnoreCase(type)) {
	    parser = DateFormat.getTimeInstance(
	        Util.getStyle(timeStyle, "PARSE_DATE_INVALID_TIME_STYLE"),
		loc);
	} else if (DATETIME.equalsIgnoreCase(type)) {
	    parser = DateFormat.getDateTimeInstance(
	        Util.getStyle(dateStyle, "PARSE_DATE_INVALID_DATE_STYLE"),
		Util.getStyle(timeStyle, "PARSE_DATE_INVALID_TIME_STYLE"),
		loc);
	} else {
	    throw new JspException(
                    Resources.getMessage("PARSE_DATE_INVALID_TYPE", type));
	}

	parser.setLenient(false);

	return parser;
    
public intdoEndTag()


        String input = null;

        // determine the input by...
        if (valueSpecified) {
	    // ... reading 'value' attribute
	    input = value;
	} else {
	    // ... retrieving and trimming our body
	    if (bodyContent != null && bodyContent.getString() != null)
	        input = bodyContent.getString().trim();
	}

	if ((input == null) || input.equals("")) {
	    if (var != null) {
		pageContext.removeAttribute(var, scope);
	    }
	    return EVAL_PAGE;
	}

	/*
	 * Set up parsing locale: Use locale specified via the 'parseLocale'
	 * attribute (if present), or else determine page's locale.
	 */
	Locale locale = parseLocale;
	if (locale == null)
	    locale = SetLocaleSupport.getFormattingLocale(pageContext,
                                                          this,
                                                          true,
                                                          false);
	if (locale == null) {
	    throw new JspException(
                    Resources.getMessage("PARSE_DATE_NO_PARSE_LOCALE"));
	}

	// Create parser
	DateFormat parser = createParser(locale);

	// Apply pattern, if present
	if (pattern != null) {
	    try {
		((SimpleDateFormat) parser).applyPattern(pattern);
	    } catch (ClassCastException cce) {
		parser = new SimpleDateFormat(pattern, locale);
	    }
	}

	// Set time zone
	TimeZone tz = null;
	if ((timeZone instanceof String) && ((String) timeZone).equals("")) {
	    timeZone = null;
	}
	if (timeZone != null) {
	    if (timeZone instanceof String) {
		tz = TimeZone.getTimeZone((String) timeZone);
	    } else if (timeZone instanceof TimeZone) {
		tz = (TimeZone) timeZone;
	    } else {
		throw new JspException(
                    Resources.getMessage("PARSE_DATE_BAD_TIMEZONE"));
	    }
	} else {
	    tz = TimeZoneSupport.getTimeZone(pageContext, this);
	}
	if (tz != null) {
	    parser.setTimeZone(tz);
	}

	// Parse date
	Date parsed = null;
	try {
	    parsed = parser.parse(input);
	} catch (ParseException pe) {
	    throw new JspException(
	            Resources.getMessage("PARSE_DATE_PARSE_ERROR", input),
		    pe);
	}

	if (var != null) {
	    pageContext.setAttribute(var, parsed, scope);	
	} else {
	    try {
		pageContext.getOut().print(parsed);
	    } catch (IOException ioe) {
		throw new JspTagException(ioe.toString(), ioe);
	    }
	}

	return EVAL_PAGE;
    
private voidinit()

	type = dateStyle = timeStyle = null;
	value = pattern = var = null;
	valueSpecified = false;
	timeZone = null;
	scope = PageContext.PAGE_SCOPE;
	parseLocale = null;
    
public voidrelease()

	init();
    
public voidsetScope(java.lang.String scope)

	this.scope = Util.getScope(scope);
    
public voidsetVar(java.lang.String var)

        this.var = var;