/* * Copyright 2005-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.openuap.cms.data.action; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.List; import java.util.Map; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.openuap.base.util.ControllerHelper; import org.openuap.base.web.mvc.BaseController; import org.openuap.cms.data.DataImporter; import org.openuap.cms.data.manager.DataImportManager; import org.springframework.web.servlet.ModelAndView; /** * <p> * 数据导入文件控制器 * </p> * * <p> * $Id: DataImpFileAction.java 3993 2011-01-05 11:32:49Z orangeforjava $ * </p> * * @author Joseph * @version 1.0 */ public class DataImpFileAction extends BaseController { private String framesetViewName; private String headerViewName; /** 列表模板名.*/ private String listViewName; private String defaultScreensPath; private DataImportManager dataImportManager; public DataImpFileAction() { initDefaultProperty(); } protected void initDefaultProperty() { defaultScreensPath = "/plugin/cms/base/screens/data/import/file/"; framesetViewName = defaultScreensPath + "file_list_frameset.html"; headerViewName = defaultScreensPath + "file_list_header.html"; listViewName = defaultScreensPath + "file_list.html"; } /** * 缺省动作,显示框架视图 */ public ModelAndView perform(HttpServletRequest request, HttpServletResponse response, ControllerHelper helper, Map model) throws Exception { return this.doList(request, response, helper, model); } /** * 显示信息管理头 * * @param request * @param response * @param helper * @param model * @return * @throws Exception */ public ModelAndView doHeader(HttpServletRequest request, HttpServletResponse response, ControllerHelper helper, Map model) throws Exception { ModelAndView mv = new ModelAndView(headerViewName, model); String name = request.getParameter("name"); if (name != null) { DataImporter importer = dataImportManager.getDateImporter(name); model.put("importer", importer); } return mv; } /** * 列出所有的备份文件 * * @param request * @param response * @param helper * @param model * @return * @throws Exception */ public ModelAndView doList(HttpServletRequest request, HttpServletResponse response, ControllerHelper helper, Map model) throws Exception { ModelAndView mv = new ModelAndView(listViewName, model); String name = request.getParameter("name"); if (name != null) { DataImporter importer = dataImportManager.getDateImporter(name); model.put("importer", importer); List files = dataImportManager.getDataFiles(name); model.put("files", files); } return mv; } /** * 查看具体文件的内容 * * @param request * @param response * @param helper * @param model * @return * @throws Exception */ public ModelAndView doView(HttpServletRequest request, HttpServletResponse response, ControllerHelper helper, Map model) throws Exception { String name = request.getParameter("name"); String fileName = request.getParameter("fileName"); if (name != null && fileName != null) { response.setContentType("text/xml;encoding=utf-8"); DataImporter importer=dataImportManager.getDateImporter(name); if(importer!=null){ File dataDir=importer.getDataDir(); File file=new File(dataDir,fileName); if(file.exists()){ InputStream dbInput = new FileInputStream(file); response.setContentLength(dbInput.available()); ServletOutputStream os = response.getOutputStream(); byte buf[] = new byte[4096]; BufferedInputStream bis = new BufferedInputStream(dbInput); int j; while ((j = bis.read(buf, 0, 4096)) != -1) { os.write(buf, 0, j); } bis.close(); os.flush(); os.close(); } } } return null; } /** * 下载选定的数据文件 * @param request * @param response * @param helper * @param model * @return * @throws Exception */ public ModelAndView doDownload(HttpServletRequest request, HttpServletResponse response, ControllerHelper helper, Map model) throws Exception { //下载的显示名 String name = request.getParameter("name"); //下载的文件名 String fileName = request.getParameter("fileName"); if (name != null && fileName != null) { String attName = new String(fileName.getBytes(), "iso8859-1"); response.setContentType("application/x-msdownload"); String header = "attachment; filename=" + attName; response.setHeader("Content-Disposition", header); DataImporter importer=dataImportManager.getDateImporter(name); if(importer!=null){ File dataDir=importer.getDataDir(); File file=new File(dataDir,fileName); if(file.exists()){ InputStream dbInput = new FileInputStream(file); response.setContentLength(dbInput.available()); ServletOutputStream os = response.getOutputStream(); byte buf[] = new byte[4096]; BufferedInputStream bis = new BufferedInputStream(dbInput); int j; while ((j = bis.read(buf, 0, 4096)) != -1) { os.write(buf, 0, j); } bis.close(); os.flush(); os.close(); } } } return null; } public void setDataImportManager(DataImportManager dataImportManager) { this.dataImportManager = dataImportManager; } public void setDefaultScreensPath(String defaultScreensPath) { this.defaultScreensPath = defaultScreensPath; } public void setFramesetViewName(String framesetViewName) { this.framesetViewName = framesetViewName; } public void setHeaderViewName(String headerViewName) { this.headerViewName = headerViewName; } public void setListViewName(String listViewName) { this.listViewName = listViewName; } }