david-PC\david
2018-06-12 a9631bf0505ac256d276b060dc05d99ea971d877
source/my/frame/src/frame/file/office/Engine.java
@@ -22,10 +22,16 @@
import frame.call.writer.JsonWriter;
import frame.config.Configer;
import frame.data.DataContext;
import frame.file.FileIO;
import frame.file.FileIOContainer;
import frame.file.FileIOErrorType;
import frame.file.FileIOException;
import frame.file.FileIOItem;
import frame.file.UploadResult;
import frame.file.db.DataBaseTranslator;
import frame.file.office.excel.DownloadResult;
import frame.file.office.excel.ExcelLoader;
import frame.file.office.excel.ExcelReader;
import frame.file.office.excel.ExcelReaders;
import frame.file.office.excel.ExcelWriter;
import frame.file.processor.Monitor;
import frame.upload.FileItem;
@@ -39,14 +45,14 @@
   private static Engine instance;
    private static Object locker = new Object();
    private Logger logger;
    private ExcelLoader excelLoader;
    private ExcelReader 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);
        excelLoader = new ExcelReader(logger);
        
    }
@@ -102,19 +108,28 @@
        }
    }
    public static UploadResult upload(String iocode, File file, HttpServletRequest request) throws Exception {
    public static UploadResult upload(String ioCode, File file, HttpServletRequest request) throws Exception {
        UploadResult result = new UploadResult(request);
       
        result.writeBegin();
        try {
           //1. prepare
            getInstance();
            FileIOContainer.load();
            
            //2.
         if (Util.isEmptyStr(ioCode)) {
            throw new FileIOException(FileIOErrorType.FileIOCodeIsNull, "file io code is null");
         }
            
            LoadManager manager = new LoadManager(result, iocode);
            manager.setRequest(request);
            instance.excelLoader.loadFiles(result, iocode, loadUploadFileList);
//            instance.excelLoader.loadOneFile(result, iocode, file);
         FileIO fileIO = FileIOContainer.get(ioCode);
         if (fileIO == null) {
            throw new FileIOException(FileIOErrorType.FileIONotExists, "fileio not exists: " + ioCode);
         }
            //3.
         instance.doUpload(fileIO);
        }
        catch (Exception e){
            result.fail("error", e.getMessage());
@@ -126,6 +141,37 @@
        return result;
    }
   private void doUpload(FileIO fileIO) {
      ExcelReaders excelLoaders = new ExcelReaders(request);
      //1. fire begin event
      fileIO.execHandlers(result, "begin");
      //2. file to tempt table
      List<FileIOItem> importList = fileIO.getItemList(FileIOTypeCode.Import);
      for (FileIOItem fileIOItem : importList) {
         fileIOItem.execHandlers(result, "begin");
         excelLoaders.loadOneItem(fileIOItem);
         fileIOItem.execHandlers(result, "end");
      }
      //3. fire after tempt tables
      fileIO.execHandlers(result, "after-temp");
      //4. tempt table to standard table
      List<FileIOItem> dbList = fileIO.getItemList(FileIOTypeCode.Db);
      for (FileIOItem fileIOItem : dbList) {
         fileIOItem.execHandlers(result, "begin");
         DataBaseTranslator.translate(result, fileIOItem);
         fileIOItem.execHandlers(result, "end");
      }
       //5. fire end event
        fileIO.execHandlers(result, "end");
   }
   private static List<FileItem> loadUploadFile(HttpServletRequest request) throws FileUploadException {
       
       DiskFileItemFactory diskFileFactory = new DiskFileItemFactory();