david-PC\david
2018-06-12 cc7f57619fd09f68582b748a3580402717b84c50
source/my/frame/src/frame/file/office/Engine.java
@@ -1,10 +1,15 @@
package frame.file.office;
import java.io.Console;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -14,10 +19,19 @@
import com.sun.corba.se.impl.protocol.JIDLLocalCRDImpl;
import frame.call.writer.JsonWriter;
import frame.config.Configer;
import frame.data.DataContext;
import frame.file.FileIOContainer;
import frame.file.UploadResult;
import frame.file.office.excel.DownloadResult;
import frame.file.office.excel.ExcelLoader;
import frame.file.office.excel.ExcelWriter;
import frame.file.processor.Monitor;
import frame.upload.FileItem;
import frame.upload.FileUploadException;
import frame.upload.disk.DiskFileItemFactory;
import frame.upload.servlet.ServletFileUpload;
import frame.util.Util;
public class Engine {
@@ -26,7 +40,10 @@
    private static Object locker = new Object();
    private Logger logger;
    private ExcelLoader excelLoader;
    private static int MAX_CACHE_SIZE = 30 * 1024 * 1024;
   private static int MAX_FILE_SIZE = 100 * 1024 * 1024;
    private Engine() {
       logger = LoggerFactory.getLogger(this.getClass());
        excelLoader = new ExcelLoader(logger);
@@ -43,29 +60,34 @@
        }
    }
    
    public static void download(HttpServletResponse response, String iocode, DataContext dataContext, Map<String, String> parameterProvider) {
    public static void download(HttpServletResponse response, String iocode, DataContext dataContext, Map<String, String> parameterProvider) throws IOException {
        getInstance();
        StringBuilder log = new StringBuilder();
        try {
           new JIDLLocalCRDImpl(orb, scid, ior)
            FileIOContainer.load();
            ExcelWriter excelWriter = new ExcelWriter(Monitor.getDownloadProgressor(), parameterProvider);
//          ExcelWriter excelWriter = new ExcelWriter(Monitor.getDownloadProgressor(), parameterProvider);
            ExcelWriter excelWriter = new ExcelWriter(Monitor.getDownloadProgressor());
            DownloadResult result = excelWriter.writeOneFile(iocode, dataContext);
            String filename = result.getFilename();
            response.addHeader("Content-Type", "application/octet-stream");
            filename = URLEncoder.encode(filename, "utf-8");
            response.addHeader("Content-Disposition", "attachment;filename=" + filename);
            response.TransmitFile(result.getPath());
            ServletOutputStream outputStream = response.getOutputStream();
            String path = result.getPath();
            File file = new File(path);
            //TODO output
//            outputStream.write(b)
//            response.TransmitFile(result.getPath());
        }
        catch (Exception e) {
            JsonBuilder json = new JsonBuilder();
           JsonWriter json = new JsonWriter();
            json.beginObject();
            json.addValue("log", log.toString());
            json.addValue("error", e.getMessage());
            json.beginArray("detail");
            List<String> details = Monitor.getDownloadProgressor().getMessageList();
            
@@ -75,19 +97,24 @@
            
            json.endArray();
            json.endObject();
            response.Write(json.ToString());
            PrintWriter writer = response.getWriter();
            writer.write(json.toString());
        }
    }
    public static UploadResult upload(String iocode, FileInfo file, HttpServletRequest request) {
    public static UploadResult upload(String iocode, File file, HttpServletRequest request) throws Exception {
        UploadResult result = new UploadResult(request);
       
        result.writeBegin();
        try {
            getInstance();
            FileIOContainer.load();
            instance.excelLoader.loadOneFile(result, iocode, file);
            LoadManager manager = new LoadManager(result, iocode);
            manager.setRequest(request);
            instance.excelLoader.loadFiles(result, iocode, loadUploadFileList);
//            instance.excelLoader.loadOneFile(result, iocode, file);
        }
        catch (Exception e){
            result.fail("error", e.getMessage());
@@ -99,7 +126,18 @@
        return result;
    }
    public static UploadResult testDataProcess(String iocode, HttpServletRequest request) {
   private static List<FileItem> loadUploadFile(HttpServletRequest request) throws FileUploadException {
       DiskFileItemFactory diskFileFactory = new DiskFileItemFactory();
      diskFileFactory.setSizeThreshold(MAX_CACHE_SIZE);
      diskFileFactory.setRepository(new File(Configer.getParam("repository")));
      ServletFileUpload fileUpload = new ServletFileUpload(diskFileFactory);
      fileUpload.setSizeMax(MAX_FILE_SIZE);
      return fileUpload.parseRequest(request);
   }
   public static UploadResult testDataProcess(String iocode, HttpServletRequest request) throws Exception {
        UploadResult result = new UploadResult(request);
        result.writeBegin();