From 212d24a61a6b24cc35b3b147fdddd562446b8d5c Mon Sep 17 00:00:00 2001
From: anttil <anttil>
Date: Wed, 21 Nov 2012 09:26:42 +0000
Subject: [PATCH] BIS-228 / SP-368: Bugfix: Problems with FTP paths without
 pathinfo db

SVN: 27729
---
 .../openbis/dss/generic/server/ftp/FtpFileFactory.java |  8 +-------
 .../shared/content/RemoteHierarchicalContent.java      | 10 +++++-----
 .../shared/content/RemoteHierarchicalContentNode.java  | 10 +++++++++-
 3 files changed, 15 insertions(+), 13 deletions(-)

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 94bae15ea0f..f72dcc866c0 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
@@ -16,8 +16,6 @@
 
 package ch.systemsx.cisd.openbis.dss.generic.server.ftp;
 
-import java.io.File;
-
 import org.apache.ftpserver.ftplet.FtpFile;
 
 import ch.systemsx.cisd.openbis.common.io.hierarchical_content.IHierarchicalContentNodeFilter;
@@ -66,11 +64,7 @@ public class FtpFileFactory
     {
         try
         {
-            File file = contentNode.getFile();
-            if (file != null)
-            {
-                return file.lastModified();
-            }
+            return contentNode.getLastModified();
         } catch (UnsupportedOperationException uoe)
         {
             // ignore
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/content/RemoteHierarchicalContent.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/content/RemoteHierarchicalContent.java
index f4b2ebfb55c..f1933561d84 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/content/RemoteHierarchicalContent.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/content/RemoteHierarchicalContent.java
@@ -72,11 +72,11 @@ public class RemoteHierarchicalContent implements IHierarchicalContent
 
         if (info == null)
         {
-            FileInfoDssDTO[] files =
-                    getRemoteDss().listFilesForDataSet(sessionHolder.getSessionToken(),
-                            location.getLocation().getDataSetCode(), "", false);
-
-            info = convert(files[0]);
+            info = new DataSetPathInfo();
+            info.setDirectory(true);
+            info.setRelativePath("");
+            info.setParent(null);
+            info.setFileName("");
         }
 
         return createNode(info);
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/content/RemoteHierarchicalContentNode.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/content/RemoteHierarchicalContentNode.java
index 7156f93a212..16e1bc8cb9a 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/content/RemoteHierarchicalContentNode.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/content/RemoteHierarchicalContentNode.java
@@ -23,6 +23,7 @@ import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
@@ -132,7 +133,13 @@ public class RemoteHierarchicalContentNode implements IHierarchicalContentNode
     @Override
     public long getLastModified()
     {
-        return path.getLastModified().getTime();
+        if (path.getLastModified() != null)
+        {
+            return path.getLastModified().getTime();
+        } else
+        {
+            return 0;
+        }
     }
 
     @Override
@@ -179,6 +186,7 @@ public class RemoteHierarchicalContentNode implements IHierarchicalContentNode
                 info.setFileName(file.getPathInDataSet());
                 info.setRelativePath(file.getPathInDataSet());
                 info.setSizeInBytes(file.getFileSize());
+                info.setLastModified(new Date(0L));
                 children.add(new RemoteHierarchicalContentNode(dataSetCode, info, provider,
                         localDss,
                         remoteDss, sessionHolder, sessionWorkspaceRoot, path.getRelativePath()));
-- 
GitLab