DayIterator.java
package allaire.samples.invoice.taglib;
import allaire.samples.invoice.InvoiceDataModel;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.ServletRequest;
public class DayIterator extends BodyTagSupport {
String[] days = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
private int index;
private String dayHours;
public String getDayHours() {
return dayHours;
}
private String dayName;
public String getDayName() {
return dayName;
}
public int doStartTag() throws JspException {
index = 0;
return getNext();
}
public int doAfterBody () throws JspException {
BodyContent body = getBodyContent();
try {
body.writeOut( getPreviousOut() );
} catch (IOException exc) {
throw new JspTagException( "unexpected IO error" );
}
body.clearBody();
return getNext();
}
private int getNext() throws JspException {
int result = SKIP_BODY;
int SCOPE = PageContext.APPLICATION_SCOPE;
try {
if ( index < 7 ) {
InvoiceDataModel dataModel = (InvoiceDataModel)
pageContext.getAttribute( "invoiceDataModel", SCOPE );
String[] hours = dataModel.getHours();
dayHours = hours[index];
dayName = days[index];
index++;
result = EVAL_BODY_TAG;
}
} catch ( Exception exc ) {
exc.printStackTrace();
throw new JspException( exc.getMessage() );
}
return result;
}
}