| | |
| | | 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; |
| | |
| | | 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); |
| | | |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | 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()); |
| | |
| | | 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(); |