Moved filtering into new TemporalFileFilter

This commit is contained in:
Josh Stark 2016-10-30 08:57:51 +00:00
parent 5f12c12738
commit 855d7c9bbd
3 changed files with 46 additions and 10 deletions

View File

@ -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) {

View File

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

View File

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