mirror of
https://github.com/linuxserver/davos.git
synced 2026-04-20 00:01:51 +08:00
Moved filtering into new TemporalFileFilter
This commit is contained in:
parent
5f12c12738
commit
855d7c9bbd
@ -1,15 +1,13 @@
|
||||
package io.linuxserver.davos.schedule.workflow;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.linuxserver.davos.schedule.workflow.filter.TemporalFileFilter;
|
||||
import io.linuxserver.davos.transfer.ftp.FTPFile;
|
||||
import io.linuxserver.davos.transfer.ftp.exception.FTPException;
|
||||
import io.linuxserver.davos.util.PatternBuilder;
|
||||
@ -33,7 +31,7 @@ public class FilterFilesWorkflowStep extends WorkflowStep {
|
||||
List<String> filters = schedule.getConfig().getFilters();
|
||||
|
||||
List<FTPFile> allFiles = schedule.getConnection().listFiles(schedule.getConfig().getRemoteFilePath());
|
||||
List<FTPFile> filesToFilter = allFiles.stream().filter(after(lastRun)).collect(toList());
|
||||
List<FTPFile> filesToFilter = new TemporalFileFilter(lastRun).filter(allFiles);
|
||||
List<FTPFile> filteredFiles = new ArrayList<FTPFile>();
|
||||
|
||||
if (filters.isEmpty()) {
|
||||
@ -65,12 +63,6 @@ public class FilterFilesWorkflowStep extends WorkflowStep {
|
||||
}
|
||||
}
|
||||
|
||||
private Predicate<? super FTPFile> after(DateTime lastRun) {
|
||||
|
||||
LOGGER.debug("Filtering initial set of files by lastRun. Last run was {}", lastRun);
|
||||
return f -> f.getLastModified().isAfter(lastRun);
|
||||
}
|
||||
|
||||
private void filterFilesByName(List<String> filters, List<FTPFile> filteredFiles, FTPFile file) {
|
||||
|
||||
for (String filter : filters) {
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
package io.linuxserver.davos.schedule.workflow.filter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.linuxserver.davos.transfer.ftp.FTPFile;
|
||||
|
||||
public interface FileFilter {
|
||||
|
||||
List<FTPFile> filter(List<FTPFile> allFiles);
|
||||
}
|
||||
@ -0,0 +1,34 @@
|
||||
package io.linuxserver.davos.schedule.workflow.filter;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.linuxserver.davos.transfer.ftp.FTPFile;
|
||||
|
||||
public class TemporalFileFilter implements FileFilter {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(TemporalFileFilter.class);
|
||||
|
||||
private DateTime lastRun;
|
||||
|
||||
public TemporalFileFilter(DateTime lastRun) {
|
||||
this.lastRun = lastRun;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FTPFile> filter(List<FTPFile> allFiles) {
|
||||
return allFiles.stream().filter(after(lastRun)).collect(toList());
|
||||
}
|
||||
|
||||
private Predicate<? super FTPFile> after(DateTime lastRun) {
|
||||
|
||||
LOGGER.debug("Filtering initial set of files by lastRun. Last run was {}", lastRun);
|
||||
return f -> f.getLastModified().isAfter(lastRun);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user