diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java b/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java index b1646aeca9ba8d1030dd5b3cbac5ad324acd454e..95e2ab2dee453c816592e32654192ce5f57a48a2 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java @@ -23,16 +23,16 @@ import ch.systemsx.cisd.common.Constants; import ch.systemsx.cisd.common.utilities.DirectoryScanningTimerTask; import ch.systemsx.cisd.common.utilities.FileUtilities; import ch.systemsx.cisd.common.utilities.IPathHandler; +import ch.systemsx.cisd.common.utilities.IStoreHandler; import ch.systemsx.cisd.common.utilities.ITerminable; import ch.systemsx.cisd.common.utilities.ITriggerable; +import ch.systemsx.cisd.common.utilities.StoreItem; import ch.systemsx.cisd.common.utilities.TimerHelper; import ch.systemsx.cisd.common.utilities.TriggeringTimerTask; -import ch.systemsx.cisd.datamover.common.StoreItem; 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.IFileSysOperationsFactory; -import ch.systemsx.cisd.datamover.filesystem.intf.IStoreHandler; import ch.systemsx.cisd.datamover.utils.LocalBufferDirs; /** diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java b/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java index e1093596856df79d950a5455287800221cc90c95..66cdbc65c6c31c3e0bd71117339118f86b42cfd4 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java @@ -17,8 +17,8 @@ package ch.systemsx.cisd.datamover; import java.io.File; -import java.io.FileFilter; import java.util.TimerTask; +import java.util.Vector; import org.apache.log4j.Level; import org.apache.log4j.Logger; @@ -30,17 +30,16 @@ 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.FileUtilities; -import ch.systemsx.cisd.common.utilities.IPathHandler; -import ch.systemsx.cisd.common.utilities.NamePrefixFileFilter; +import ch.systemsx.cisd.common.utilities.IStoreHandler; +import ch.systemsx.cisd.common.utilities.StoreItem; +import ch.systemsx.cisd.common.utilities.DirectoryScanningTimerTask.IScannedStore; import ch.systemsx.cisd.datamover.common.MarkerFile; -import ch.systemsx.cisd.datamover.common.StoreItem; 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.IFileSysOperationsFactory; import ch.systemsx.cisd.datamover.filesystem.intf.IPathMover; import ch.systemsx.cisd.datamover.filesystem.intf.IRecoverableTimerTaskFactory; -import ch.systemsx.cisd.datamover.filesystem.intf.IStoreHandler; import ch.systemsx.cisd.datamover.filesystem.intf.FileStore.ExtendedFileStore; import ch.systemsx.cisd.datamover.utils.LocalBufferDirs; import ch.systemsx.cisd.datamover.utils.QuietPeriodFileFilter; @@ -98,45 +97,61 @@ public class IncomingProcessor implements IRecoverableTimerTaskFactory private DataMoverProcess create() { final IStoreHandler pathHandler = createIncomingMovingPathHandler(); - final FileFilter filter = createQuietPeriodFilter(); - // TODO 2007-10-10, Tomasz Pylak: refactor not to use incomingStore.getPath() final DirectoryScanningTimerTask movingTask = - new DirectoryScanningTimerTask(incomingStore.getPath(), filter, asPathHandler(pathHandler), - NUMBER_OF_ERRORS_IN_LISTING_IGNORED); + new DirectoryScanningTimerTask(createIncomingStoreScanner(), bufferDirs.getCopyInProgressDir(), + pathHandler, NUMBER_OF_ERRORS_IN_LISTING_IGNORED); return new DataMoverProcess(movingTask, "Mover of Incoming Data", this); } - // TODO 2007-10-10, Tomasz Pylak: remove this when DirectoryScanningTimerTask will work with IStoreHandler. This is a - // quick hack. - private static IPathHandler asPathHandler(final IStoreHandler storeHandler) + private IScannedStore createIncomingStoreScanner() { - return new IPathHandler() + return new IScannedStore() { - public void handle(File path) + public boolean exists(StoreItem item) { - storeHandler.handle(new StoreItem(path.getName())); + return incomingStore.exists(item); + } + + public String getLocationDescription(StoreItem item) + { + return incomingStore.getLocationDescription(item); + } + + public StoreItem[] tryListSortedReadyToProcess(ISimpleLogger loggerOrNull) + { + // Older items will be handled before newer items. + // This becomes important when doing online quality control of measurements. + StoreItem[] items = incomingStore.tryListSortByLastModified(loggerOrNull); + if (items == null) + { + return null; + } + return filterReadyToProcess(items); } }; } - private FileFilter createQuietPeriodFilter() + private StoreItem[] filterReadyToProcess(StoreItem[] items) { - FileFilter quitePeriodFilter = new QuietPeriodFileFilter(parameters); - FileFilter filterDeletionMarkers = new NamePrefixFileFilter(Constants.DELETION_IN_PROGRESS_PREFIX, false); - FileFilter filter = combineFilters(filterDeletionMarkers, quitePeriodFilter); - return filter; + Vector<StoreItem> result = new Vector<StoreItem>(); + for (StoreItem item : items) + { + if (isReadyToProcess(item)) + { + result.add(item); + } + } + return result.toArray(StoreItem.EMPTY_ARRAY); } - private static FileFilter combineFilters(final FileFilter filter1, final FileFilter filter2) + private boolean isReadyToProcess(StoreItem item) { - return new FileFilter() - { - public boolean accept(File pathname) - { - return filter1.accept(pathname) && filter2.accept(pathname); - } - }; + if (item.getName().startsWith(Constants.DELETION_IN_PROGRESS_PREFIX)) + { + return false; + } + return new QuietPeriodFileFilter(incomingStore, parameters).accept(item); } private IStoreHandler createIncomingMovingPathHandler() diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/common/MarkerFile.java b/datamover/source/java/ch/systemsx/cisd/datamover/common/MarkerFile.java index 6579c609223978d752a1ff41fae98d775dad5a19..e2fda5fbad9b5332fcebac02f414dd3b5b171d67 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/common/MarkerFile.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/common/MarkerFile.java @@ -20,6 +20,7 @@ import java.io.File; import ch.systemsx.cisd.common.Constants; import ch.systemsx.cisd.common.utilities.FileUtilities; +import ch.systemsx.cisd.common.utilities.StoreItem; /** * Manipulations on marker files. Should not use string types in the interface. diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/common/StoreItem.java b/datamover/source/java/ch/systemsx/cisd/datamover/common/StoreItem.java deleted file mode 100644 index 160420d17e7d1114a13d4509094787f7a5f47d0d..0000000000000000000000000000000000000000 --- a/datamover/source/java/ch/systemsx/cisd/datamover/common/StoreItem.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2007 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.datamover.common; - -/** - * @author Tomasz Pylak on Oct 8, 2007 - */ -public class StoreItem -{ - private final String name; - - public StoreItem(String name) - { - this.name = name; - } - - /** Should not be used for logging. Use toString() instead. */ - public String getName() - { - return name; - } - - @Override - public String toString() - { - return name; - } -} 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 a221dbd60f15ad123e914ed629870988f62b1f2e..c030e66b7289aa69aa42060b7bb4457ad4f08fb8 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java @@ -16,9 +16,9 @@ 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.IStoreCopier; -import ch.systemsx.cisd.datamover.filesystem.intf.IStoreHandler; import ch.systemsx.cisd.datamover.filesystem.remote.CopyActivityMonitor; import ch.systemsx.cisd.datamover.filesystem.remote.RemotePathMover; import ch.systemsx.cisd.datamover.intf.ITimingParameters; 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 86aaebd65888812ba4f4e6874eaa260978ccc70b..42a8606f523a7b986e8b89fa1f2264077e75ca36 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 @@ -23,7 +23,8 @@ import org.apache.commons.lang.StringUtils; import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; import ch.systemsx.cisd.common.exceptions.Status; -import ch.systemsx.cisd.datamover.common.StoreItem; +import ch.systemsx.cisd.common.logging.ISimpleLogger; +import ch.systemsx.cisd.common.utilities.StoreItem; /** * A class to holds the information about a file store. @@ -54,8 +55,7 @@ public abstract class FileStore this.factory = factory; } - // TODO 2007-10-10, Tomasz Pylak: change visibility to protected after changing DirectoryScanningTimerTask - public final File getPath() + protected final File getPath() { return path; } @@ -179,6 +179,11 @@ public abstract class FileStore */ public abstract long lastChanged(StoreItem item); + /** + * List files in the scanned store. Sort in order of "oldest first". + */ + public abstract StoreItem[] tryListSortByLastModified(ISimpleLogger loggerOrNull); + public abstract Status delete(StoreItem item); /** @@ -187,7 +192,10 @@ public abstract class FileStore */ public abstract IStoreCopier getCopier(FileStore destinationDirectory); - // public boolean isParentDirectory(FileStoreIntf child); + // returned description should give the user the idea about file location. You should not use the result for + // something else than printing it for user. It should not be especially assumed that the result is the path + // which could be used in java.io.File constructor. + public abstract String getLocationDescription(StoreItem item); public abstract ExtendedFileStore tryAsExtended(); diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreCopier.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreCopier.java index 4d289a364d67a9a4b24f6a225c94d710882f0be7..213763a83539477fef6c749a42764e38a5b8ce78 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreCopier.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreCopier.java @@ -18,7 +18,7 @@ package ch.systemsx.cisd.datamover.filesystem.intf; import ch.systemsx.cisd.common.exceptions.Status; import ch.systemsx.cisd.common.utilities.ITerminable; -import ch.systemsx.cisd.datamover.common.StoreItem; +import ch.systemsx.cisd.common.utilities.StoreItem; /** * @author Tomasz Pylak on Oct 10, 2007 diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreHandler.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreHandler.java deleted file mode 100644 index 1870ed04f029cf958da58fbccb94199f5a9a4874..0000000000000000000000000000000000000000 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2007 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.datamover.filesystem.intf; - -import ch.systemsx.cisd.datamover.common.StoreItem; - - -/** - * @author Tomasz Pylak on Oct 9, 2007 - */ -public interface IStoreHandler -{ - void handle(StoreItem item); -} diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitor.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitor.java index 672a61b1220279ccc0a12f408f5a30aa6d7d16e1..7fbd142c3c422e55a6565d3f1db0ea3a5f0402b3 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitor.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitor.java @@ -27,7 +27,7 @@ import org.apache.log4j.Logger; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; import ch.systemsx.cisd.common.utilities.ITerminable; -import ch.systemsx.cisd.datamover.common.StoreItem; +import ch.systemsx.cisd.common.utilities.StoreItem; import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; import ch.systemsx.cisd.datamover.intf.ITimingParameters; diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/RemotePathMover.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/RemotePathMover.java index d62cde273ae2c2657985af9ecdf64bfd6549defc..120daaebb78479a2efaf2428fe4488556c12fe2a 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/RemotePathMover.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/RemotePathMover.java @@ -22,11 +22,11 @@ import ch.systemsx.cisd.common.exceptions.Status; import ch.systemsx.cisd.common.exceptions.StatusFlag; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; +import ch.systemsx.cisd.common.utilities.IStoreHandler; +import ch.systemsx.cisd.common.utilities.StoreItem; import ch.systemsx.cisd.datamover.common.MarkerFile; -import ch.systemsx.cisd.datamover.common.StoreItem; import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier; -import ch.systemsx.cisd.datamover.filesystem.intf.IStoreHandler; import ch.systemsx.cisd.datamover.filesystem.intf.FileStore.ExtendedFileStore; import ch.systemsx.cisd.datamover.intf.ITimingParameters; 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 284d9ed053888ddea9951ee6e4535df3c24fbb21..6799da89569fabd4ea69f3de8cc63a128c7168fa 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 @@ -22,11 +22,12 @@ import java.io.IOException; import org.apache.log4j.Logger; import ch.systemsx.cisd.common.exceptions.Status; +import ch.systemsx.cisd.common.logging.ISimpleLogger; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; import ch.systemsx.cisd.common.utilities.FileUtilities; +import ch.systemsx.cisd.common.utilities.StoreItem; import ch.systemsx.cisd.datamover.common.MarkerFile; -import ch.systemsx.cisd.datamover.common.StoreItem; import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory; import ch.systemsx.cisd.datamover.filesystem.intf.IPathMover; @@ -125,6 +126,36 @@ public class FileStoreLocal extends ExtendedFileStore return "[local fs]" + pathStr; } + @Override + public String getLocationDescription(StoreItem item) + { + return getChildFile(item).getPath(); + } + + @Override + public StoreItem[] tryListSortByLastModified(ISimpleLogger loggerOrNull) + { + File[] files = FileUtilities.tryListFiles(path, loggerOrNull); + if (files != null) + { + FileUtilities.sortByLastModified(files); + return asItems(files); + } else + { + return null; + } + } + + private static StoreItem[] asItems(File[] files) + { + StoreItem[] items = new StoreItem[files.length]; + for (int i = 0; i < items.length; i++) + { + items[i] = new StoreItem(files[i].getName()); + } + return items; + } + // ------ /** 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 ef42ce0f03b6993c206d78083478e849e1f682da..72b179dfb70e1a5cf8195699f31e334b52db5ac9 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 @@ -19,7 +19,8 @@ package ch.systemsx.cisd.datamover.filesystem.store; import java.io.File; import ch.systemsx.cisd.common.exceptions.Status; -import ch.systemsx.cisd.datamover.common.StoreItem; +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.IFileSysOperationsFactory; import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier; @@ -80,4 +81,17 @@ public class FileStoreRemote extends FileStore String pathStr = path.getPath(); return "[remote fs]" + hostOrNull + ":" + pathStr; } + + @Override + public String getLocationDescription(StoreItem item) + { + return hostOrNull + ":" + getChildFile(item).getPath(); + } + + @Override + public StoreItem[] tryListSortByLastModified(ISimpleLogger loggerOrNull) + { + // TODO 2007-10-09, Tomasz Pylak: implement ssh tunneling mode. + return null; + } } 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 e00c5332421339c29f79e1981bf329c1d7e9a3eb..9fdfe169fbc9793d9c16fa3f104750902636c102 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 @@ -19,7 +19,8 @@ package ch.systemsx.cisd.datamover.filesystem.store; import java.io.File; import ch.systemsx.cisd.common.exceptions.Status; -import ch.systemsx.cisd.datamover.common.StoreItem; +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.IFileSysOperationsFactory; import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier; @@ -57,6 +58,12 @@ public class FileStoreRemoteMounted extends FileStore return "[mounted remote fs]" + pathStr; } + @Override + public String getLocationDescription(StoreItem item) + { + return localImpl.getLocationDescription(item); + } + @Override public Status delete(StoreItem item) { @@ -80,4 +87,10 @@ public class FileStoreRemoteMounted extends FileStore { return localImpl.tryCheckDirectoryFullyAccessible(); } + + @Override + public StoreItem[] tryListSortByLastModified(ISimpleLogger loggerOrNull) + { + return localImpl.tryListSortByLastModified(loggerOrNull); + } } diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/utils/QuietPeriodFileFilter.java b/datamover/source/java/ch/systemsx/cisd/datamover/utils/QuietPeriodFileFilter.java index 65f37023b6068fc7753cd09e90b545c55656a7dd..0ae1d580b51e86239313e1583b9e2d37c6a983da 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/utils/QuietPeriodFileFilter.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/utils/QuietPeriodFileFilter.java @@ -16,10 +16,10 @@ package ch.systemsx.cisd.datamover.utils; -import java.io.File; import java.io.FileFilter; -import ch.systemsx.cisd.common.utilities.FileUtilities; +import ch.systemsx.cisd.common.utilities.StoreItem; +import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; import ch.systemsx.cisd.datamover.intf.ITimingParameters; /** @@ -27,25 +27,28 @@ import ch.systemsx.cisd.datamover.intf.ITimingParameters; * * @author Bernd Rinn */ -public class QuietPeriodFileFilter implements FileFilter +public class QuietPeriodFileFilter { private final long quietPeriodMillis; + private final FileStore store; + /** * Creates a <var>QuietPeriodFileFilter</var>. * + * @param store The store in which items reside * @param timingParameters The timing paramter object to get the quiet period from. */ - public QuietPeriodFileFilter(ITimingParameters timingParameters) + public QuietPeriodFileFilter(FileStore store, ITimingParameters timingParameters) { - assert timingParameters != null; + this.store = store; this.quietPeriodMillis = timingParameters.getQuietPeriodMillis(); assert quietPeriodMillis > 0; } - public boolean accept(File pathname) + public boolean accept(StoreItem item) { - return (System.currentTimeMillis() - FileUtilities.lastChanged(pathname)) > quietPeriodMillis; + return (System.currentTimeMillis() - store.lastChanged(item)) > quietPeriodMillis; } } diff --git a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/MainTest.java b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/MainTest.java index 29d6161c9b601df58e6210f9c9c7905189a4d18f..d691a632955b1203f3c47593999e8c6cbc725717 100644 --- a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/MainTest.java +++ b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/MainTest.java @@ -410,7 +410,7 @@ public class MainTest } @Test(groups = - { "slowXX" }, dataProvider = "delays") + { "slow" }, dataProvider = "delays") // recovery after failure when data are copied to 'copy-completed', but before deletion has been finished public void testRecoveryIncomingCompleteDeletionInProgress(long delay) throws Exception { @@ -632,7 +632,7 @@ public class MainTest } @Test(groups = - { "xxx" }) + { "slow" }) // normal work-flow tests, no extra copy is created public void testWholePipelineNoExtraCopy() throws Exception { 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 c993b7b932b6a08923d4b4f7f12bbf0a861ccf17..faf41223b77ba5b5caf1ed95ba4a46c7ab2c2133 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 @@ -25,13 +25,14 @@ import org.testng.annotations.Test; import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel; import ch.systemsx.cisd.common.exceptions.Status; +import ch.systemsx.cisd.common.logging.ISimpleLogger; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; import ch.systemsx.cisd.common.logging.LogInitializer; import ch.systemsx.cisd.common.logging.LogMonitoringAppender; import ch.systemsx.cisd.common.utilities.ITerminable; +import ch.systemsx.cisd.common.utilities.StoreItem; import ch.systemsx.cisd.common.utilities.StoringUncaughtExceptionHandler; -import ch.systemsx.cisd.datamover.common.StoreItem; import ch.systemsx.cisd.datamover.filesystem.intf.FileStore; import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory; import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier; @@ -181,6 +182,18 @@ public class CopyActivityMonitorTest { return localImpl.getCopier(destinationDirectory); } + + @Override + public String getLocationDescription(StoreItem item) + { + return localImpl.getLocationDescription(item); + } + + @Override + public StoreItem[] tryListSortByLastModified(ISimpleLogger loggerOrNull) + { + return localImpl.tryListSortByLastModified(loggerOrNull); + } }; } diff --git a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/testhelper/FileStructEngine.java b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/testhelper/FileStructEngine.java index 04baf32946eed8d99376827113ec87cd044a4f4e..df42256584550aa8c262b2961ac41202a1a4ea3b 100644 --- a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/testhelper/FileStructEngine.java +++ b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/testhelper/FileStructEngine.java @@ -29,8 +29,8 @@ import java.util.Arrays; import java.util.List; import ch.systemsx.cisd.common.utilities.CollectionIO; +import ch.systemsx.cisd.common.utilities.StoreItem; import ch.systemsx.cisd.datamover.common.MarkerFile; -import ch.systemsx.cisd.datamover.common.StoreItem; /** * Immutable helper for creating a sample directory structure and manipulating it.