From 0629ce1be61015b1dba641aadd8cc716305df8ff Mon Sep 17 00:00:00 2001 From: ribeaudc <ribeaudc> Date: Mon, 19 May 2008 21:02:31 +0000 Subject: [PATCH] change: - Try to use 'IFileStore' instead of 'FileStore' when possible. SVN: 6149 --- .../ch/systemsx/cisd/datamover/DataMover.java | 19 ++++--- .../cisd/datamover/IncomingProcessor.java | 10 ++-- .../systemsx/cisd/datamover/Parameters.java | 6 +-- .../filesystem/FileStoreFactory.java | 17 +++---- .../RemoteMonitoredMoverFactory.java | 3 +- .../datamover/filesystem/intf/FileStore.java | 19 +++---- .../datamover/filesystem/intf/IFileStore.java | 2 +- .../filesystem/intf/StoreItemLocation.java | 11 ++-- .../filesystem/store/FileStoreLocal.java | 2 +- .../filesystem/store/FileStoreRemote.java | 3 +- .../store/FileStoreRemoteMounted.java | 3 +- .../datamover/utils/DataCompletedFilter.java | 50 ++++++++++--------- .../systemsx/cisd/datamover/SelfTestTest.java | 11 ++-- .../remote/CopyActivityMonitorTest.java | 2 +- 14 files changed, 81 insertions(+), 77 deletions(-) diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java b/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java index 0933125a803..00277d8aea7 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java @@ -32,7 +32,6 @@ import ch.systemsx.cisd.common.utilities.TimerHelper; import ch.systemsx.cisd.common.utilities.TriggeringTimerTask; import ch.systemsx.cisd.datamover.filesystem.FileStoreFactory; import ch.systemsx.cisd.datamover.filesystem.RemoteMonitoredMoverFactory; -import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory; import ch.systemsx.cisd.datamover.utils.LocalBufferDirs; @@ -68,26 +67,26 @@ public class DataMover * * @return object which can be used to terminate the process and all its threads */ - public static final ITerminable start(Parameters parameters, IFileSysOperationsFactory factory) + public static final ITerminable start(final Parameters parameters, final IFileSysOperationsFactory factory) { return start(parameters, factory, createLocalBufferDirs(parameters)); } - private static LocalBufferDirs createLocalBufferDirs(Parameters parameters) + private static LocalBufferDirs createLocalBufferDirs(final Parameters parameters) { return new LocalBufferDirs(parameters.getBufferDirectoryPath(), LOCAL_COPY_IN_PROGRESS_DIR, LOCAL_COPY_COMPLETE_DIR, LOCAL_READY_TO_MOVE_DIR, LOCAL_TEMP_DIR); } /** Allows to specify buffer directories. Exposed for testing purposes. */ - public static final ITerminable start(Parameters parameters, IFileSysOperationsFactory factory, - LocalBufferDirs localBufferDirs) + public static final ITerminable start(final Parameters parameters, final IFileSysOperationsFactory factory, + final LocalBufferDirs localBufferDirs) { return new DataMover(parameters, factory, localBufferDirs).start(); } - private DataMover(Parameters parameters, IFileSysOperationsFactory factory, - LocalBufferDirs bufferDirs) + private DataMover(final Parameters parameters, final IFileSysOperationsFactory factory, + final LocalBufferDirs bufferDirs) { this.parameters = parameters; this.factory = factory; @@ -154,7 +153,7 @@ public class DataMover private final DataMoverProcess createOutgoingMovingProcess() { - final FileStore outgoingStore = parameters.getOutgoingStore(factory); + final IFileStore outgoingStore = parameters.getOutgoingStore(factory); final File readyToMoveDir = bufferDirs.getReadyToMoveDir(); final IFileStore readyToMoveStore = FileStoreFactory.createLocal(readyToMoveDir, "ready-to-move", factory); @@ -170,7 +169,7 @@ public class DataMover return new DataMoverProcess(outgoingMovingTask, "Final Destination Mover"); } - private IStoreHandler createRemotePathMover(IFileStore source, FileStore destination) + private IStoreHandler createRemotePathMover(final IFileStore source, final IFileStore destination) { return RemoteMonitoredMoverFactory.create(source, destination, parameters); } @@ -182,7 +181,7 @@ public class DataMover public boolean terminate() { boolean ok = true; - for (ITerminable terminable : terminables) + for (final ITerminable terminable : terminables) { ok = ok && terminable.terminate(); } diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java b/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java index 4fd17c59f3f..3a0a2ab7cfa 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java @@ -35,7 +35,6 @@ import ch.systemsx.cisd.common.utilities.StoreItem; import ch.systemsx.cisd.datamover.common.MarkerFile; import ch.systemsx.cisd.datamover.filesystem.FileStoreFactory; import ch.systemsx.cisd.datamover.filesystem.RemoteMonitoredMoverFactory; -import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IExtendedFileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory; @@ -117,7 +116,7 @@ public class IncomingProcessor implements IRecoverableTimerTaskFactory } return filterBank; } - + public TimerTask createRecoverableTimerTask() { return new IncomingProcessorRecoveryTask(); @@ -127,8 +126,9 @@ public class IncomingProcessor implements IRecoverableTimerTaskFactory { final IStoreHandler pathHandler = createIncomingMovingPathHandler(); final DirectoryScanningTimerTask movingTask = - new DirectoryScanningTimerTask(new FileScannedStore(incomingStore, - storeItemFilter), bufferDirs.getCopyInProgressDir(), pathHandler, + new DirectoryScanningTimerTask( + new FileScannedStore(incomingStore, storeItemFilter), bufferDirs + .getCopyInProgressDir(), pathHandler, NUMBER_OF_ERRORS_IN_LISTING_IGNORED); return new DataMoverProcess(movingTask, "Mover of Incoming Data", this); } @@ -216,7 +216,7 @@ public class IncomingProcessor implements IRecoverableTimerTaskFactory } private IStoreHandler createRemotePathMover(final IFileStore sourceDirectory, - final FileStore destinationDirectory) + final IFileStore destinationDirectory) { return RemoteMonitoredMoverFactory .create(sourceDirectory, destinationDirectory, parameters); diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/Parameters.java b/datamover/source/java/ch/systemsx/cisd/datamover/Parameters.java index 0794ff1bbc7..790d7fc033b 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/Parameters.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/Parameters.java @@ -45,7 +45,7 @@ import ch.systemsx.cisd.common.utilities.IExitHandler; import ch.systemsx.cisd.common.utilities.PropertyUtils; import ch.systemsx.cisd.common.utilities.SystemExit; import ch.systemsx.cisd.datamover.filesystem.FileStoreFactory; -import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; +import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory; import ch.systemsx.cisd.datamover.intf.IFileSysParameters; import ch.systemsx.cisd.datamover.intf.ITimingParameters; @@ -605,7 +605,7 @@ public final class Parameters implements ITimingParameters, IFileSysParameters /** * @return The store to monitor for new files and directories to move to the buffer. */ - public final FileStore getIncomingStore(final IFileSysOperationsFactory factory) + public final IFileStore getIncomingStore(final IFileSysOperationsFactory factory) { return FileStoreFactory.createStore(incomingDirectory, INCOMING_KIND_DESC, incomingHost, treatIncomingAsRemote, factory); @@ -622,7 +622,7 @@ public final class Parameters implements ITimingParameters, IFileSysParameters /** * @return The store to copy the data to. */ - public final FileStore getOutgoingStore(final IFileSysOperationsFactory factory) + public final IFileStore getOutgoingStore(final IFileSysOperationsFactory factory) { return FileStoreFactory.createStore(outgoingDirectory, OUTGOING_KIND_DESC, outgoingHost, true, factory); diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileStoreFactory.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileStoreFactory.java index fd45bba54cd..80d0a19dd98 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileStoreFactory.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileStoreFactory.java @@ -20,6 +20,7 @@ import java.io.File; import ch.systemsx.cisd.common.highwatermark.FileWithHighwaterMark; import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; +import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory; import ch.systemsx.cisd.datamover.filesystem.store.FileStoreLocal; import ch.systemsx.cisd.datamover.filesystem.store.FileStoreRemote; @@ -30,8 +31,6 @@ import ch.systemsx.cisd.datamover.filesystem.store.FileStoreRemoteMounted; * * @author Tomasz Pylak */ -// TODO 2008-05-13, Christian Ribeaud: This factory should return IFileStore and not the concrete -// class FileStore. public final class FileStoreFactory { private FileStoreFactory() @@ -42,7 +41,7 @@ public final class FileStoreFactory /** * use when file store is on a local host. */ - public static final FileStore createLocal(final FileWithHighwaterMark path, final String kind, + public static final IFileStore createLocal(final FileWithHighwaterMark path, final String kind, final IFileSysOperationsFactory factory) { return new FileStoreLocal(path, kind, factory); @@ -51,14 +50,14 @@ public final class FileStoreFactory /** * use when file store is on a local host. */ - public static final FileStore createLocal(final File readyToMoveDir, final String string, + public static final IFileStore createLocal(final File readyToMoveDir, final String string, final IFileSysOperationsFactory factory) { return createLocal(new FileWithHighwaterMark(readyToMoveDir), string, factory); } /** use when file store is on a remote share mounted on local host */ - public static final FileStore createRemoteShare(final FileWithHighwaterMark path, + public static final IFileStore createRemoteShare(final FileWithHighwaterMark path, final String kind, final IFileSysOperationsFactory factory) { return new FileStoreRemoteMounted(path, kind, factory); @@ -69,7 +68,7 @@ public final class FileStoreFactory * * @param factory */ - public static final FileStore createRemoteHost(final FileWithHighwaterMark path, + public static final IFileStore createRemoteHost(final FileWithHighwaterMark path, final String host, final String kind, final IFileSysOperationsFactory factory) { return new FileStoreRemote(path, host, kind, factory); @@ -80,7 +79,7 @@ public final class FileStoreFactory * * @param factory */ - public static final FileStore createRemoteHost(final File path, final String host, + public static final IFileStore createRemoteHost(final File path, final String host, final String kind, final IFileSysOperationsFactory factory) { return createRemoteHost(new FileWithHighwaterMark(path), host, kind, factory); @@ -89,7 +88,7 @@ public final class FileStoreFactory /** * Returns the most convenient <code>IFileStore</code> implementation with given <var>values</var>. */ - public final static FileStore createStore(final File path, final String kind, + public final static IFileStore createStore(final File path, final String kind, final String hostOrNull, final boolean isRemote, final IFileSysOperationsFactory factory) { return createStore(new FileWithHighwaterMark(path), kind, hostOrNull, isRemote, factory); @@ -98,7 +97,7 @@ public final class FileStoreFactory /** * Returns the most convenient <code>IFileStore</code> implementation with given <var>values</var>. */ - public final static FileStore createStore(final FileWithHighwaterMark path, final String kind, + public final static IFileStore createStore(final FileWithHighwaterMark path, final String kind, final String hostOrNull, final boolean isRemote, final IFileSysOperationsFactory factory) { if (hostOrNull != null) diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java index 0f2ce786b02..0f739f8dfa4 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java @@ -17,7 +17,6 @@ package ch.systemsx.cisd.datamover.filesystem; import ch.systemsx.cisd.common.utilities.IStoreHandler; -import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier; import ch.systemsx.cisd.datamover.filesystem.remote.CopyActivityMonitor; @@ -43,7 +42,7 @@ public final class RemoteMonitoredMoverFactory * @param parameters The timing parameters used for monitoring and reporting stall situations. */ public static final IStoreHandler create(final IFileStore sourceDirectory, - final FileStore destinationDirectory, final ITimingParameters parameters) + final IFileStore destinationDirectory, final ITimingParameters parameters) { final IStoreCopier copier = sourceDirectory.getCopier(destinationDirectory); final CopyActivityMonitor monitor = diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/FileStore.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/FileStore.java index 965eb8b69aa..a52a15d401a 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/FileStore.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/FileStore.java @@ -78,12 +78,6 @@ public abstract class FileStore implements IFileStore } } - public final StoreItemLocation getStoreItemLocation(StoreItem item) - { - return new StoreItemLocation(hostOrNull, StoreItem.asFile(getPath(), item) - .getAbsolutePath()); - } - protected final File getPath() { return fileWithHighwaterMark.getFile(); @@ -106,13 +100,13 @@ public abstract class FileStore implements IFileStore // does not take into account the fact, that the destination cannot be overwritten and must be // deleted beforehand - protected final IStoreCopier constructStoreCopier(final FileStore destinationDirectory, + protected final IStoreCopier constructStoreCopier(final IFileStore destinationDirectory, final boolean requiresDeletionBeforeCreation) { final IPathCopier copier = factory.getCopier(requiresDeletionBeforeCreation); final String srcHostOrNull = hostOrNull; - final String destHostOrNull = destinationDirectory.hostOrNull; - final File destPath = destinationDirectory.getPath(); + final String destHostOrNull = ((FileStore) destinationDirectory).hostOrNull; + final File destPath = ((FileStore) destinationDirectory).getPath(); return new IStoreCopier() { public Status copy(final StoreItem item) @@ -141,6 +135,12 @@ public abstract class FileStore implements IFileStore }; } + public final StoreItemLocation getStoreItemLocation(final StoreItem item) + { + return new StoreItemLocation(hostOrNull, StoreItem.asFile(getPath(), item) + .getAbsolutePath()); + } + /** * Returns <code>true</code>, if the file store resides on a remote computer and * <code>false</code> otherwise. @@ -148,6 +148,7 @@ public abstract class FileStore implements IFileStore * Note that even if this method returns <code>true</code> paths on this file system might be * reached via local file system operation, if the remote file system is provided as a remote * share and mounted via NFS or CIFS. + * </p> */ public final boolean isRemote() { diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IFileStore.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IFileStore.java index 0c6f06ec714..4bcf53b53e4 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IFileStore.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IFileStore.java @@ -106,7 +106,7 @@ public interface IFileStore extends ISelfTestable * must be readable and writable. Copier will override the destination item if it * already exists. */ - public IStoreCopier getCopier(FileStore destinationDirectory); + public IStoreCopier getCopier(IFileStore destinationDirectory); // returned description should give the user the idea about file location. You should not use // the result for diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/StoreItemLocation.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/StoreItemLocation.java index 50734476cbe..751075558ca 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/StoreItemLocation.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/StoreItemLocation.java @@ -19,21 +19,22 @@ package ch.systemsx.cisd.datamover.filesystem.intf; import ch.systemsx.cisd.common.utilities.StoreItem; /** - * Bean for the location of a {@link StoreItem} on a local or remote file system. - * + * Bean for the location of a {@link StoreItem} on a local or remote file system. + * * @author Franz-Josef Elmer */ -public class StoreItemLocation +public final class StoreItemLocation { private final String host; + private final String absolutePath; /** * Creates a new instance for the specified host and absolute path. - * + * * @param hostOrNull If not <code>null</code> the file is on a remote file system. */ - public StoreItemLocation(String hostOrNull, String absolutePath) + public StoreItemLocation(final String hostOrNull, final String absolutePath) { if (absolutePath == null) { diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreLocal.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreLocal.java index aadfe1d2372..487cfbd0534 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreLocal.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreLocal.java @@ -106,7 +106,7 @@ public class FileStoreLocal extends FileStore implements IExtendedFileStore return FileUtilities.checkDirectoryFullyAccessible(getPath(), getDescription()); } - public final IStoreCopier getCopier(final FileStore destinationDirectory) + public final IStoreCopier getCopier(final IFileStore destinationDirectory) { boolean requiresDeletion = false; final IStoreCopier simpleCopier = diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemote.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemote.java index 2789c72fbd1..a2da62ea5c2 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemote.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemote.java @@ -33,6 +33,7 @@ import ch.systemsx.cisd.common.logging.LogFactory; import ch.systemsx.cisd.common.utilities.StoreItem; import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IExtendedFileStore; +import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory; import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier; @@ -97,7 +98,7 @@ public class FileStoreRemote extends FileStore return factory.getCopier(false).existsRemotely(getPath(), tryGetHost()); } - public final IStoreCopier getCopier(final FileStore destinationDirectory) + public final IStoreCopier getCopier(final IFileStore destinationDirectory) { final boolean requiresDeletion = false; return constructStoreCopier(destinationDirectory, requiresDeletion); diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemoteMounted.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemoteMounted.java index 6fd2afd575a..5499b154705 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemoteMounted.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemoteMounted.java @@ -25,6 +25,7 @@ import ch.systemsx.cisd.common.logging.ISimpleLogger; import ch.systemsx.cisd.common.utilities.StoreItem; import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IExtendedFileStore; +import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory; import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier; @@ -56,7 +57,7 @@ public final class FileStoreRemoteMounted extends FileStore return null; } - public final IStoreCopier getCopier(final FileStore destinationDirectory) + public final IStoreCopier getCopier(final IFileStore destinationDirectory) { final boolean requiresDeletion = false; return constructStoreCopier(destinationDirectory, requiresDeletion); diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/utils/DataCompletedFilter.java b/datamover/source/java/ch/systemsx/cisd/datamover/utils/DataCompletedFilter.java index e56ce321fd1..b276e5978a5 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/utils/DataCompletedFilter.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/utils/DataCompletedFilter.java @@ -31,8 +31,6 @@ import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore; import ch.systemsx.cisd.datamover.filesystem.intf.StoreItemLocation; /** - * - * * @author Franz-Josef Elmer */ public class DataCompletedFilter implements IStoreItemFilter @@ -40,13 +38,17 @@ public class DataCompletedFilter implements IStoreItemFilter private static final class Status extends AbstractHashable { static final Status NULL = new Status(); - + private final boolean ok; + private final boolean run; + private final boolean terminated; + private final int exitValue; + private final boolean blocked; - + private Status() { ok = true; @@ -56,7 +58,7 @@ public class DataCompletedFilter implements IStoreItemFilter exitValue = Integer.MAX_VALUE; } - Status(ProcessResult processResult) + Status(final ProcessResult processResult) { ok = processResult.isOK(); run = processResult.isRun(); @@ -64,7 +66,7 @@ public class DataCompletedFilter implements IStoreItemFilter blocked = processResult.hasBlocked(); exitValue = processResult.exitValue(); } - + public final boolean isOk() { return ok; @@ -90,7 +92,7 @@ public class DataCompletedFilter implements IStoreItemFilter return blocked; } } - + private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, DataCompletedFilter.class); @@ -99,15 +101,17 @@ public class DataCompletedFilter implements IStoreItemFilter private final static Logger notificationLog = LogFactory.getLogger(LogCategory.NOTIFY, DataCompletedFilter.class); - + private final IFileStore fileStore; + private final String dataCompletedScript; + private final long dataCompletedScriptTimeout; - - private Status lastStatus = Status.NULL; - public DataCompletedFilter(IFileStore fileStore, String dataCompletedScript, - long dataCompletedScriptTimeout) + private Status lastStatus = Status.NULL; + + public DataCompletedFilter(final IFileStore fileStore, final String dataCompletedScript, + final long dataCompletedScriptTimeout) { if (dataCompletedScript == null) { @@ -121,18 +125,18 @@ public class DataCompletedFilter implements IStoreItemFilter } this.fileStore = fileStore; } - - public boolean accept(StoreItem item) + + public boolean accept(final StoreItem item) { - List<String> commandLine = createCommand(item); - ProcessResult result = + final List<String> commandLine = createCommand(item); + final ProcessResult result = ProcessExecutionHelper.run(commandLine, dataCompletedScriptTimeout, operationLog, machineLog); - Status status = new Status(result); - boolean ok = status.isOk(); + final Status status = new Status(result); + final boolean ok = status.isOk(); if (status.equals(lastStatus) == false) { - String message = + final String message = "Processing status of data completed script has changed to " + status + ". Command line: " + commandLine; if (ok) @@ -151,14 +155,14 @@ public class DataCompletedFilter implements IStoreItemFilter return ok; } - private List<String> createCommand(StoreItem item) + private List<String> createCommand(final StoreItem item) { - StoreItemLocation storeItemLocation = fileStore.getStoreItemLocation(item); - List<String> command = new ArrayList<String>(); + final StoreItemLocation storeItemLocation = fileStore.getStoreItemLocation(item); + final List<String> command = new ArrayList<String>(); command.add("sh"); command.add(dataCompletedScript); command.add(storeItemLocation.getAbsolutePath()); - String host = storeItemLocation.getHost(); + final String host = storeItemLocation.getHost(); if (host != null) { command.add(host); diff --git a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/SelfTestTest.java b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/SelfTestTest.java index aade926ab3a..a9552fd336c 100644 --- a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/SelfTestTest.java +++ b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/SelfTestTest.java @@ -29,7 +29,6 @@ import ch.systemsx.cisd.common.exceptions.Status; import ch.systemsx.cisd.common.logging.LogInitializer; import ch.systemsx.cisd.common.utilities.FileUtilities; import ch.systemsx.cisd.datamover.filesystem.FileStoreFactory; -import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IPathCopier; import ch.systemsx.cisd.datamover.testhelper.FileOperationsUtil; @@ -49,7 +48,7 @@ public class SelfTestTest private static final File incomingDirectory = new File(workingDirectory, "local/incoming"); - private static final FileStore incomingStore = createLocalStore(incomingDirectory, "incoming"); + private static final IFileStore incomingStore = createLocalStore(incomingDirectory, "incoming"); private static final File bufferDirectory = new File(workingDirectory, "local/buffer"); @@ -138,7 +137,7 @@ public class SelfTestTest public void testHappyCaseWithRemoteHost() { final String outgoingHost = "some_remote_host"; - final FileStore remoteHostOutgoingStore = + final IFileStore remoteHostOutgoingStore = createRemoteStore(outgoingDirectory, outgoingHost, "outgoing"); SelfTest.check(mockCopier, remoteHostOutgoingStore); } @@ -161,18 +160,18 @@ public class SelfTestTest public void testNonExistentPaths() { final File nonExistentIncomingDirectory = new File(workingDirectory, "data"); - final FileStore nonExistentIncomingStore = + final IFileStore nonExistentIncomingStore = createLocalStore(nonExistentIncomingDirectory, "incoming"); SelfTest.check(mockCopier, nonExistentIncomingStore, bufferStore, outgoingStore); } - private FileStore createRemoteStore(File path, String host, String description) + private final IFileStore createRemoteStore(File path, String host, String description) { return FileStoreFactory.createRemoteHost(path, host, description, FileOperationsUtil .createTestFatory()); } - private static FileStore createLocalStore(File path, String description) + private final static IFileStore createLocalStore(File path, String description) { return FileStoreFactory.createLocal(path, description, FileOperationsUtil .createTestFatory()); diff --git a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitorTest.java b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitorTest.java index 23afc6d3e3c..2464e106479 100644 --- a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitorTest.java +++ b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitorTest.java @@ -206,7 +206,7 @@ public class CopyActivityMonitorTest return localImpl.tryAsExtended(); } - public IStoreCopier getCopier(FileStore destinationDirectory) + public IStoreCopier getCopier(IFileStore destinationDirectory) { return localImpl.getCopier(destinationDirectory); } -- GitLab