/*
* Pager Tag Library
*
* Copyright (C) 2002 James Klicman <james@jsptags.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package com.frameworkset.common.tag.pager.tags;
import java.io.Serializable;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
public abstract class JumpTagSupport extends PageTagSupport implements Serializable{
static final String
CURRENT = "current",
INDEXED = "indexed";
private String unless = null;
public final void setUnless(String value) throws JspException {
if (!(value == null || CURRENT.equals(value) || INDEXED.equals(value)))
{
throw new JspTagException("value for attribute \"unless\" " +
"must be either \"current\" or \"indexed\".");
}
unless = value;
}
public final String getUnless() {
return unless;
}
public int doStartTag() throws JspException {
super.doStartTag();
long jumpPage = getJumpPage();
if (CURRENT.equals(unless)) {
if (jumpPage == this.pagerContext.getPageNumber())
return SKIP_BODY;
} else if (INDEXED.equals(unless)) {
long firstPage = pagerContext.getFirstIndexPage();
long lastPage = pagerContext.getLastIndexPage(firstPage);
if (jumpPage >= firstPage && jumpPage <= lastPage)
return SKIP_BODY;
}
setPageAttributes(jumpPage);
return EVAL_BODY_INCLUDE;
}
public void release() {
unless = null;
super.release();
}
protected abstract long getJumpPage();
}
/* vim:set ts=4 sw=4: */