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