package xin.glue.ui.common.blob; import java.io.BufferedInputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.GZIPInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; import com.posdata.glue.biz.constants.PosBizControlConstants; import com.posdata.glue.biz.control.PosBizProvider; import com.posdata.glue.context.PosContext; import com.posdata.glue.dao.vo.PosRow; import com.posdata.glue.dao.vo.PosRowSet; import com.posdata.glue.web.control.PosWebConstants; public class PosExcelManager extends PosBolbManager { public PosExcelManager(HttpServletRequest request, HttpServletResponse response, JspWriter out, PageContext pageContext) { super(request, response, out, pageContext); } protected void setContext(OutputStream os) throws Exception { PosContext context = new PosContext(); request.setAttribute(PosWebConstants.CONTEXT, context); context.put(PosBizControlConstants.SERVICE_NAME, "Excel-Template-service"); context.put("TMPL_NM", request.getParameter("template")); PosBizProvider.getController().doAction(context); PosRowSet rowSet = (PosRowSet)context.get("ListResult_0"); if (rowSet == null || !rowSet.hasNext()) return; PosRow row = rowSet.next(); InputStream in = (InputStream)row.getAttribute("TMPL_CONTENT"); if (in == null) return; String clsName = (String)row.getAttribute("JAVA_CLASS"); if (clsName == null) return; PosExcelInterface excelInferface = (PosExcelInterface)Class.forName(clsName).newInstance(); excelInferface.setData(dataList, new BufferedInputStream(new GZIPInputStream(in)), os, Integer.parseInt(row.getAttribute("DATA_ROW").toString()), Integer.parseInt(row.getAttribute("PAGE_SIZE").toString())); excelInferface = null; dataList.clear(); in.close(); } }