/***************************************************************************** * * * This file is part of the tna framework distribution. * * Documentation and updates may be get from biaoping.yin the author of * * this framework * * * * Sun Public License Notice: * * * * The contents of this file are subject to the Sun Public License Version * * 1.0 (the "License"); you may not use this file except in compliance with * * the License. A copy of the License is available at http://www.sun.com * * * * The Original Code is tag. The Initial Developer of the Original * * Code is biaoping yin. Portions created by biaoping yin are Copyright * * (C) 2000. All Rights Reserved. * * * * GNU Public License Notice: * * * * Alternatively, the contents of this file may be used under the terms of * * the GNU Lesser General Public License (the "LGPL"), in which case the * * provisions of LGPL are applicable instead of those above. If you wish to * * allow use of your version of this file only under the terms of the LGPL * * and not to allow others to use your version of this file under the SPL, * * indicate your decision by deleting the provisions above and replace * * them with the notice and other provisions required by the LGPL. If you * * do not delete the provisions above, a recipient may use your version of * * this file under either the SPL or the LGPL. * * * * biaoping.yin (yin-bp@163.com) * * * *****************************************************************************/ package com.frameworkset.common.tag.pager.model; import java.util.Stack; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import javax.servlet.jsp.PageContext; import com.frameworkset.common.tag.pager.DataInfo; import com.frameworkset.common.tag.pager.DataInfoImpl; import com.frameworkset.common.tag.pager.DefaultDataInfoImpl; import com.frameworkset.common.tag.pager.tags.LoadDataException; import com.frameworkset.common.tag.pager.tags.PagerTag; /** * 输出数据到word,pdf,excel,cvs,xml文件, * 包括详细信息的输出,分页数据的输出,列表数据的输出, * 分页数据输出又包括只输出当前页数据和全部数据的两种模式 * @author biaoping.yin * created on 2005-5-18 * version 1.0 */ public class PageModel extends PagerTag implements ModelObject { /**存储分页信息*/ private PageInfo pageInfo; /**数据获取接口*/ private DataInfo dataInfo; /**如果不倒出全部记录,则直接从页面dataSet中获取数据*/ private Stack dataSet; /** * 控制dataSet的初始化,当要求导出全部记录时调用initial方法时修改first的值 */ private boolean first = true; /** * 初始化所有的生成文件的必要参数 * @param pageInfo * @param dataInfo * @param dataSet * @param pageContext */ public void setParameter(PageInfo pageInfo, DataInfo dataInfo, Stack dataSet, PageContext pageContext ) { this.pageInfo = pageInfo; this.setPageContext(pageContext); this.dataSet = dataSet; this.dataInfo = dataInfo; } /** * 初始化,分别获取每一页的数据,页面显示模式为分页时调用该方法 * @param offset int * @param maxPageItem int */ public void initial(long offset, int maxPageItem) { HttpServletRequest request = getHttpServletRequest(); HttpSession session = request.getSession(false) ; //如果不是列表 //if(pageInfo.isEportAll()) { if (dataInfo instanceof DefaultDataInfoImpl) { DataInfo defaultDataInfo = (DefaultDataInfoImpl) dataInfo; //分页列表的形式pagerTag不会为空,但是详细信息显示时就会为空 defaultDataInfo.initial(pageInfo.getStatement(), pageInfo.getDbName(), offset, maxPageItem, false, request); //loadClassData(defaultDataInfo.getListItemsFromDB(), null); } else if (dataInfo instanceof DataInfoImpl) { dataInfo.initial(pageInfo.getSortKey(), pageInfo.isList(), offset, maxPageItem, false, request); // try { // //loadClassData(dataInfo, pageInfo.isList()); // } // catch (LoadDataException ex) { // ex.printStackTrace(); // } //初始化页面的参数 pageInfo.initContext(offset,dataInfo.getItemCount()); } //设置当前页面数据 if(first) { this.dataSet = new Stack(); dataSet.push(this); } else { dataSet.push(this); } } } /** * @return Returns the dataInfo. */ public DataInfo getDataInfo() { return dataInfo; } /** * @param dataInfo The dataInfo to set. */ public void setDataInfo(DataInfo dataInfo) { this.dataInfo = dataInfo; } /** * @return Returns the dataSet. */ public Stack getDataSet() { return dataSet; } /** * @param dataSet The dataSet to set. */ public void setDataSet(Stack dataSet) { this.dataSet = dataSet; } /** * @return Returns the pageInfo. */ public PageInfo getPageInfo() { return pageInfo; } /** * @param pageInfo The pageInfo to set. */ public void setPageInfo(PageInfo pageInfo) { this.pageInfo = pageInfo; } }