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