From a9631bf0505ac256d276b060dc05d99ea971d877 Mon Sep 17 00:00:00 2001 From: david-PC\david <kimi42345@gmail.com> Date: 星期二, 12 六月 2018 17:13:50 +0800 Subject: [PATCH] 修改了Engine的流程(第一次) --- source/my/frame/src/frame/file/office/Engine.java | 64 +++++++++++++++++++++++++++---- 1 files changed, 55 insertions(+), 9 deletions(-) diff --git a/source/my/frame/src/frame/file/office/Engine.java b/source/my/frame/src/frame/file/office/Engine.java index 2623e37..7eafd16 100644 --- a/source/my/frame/src/frame/file/office/Engine.java +++ b/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(); - - LoadManager manager = new LoadManager(result, iocode); - manager.setRequest(request); - instance.excelLoader.loadFiles(result, iocode, loadUploadFileList); -// instance.excelLoader.loadOneFile(result, iocode, file); + //2. + if (Util.isEmptyStr(ioCode)) { + throw new FileIOException(FileIOErrorType.FileIOCodeIsNull, "file io code is null"); + } + + 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(); -- Gitblit v1.8.0