package indi.qiaolin.test.ureport.provider; import com.bstek.ureport.provider.report.ReportFile; import com.bstek.ureport.provider.report.ReportProvider; import indi.qiaolin.test.ureport.ftp.FTPClientUtils; import lombok.Setter; import org.apache.commons.net.ftp.FTPFile; import org.springframework.beans.factory.annotation.Autowired; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.Calendar; import java.util.List; /** * FTP文件服务器 报表存储 * @author qiaolin * @version 2018年5月9日 * */ @Setter public class FTPProvider implements ReportProvider{ private static final String NAME = "ftp-provider"; private String basePath = "ureport_file/"; private String prefix = "ftp:"; private boolean disabled; @Autowired private FTPClientUtils ftpUtils; @Override public InputStream loadReport(String file) { return ftpUtils.downloadFile(getCorrectName(file)); } @Override public void deleteReport(String file) { ftpUtils.delete(getCorrectName(file)); } @Override public List<ReportFile> getReportFiles() { List<FTPFile> fileList = ftpUtils.getFileList(basePath); List<ReportFile> reportFile = new ArrayList<>(); for (FTPFile ftpFile : fileList) { Calendar timestamp = ftpFile.getTimestamp(); reportFile.add(new ReportFile(ftpFile.getName(), timestamp.getTime())); } return reportFile; } @Override public void saveReport(String file, String content) { ftpUtils.uploadFile(getCorrectName(file), new ByteArrayInputStream(content.getBytes())); } @Override public String getName() { return NAME ; } @Override public boolean disabled() { return disabled; } @Override public String getPrefix() { return prefix; } /** * 获取没有前缀的文件名并加上FTP下存放Ureport文件夹前缀 * @param name * @return */ private String getCorrectName(String name){ if(name.startsWith(prefix)){ name = name.substring(prefix.length(), name.length()); } return basePath + name; } }