package foundation.io.engine; import java.io.File; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import foundation.dao.DataReader; import foundation.io.FileRepository; import foundation.io.define.DataIO; import foundation.io.define.IOSpeedMode; import foundation.io.object.FileItemAgent; import foundation.io.object.UploadReader; import foundation.token.IUser; public class FileProcessor { protected static Logger logger; private int batchCount; private File uploadFile; private IWorkBookReader workBookReader; private File downloadFile; private IWorkBookWriter workBookWriter; static { logger = LogManager.getLogger(FileProcessor.class); } public FileProcessor(int batchCount) { this.batchCount = batchCount; } public File openUploadFile(DataReader dataReader, IOSpeedMode bigDataMode) throws Exception { UploadReader uploadReader = new UploadReader(dataReader); FileItemAgent fileForm = uploadReader.getFistFileItem(); if (fileForm == null) { throw new Exception("can not open upload file: no file"); } IUser user = dataReader.getUser(); uploadFile = FileRepository.createImportTempFile(user, fileForm); if (!uploadFile.exists()) { throw new Exception("upload file not exists: " + uploadFile); } workBookReader = IWorkBookReader.newInstance(uploadFile, bigDataMode, batchCount); return uploadFile; } public File openDownloadFile(DataReader dataReader, DataIO dataIO, IOSpeedMode bigDataMode) throws Exception { IUser user = dataReader.getUser(); downloadFile = FileRepository.createExportTempFile(user, dataIO.getTemplateName(), dataIO.getToName()); if (downloadFile == null || !downloadFile.exists()) { throw new Exception("download file not exists: " + downloadFile); } workBookWriter = IWorkBookWriter.newInstance(downloadFile, bigDataMode, batchCount); return downloadFile; } public ISheetReader openSheetReader(DataIO dataIO) throws Exception { ISheetReader sheetReader = workBookReader.openSheetReader(dataIO); return sheetReader; } public ISheetWriter openSheetWriter(DataIO dataIO) { ISheetWriter sheetWriter = workBookWriter.openSheetWriter(dataIO); return sheetWriter; } public void close() { //1. if (workBookReader != null) { workBookReader.close(); } //2. if (workBookWriter != null && !workBookWriter.close) { workBookWriter.close(); } } public String getUploadFileName() { return uploadFile.getName(); } public File getDownloadFile() { return downloadFile; } public String getDownloadFileName() { return downloadFile.getName(); } public void closeReader() { // TODO Auto-generated method stub } }