📄 impaction.java
字号:
package cn.myapps.core.expimp.imp.action;
import java.io.File;
import java.util.Collection;
import java.util.Iterator;
import javax.sql.DataSource;
import cn.myapps.base.action.BaseAction;
import cn.myapps.base.dao.PersistenceUtils;
import cn.myapps.constans.Environment;
import cn.myapps.core.deploy.module.ejb.ModuleProcess;
import cn.myapps.core.deploy.module.ejb.ModuleVO;
import cn.myapps.core.expimp.imp.ejb.ImpObject;
import cn.myapps.core.expimp.imp.util.ImpOperator;
import cn.myapps.util.ProcessFactory;
import cn.myapps.util.ZipUtil;
import cn.myapps.util.file.FileOperate;
import cn.myapps.util.property.DefaultProperty;
import com.opensymphony.webwork.ServletActionContext;
public class ImpAction extends BaseAction {
/**
*
*/
private static final long serialVersionUID = 8303636509753933546L;
private File impFile;
private String impFilePath;
private String impFileFileName;
private String impFileContentType;
private ImpObject _impobj;
public ImpAction() throws ClassNotFoundException {
super(ProcessFactory.createProcess(ModuleProcess.class), new ModuleVO());
_impobj = new ImpObject();
}
public String doStart() throws Exception {
return SUCCESS;
}
public String doNext() throws Exception {
return SUCCESS;
}
public String doUpload() throws Exception {
ImpOperator io = new ImpOperator(getDataSource());
if (impFileFileName == null) {
addFieldError("", "Please choose upload file");
return INPUT;
}
String extension = impFileFileName.substring(
impFileFileName.lastIndexOf(".") + 1).toLowerCase();
System.out.println("contentType->" + impFileContentType);
if (extension.equals("zip")) {
String zipFileDir = impFileFileName.substring(0, impFileFileName
.lastIndexOf("."));
// 解压文件目录
String dirPath = getImportUploadDir() + "/" + zipFileDir;
ZipUtil.decompress(impFile, dirPath); // 解压文件到服务器
// 根据扩展名获取相应文件
File[] files = FileOperate.getAllFilesInFolderByExtension(dirPath,
"xml");
if (files.length > 0) {
Collection dynaBeans = io.parse(files[0]);
_impobj.setDataList(dynaBeans);
this.setImpFilePath(dirPath);
// 把上传的zip文件保存到服务器uploads/import目录
String zipFilePath = getImportUploadDir() + "/"
+ impFileFileName;
FileOperate.writeFile(zipFilePath, impFile);
} else {
addFieldError("",
"The zip file does not contain a xml data file");
return INPUT;
}
if (_impobj.isImpAll()) {
return NONE;
} else {
return SUCCESS;
}
} else {
addFieldError("", "Invalid file type:\"" + extension + "\","
+ " Allowed file type is zip");
return INPUT;
}
}
public String doImp() {
try {
ImpOperator io = new ImpOperator(getDataSource());
File[] dataFiles = FileOperate.getAllFilesInFolderByExtension(
impFilePath, "xml");
Collection colls = io.parse(dataFiles[0]);
Collection impDatas = _impobj.getAllImportDatas(colls);
Collection impImageUrls = _impobj.getAllImportImageUrls(colls,
getEnvironment());
File[] files = FileOperate.getAllFilesInFolder(impFilePath);
io.writeFilesToDir(files, impImageUrls, getEnvironment());
Collection messages = io.writeDataToDB(impDatas);
for (Iterator iter = messages.iterator(); iter.hasNext();) {
String message = (String) iter.next();
addActionMessage(message);
}
FileOperate.deleteAllFilesInFolder(impFilePath);
new File(impFilePath).delete();
} catch (Exception e) {
this.addFieldError("", e.getMessage());
return INPUT;
}
return SUCCESS;
}
public File getImpFile() {
return impFile;
}
public void setImpFile(File impFile) {
this.impFile = impFile;
}
public String getImpFilePath() {
return impFilePath;
}
public void setImpFilePath(String impFilePath) {
this.impFilePath = impFilePath;
}
public ImpObject get_impobj() {
return _impobj;
}
public void set_impobj(ImpObject _impobj) {
this._impobj = _impobj;
}
public DataSource getDataSource() throws Exception {
DataSource ds = PersistenceUtils.getDataSource();
return ds;
}
/**
* 获取uploads/import目录路径
*
* @param file
* @return
* @throws Exception
*/
private String getImportUploadDir() throws Exception {
Environment evt = (Environment) getContext().getApplication().get(
Environment.class.getName());
String path = DefaultProperty.getProperty("IMPORT_PATH");
String dirPath = evt.getWebcontextRealPath(path);
File dir = new File(dirPath);
if (!dir.exists()) {
dir.mkdirs();
}
return dirPath;
}
public String getImpFileFileName() {
return impFileFileName;
}
public void setImpFileFileName(String impFileFileName) {
this.impFileFileName = impFileFileName;
}
public String getImpFileContentType() {
return impFileContentType;
}
public void setImpFileContentType(String impFileContentType) {
this.impFileContentType = impFileContentType;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -