From e4c20f8f53a4f21cf3e9baf6b8682007bc631141 Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Sun, 23 Sep 2007 11:06:53 +0000
Subject: [PATCH] refactor: get rid of LocalFileSystem.listFiles()

SVN: 1812
---
 .../ch/systemsx/cisd/datamover/DataMover.java |  4 +--
 .../cisd/datamover/IncomingProcessor.java     | 15 ++++++++--
 .../cisd/datamover/LocalProcessor.java        | 29 ++++++++++++-------
 .../filesystem/FileSysOparationsFactory.java  |  4 +--
 .../datamover/filesystem/LocalFileSystem.java | 23 ---------------
 5 files changed, 34 insertions(+), 41 deletions(-)

diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java b/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java
index 55f8df800e7..5bc96a709e3 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java
@@ -22,7 +22,6 @@ import ch.systemsx.cisd.common.utilities.ITerminable;
 import ch.systemsx.cisd.common.utilities.DirectoryScanningTimerTask.IPathHandler;
 import ch.systemsx.cisd.datamover.filesystem.RemoteMonitoredMoverFactory;
 import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory;
-import ch.systemsx.cisd.datamover.filesystem.intf.IPathImmutableCopier;
 import ch.systemsx.cisd.datamover.utils.FileStore;
 import ch.systemsx.cisd.datamover.utils.LazyPathHandler;
 import ch.systemsx.cisd.datamover.utils.LocalBufferDirs;
@@ -94,10 +93,9 @@ public class DataMover
 
     private LazyPathHandler startupLocalProcessing(LazyPathHandler outgoingHandler)
     {
-        final IPathImmutableCopier copier = factory.getImmutableCopier();
         final IPathHandler localProcesingHandler =
                 LocalProcessor.createAndRecover(parameters, bufferDirs.getCopyCompleteDir(), bufferDirs
-                        .getReadyToMoveDir(), bufferDirs.getTempDir(), outgoingHandler, copier);
+                        .getReadyToMoveDir(), bufferDirs.getTempDir(), outgoingHandler, factory);
         return LazyPathHandler.create(localProcesingHandler, "Local Processor");
     }
 
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java b/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java
index 26faa01c10f..327f3bf4980 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java
@@ -4,7 +4,14 @@ import java.io.File;
 import java.io.FileFilter;
 import java.util.Timer;
 
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+
 import ch.systemsx.cisd.common.Constants;
+import ch.systemsx.cisd.common.logging.ISimpleLogger;
+import ch.systemsx.cisd.common.logging.Log4jSimpleLogger;
+import ch.systemsx.cisd.common.logging.LogCategory;
+import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.utilities.DirectoryScanningTimerTask;
 import ch.systemsx.cisd.common.utilities.ITerminable;
 import ch.systemsx.cisd.common.utilities.NamePrefixFileFilter;
@@ -39,6 +46,10 @@ import ch.systemsx.cisd.datamover.utils.QuietPeriodFileFilter;
  */
 public class IncomingProcessor
 {
+    private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, IncomingProcessor.class);
+
+    private static final ISimpleLogger errorLog = new Log4jSimpleLogger(Level.ERROR, operationLog);
+    
     private final Parameters parameters;
 
     private final IFileSysOperationsFactory factory;
