From 855d7c9bbdcee8add8647da03b8656ea2984ea32 Mon Sep 17 00:00:00 2001 From: Josh Stark Date: Sun, 30 Oct 2016 08:57:51 +0000 Subject: [PATCH] Moved filtering into new TemporalFileFilter --- .../workflow/FilterFilesWorkflowStep.java | 12 ++----- .../schedule/workflow/filter/FileFilter.java | 10 ++++++ .../workflow/filter/TemporalFileFilter.java | 34 +++++++++++++++++++ 3 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 src/main/java/io/linuxserver/davos/schedule/workflow/filter/FileFilter.java create mode 100644 src/main/java/io/linuxserver/davos/schedule/workflow/filter/TemporalFileFilter.java diff --git a/src/main/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStep.java b/src/main/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStep.java index aec2ccc..abf7f8a 100644 --- a/src/main/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStep.java +++ b/src/main/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStep.java @@ -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 filters = schedule.getConfig().getFilters(); List allFiles = schedule.getConnection().listFiles(schedule.getConfig().getRemoteFilePath()); - List filesToFilter = allFiles.stream().filter(after(lastRun)).collect(toList()); + List filesToFilter = new TemporalFileFilter(lastRun).filter(allFiles); List filteredFiles = new ArrayList(); if (filters.isEmpty()) { @@ -65,12 +63,6 @@ public class FilterFilesWorkflowStep extends WorkflowStep { } } - private Predicate 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 filters, List filteredFiles, FTPFile file) { for (String filter : filters) { diff --git a/src/main/java/io/linuxserver/davos/schedule/workflow/filter/FileFilter.java b/src/main/java/io/linuxserver/davos/schedule/workflow/filter/FileFilter.java new file mode 100644 index 0000000..62b69cb --- /dev/null +++ b/src/main/java/io/linuxserver/davos/schedule/workflow/filter/FileFilter.java @@ -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 filter(List allFiles); +} diff --git a/src/main/java/io/linuxserver/davos/schedule/workflow/filter/TemporalFileFilter.java b/src/main/java/io/linuxserver/davos/schedule/workflow/filter/TemporalFileFilter.java new file mode 100644 index 0000000..6ff8022 --- /dev/null +++ b/src/main/java/io/linuxserver/davos/schedule/workflow/filter/TemporalFileFilter.java @@ -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 filter(List allFiles) { + return allFiles.stream().filter(after(lastRun)).collect(toList()); + } + + private Predicate after(DateTime lastRun) { + + LOGGER.debug("Filtering initial set of files by lastRun. Last run was {}", lastRun); + return f -> f.getLastModified().isAfter(lastRun); + } +}