diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpFileFactory.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpFileFactory.java index 0d4bec20d1b077d59c42dedfbd70d4ede31ae306..86175907072ebeb244de4022f302ca8ebc6e27dc 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpFileFactory.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpFileFactory.java @@ -40,17 +40,24 @@ public class FtpFileFactory public static FtpFile createFtpFile(String dataSetCode, String path, IHierarchicalContentNode contentNode, IHierarchicalContent content, IHierarchicalContentNodeFilter childrenFilter, Cache cache) + { + return createFtpFile(dataSetCode, path, contentNode, content, childrenFilter, getLastModified(contentNode), cache); + + } + + public static FtpFile createFtpFile(String dataSetCode, String path, IHierarchicalContentNode contentNode, + IHierarchicalContent content, IHierarchicalContentNodeFilter childrenFilter, + long lastModified, Cache cache) { FtpFile file = cache.getFile(path); if (file == null) { file = new FtpFileImpl(dataSetCode, path, contentNode.getRelativePath(), - contentNode.isDirectory(), getSize(contentNode), getLastModified(contentNode), + contentNode.isDirectory(), getSize(contentNode), lastModified, content, childrenFilter, cache); cache.putFile(file, path); } return file; - } private static long getSize(IHierarchicalContentNode contentNode) diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java index 9e04d7cd1bf9a4f7445851e5ef6b8398c197a5cc..6be6b321161f0476b31a823a6da8327941c38d45 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java @@ -338,7 +338,7 @@ public class TemplateBasedDataSetResourceResolver implements IFtpPathResolver, if (contentNodeOrNull != null && fileFilter.accept(contentNodeOrNull)) { return FtpFileFactory.createFtpFile(dataSet.getCode(), path, contentNodeOrNull, - content, fileFilter, cache); + content, fileFilter, dataSet.getModificationDate().getTime(), cache); } else { return FtpPathResolverRegistry.getNonExistingFile(path, "Resource '" @@ -442,16 +442,17 @@ public class TemplateBasedDataSetResourceResolver implements IFtpPathResolver, Cache cache = context.getCache(); for (EvaluatedElement evalElement : evalResult.getEvalElements()) { - IHierarchicalContentNodeFilter fileFilter = getFileFilter(evalElement.dataSet); + AbstractExternalData dataSet = evalElement.dataSet; + IHierarchicalContentNodeFilter fileFilter = getFileFilter(dataSet); if (fileFilter.accept(evalElement.contentNode)) { String childPath = parentPath + FtpConstants.FILE_SEPARATOR + evalElement.evaluatedTemplate; - String dataSetCode = evalElement.dataSet.getCode(); - IHierarchicalContent content = evalResult.getHierarchicalContent(evalElement.dataSet); + String dataSetCode = dataSet.getCode(); + IHierarchicalContent content = evalResult.getHierarchicalContent(dataSet); FtpFile childFtpFile = FtpFileFactory.createFtpFile(dataSetCode, childPath, evalElement.contentNode, - content, fileFilter, cache); + content, fileFilter, dataSet.getModificationDate().getTime(), cache); result.add(childFtpFile); } }