@@ -224,7 +235,7 @@ public class IncomingProcessor
 
         private void recoverIncomingInProgress(FileStore incomingStore, File copyInProgressDir, File copyCompleteDir)
         {
-            final File[] files = LocalFileSystem.listFiles(copyInProgressDir);
+            final File[] files = incomingReadOperations.listFiles(copyInProgressDir, errorLog);
             if (files == null || files.length == 0)
             {
                 return; // directory is empty, no recovery is needed
@@ -283,7 +294,7 @@ public class IncomingProcessor
         // schedule processing of all resources which were previously copied
         private void recoverIncomingCopyComplete(File copyCompleteDir, IPathHandler localProcessor)
         {
-            final File[] files = LocalFileSystem.listFiles(copyCompleteDir);
+            final File[] files = incomingReadOperations.listFiles(copyCompleteDir, errorLog);
             if (files == null || files.length == 0)
             {
                 return; // directory is empty, no recovery is needed
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/LocalProcessor.java b/datamover/source/java/ch/systemsx/cisd/datamover/LocalProcessor.java
index 31f50123c24..9bd8e6a1503 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/LocalProcessor.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/LocalProcessor.java
@@ -31,7 +31,9 @@ import ch.systemsx.cisd.common.utilities.RegexFileFilter;
 import ch.systemsx.cisd.common.utilities.DirectoryScanningTimerTask.IPathHandler;
 import ch.systemsx.cisd.common.utilities.RegexFileFilter.PathType;
 import ch.systemsx.cisd.datamover.filesystem.LocalFileSystem;
+import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory;
 import ch.systemsx.cisd.datamover.filesystem.intf.IPathImmutableCopier;
+import ch.systemsx.cisd.datamover.filesystem.intf.IReadPathOperations;
 import ch.systemsx.cisd.datamover.utils.LazyPathHandler;
 
 /**
@@ -43,13 +45,17 @@ import ch.systemsx.cisd.datamover.utils.LazyPathHandler;
 public class LocalProcessor implements IPathHandler
 {
     private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, LocalProcessor.class);
-
+    
+    private static final ISimpleLogger errorLog = new Log4jSimpleLogger(Level.ERROR, operationLog);
+    
     private static final Logger notificationLog = LogFactory.getLogger(LogCategory.NOTIFY, LocalProcessor.class);
 
     private final Parameters parameters;
 
     private final IPathImmutableCopier copier;
 
+    private final IReadPathOperations readOperations;
+
     // output: from here data are moved when processing is finished.
     private final File outputDir;
 
@@ -64,20 +70,21 @@ public class LocalProcessor implements IPathHandler
     private final LazyPathHandler outgoingHandler;
 
     private LocalProcessor(Parameters parameters, File outputDir, File tempDir, LazyPathHandler outgoingHandler,
-            IPathImmutableCopier copier)
+            IFileSysOperationsFactory factory)
     {
         this.parameters = parameters;
         this.outputDir = outputDir;
         this.tempDir = tempDir;
         this.outgoingHandler = outgoingHandler;
         this.extraCopyDirOrNull = parameters.tryGetExtraCopyDir();
-        this.copier = copier;
+        this.copier = factory.getImmutableCopier();
+        this.readOperations = factory.getReadAccessor();
     }
 
     public static final IPathHandler createAndRecover(Parameters parameters, File inputDir, File outputDir,
-            File bufferDir, LazyPathHandler lastStepHandler, IPathImmutableCopier copier)
+            File bufferDir, LazyPathHandler lastStepHandler, IFileSysOperationsFactory factory)
     {
-        LocalProcessor handler = new LocalProcessor(parameters, outputDir, bufferDir, lastStepHandler, copier);
+        LocalProcessor handler = new LocalProcessor(parameters, outputDir, bufferDir, lastStepHandler, factory);
         handler.recoverAfterShutdown(inputDir);
         return handler;
     }
@@ -86,13 +93,13 @@ public class LocalProcessor implements IPathHandler
 
     private void recoverAfterShutdown(File inputDir)
     {
-        recoverTemporaryExtraCopy(tempDir, inputDir, extraCopyDirOrNull);
-        recoverRegisterReadyForOutgoing(outputDir, outgoingHandler);
+        recoverTemporaryExtraCopy(inputDir);
+        recoverRegisterReadyForOutgoing();
     }
 
-    private static void recoverTemporaryExtraCopy(File tempDir, File inputDir, File extraCopyDirOrNull)
+    private void recoverTemporaryExtraCopy(File inputDir)
     {
-        final File[] files = LocalFileSystem.listFiles(tempDir);
+        final File[] files = readOperations.listFiles(tempDir, errorLog);
         if (files == null || files.length == 0)
         {
             return; // directory is empty, no recovery is needed
@@ -122,9 +129,9 @@ public class LocalProcessor implements IPathHandler
         return new File(inputDir, file.getName()).exists();
     }
 
-    private static void recoverRegisterReadyForOutgoing(File outputDir, IPathHandler outgoingHandler)
+    private void recoverRegisterReadyForOutgoing()
     {
-        File[] files = LocalFileSystem.listFiles(outputDir);
+        File[] files = readOperations.listFiles(outputDir, errorLog);
         if (files == null || files.length == 0)
         {
             return; // directory is empty, no recovery is needed
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileSysOparationsFactory.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileSysOparationsFactory.java
index 1efb8c07710..cfb8656e614 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileSysOparationsFactory.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileSysOparationsFactory.java
@@ -92,9 +92,9 @@ public class FileSysOparationsFactory implements IFileSysOperationsFactory
                     return FileUtilities.listFiles(directory, filter, loggerOrNull);
                 }
 
-                public File[] listFiles(File directory, ISimpleLogger logger)
+                public File[] listFiles(File directory, ISimpleLogger loggerOrNull)
                 {
-                    return LocalFileSystem.listFiles(directory);
+                    return FileUtilities.listFiles(directory, FileUtilities.ACCEPT_ALL_FILTER, loggerOrNull);
                 }
             };
     }
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/LocalFileSystem.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/LocalFileSystem.java
index 282138bd763..3ee858b70e2 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/LocalFileSystem.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/LocalFileSystem.java
@@ -17,15 +17,11 @@
 package ch.systemsx.cisd.datamover.filesystem;
 
 import java.io.File;
-import java.io.FileFilter;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateFormatUtils;
-import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 
-import ch.systemsx.cisd.common.logging.ISimpleLogger;
-import ch.systemsx.cisd.common.logging.Log4jSimpleLogger;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.utilities.FileUtilities;
@@ -47,25 +43,6 @@ public class LocalFileSystem
 
     private static final long MILLIS_TO_SLEEP_ON_FAILURE = 5000;
 
-    /**
-     * Lists all resources in a given directory, logs errors.
-     */
-    public static File[] listFiles(File directory)
-    {
-        final ISimpleLogger errorLogger = new Log4jSimpleLogger(Level.ERROR, operationLog);
-        /**
-         * Lists all resources in a given directory, logs errors.
-         */
-        FileFilter acceptAll = new FileFilter()
-            {
-                public boolean accept(File file)
-                {
-                    return true;
-                }
-            };
-        return FileUtilities.listFiles(directory, acceptAll, errorLogger);
-    }
-
     /**
      * Moves source file to destination directory.
      */
-- 
GitLab