From 8e318c0221d932c357a7673cd5aa512747ecb541 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Mon, 11 Sep 2017 10:04:09 +0000
Subject: [PATCH] SSDM-5515: RsyncArchiver made h5 flags aware

SVN: 38710
---
 .../plugins/standard/DataSetFileOperationsManager.java      | 4 ++--
 .../dss/generic/server/plugins/standard/RsyncArchiver.java  | 6 ++++--
 .../generic/shared/translator/DataSetTranslator.java        | 4 ++++
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetFileOperationsManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetFileOperationsManager.java
index 9eec61cdaf7..6ff187bede3 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetFileOperationsManager.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetFileOperationsManager.java
@@ -28,7 +28,7 @@ import ch.systemsx.cisd.common.filesystem.BooleanStatus;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.properties.PropertyUtils;
-import ch.systemsx.cisd.openbis.common.io.hierarchical_content.DefaultFileBasedHierarchicalContentFactory;
+import ch.systemsx.cisd.openbis.common.io.hierarchical_content.Hdf5AwareHierarchicalContentFactory;
 import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContent;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.AbstractDataSetFileOperationsManager;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.ArchiveDestination;
@@ -279,7 +279,7 @@ public class DataSetFileOperationsManager extends AbstractDataSetFileOperationsM
     @Override
     public IHierarchicalContent getAsHierarchicalContent(DatasetDescription dataset)
     {
-        return new DefaultFileBasedHierarchicalContentFactory()
+        return new Hdf5AwareHierarchicalContentFactory(dataset.isH5Folders(), dataset.isH5arFolders())
                 .asHierarchicalContent(new File(archiveDestination.getDestination(), dataset.getDataSetLocation()), null);
     }
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/RsyncArchiver.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/RsyncArchiver.java
index f081f6c01e8..54917ef4637 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/RsyncArchiver.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/RsyncArchiver.java
@@ -29,7 +29,8 @@ import ch.systemsx.cisd.common.exceptions.Status;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.filesystem.BooleanStatus;
 import ch.systemsx.cisd.common.properties.PropertyUtils;
-import ch.systemsx.cisd.openbis.common.io.hierarchical_content.DefaultFileBasedHierarchicalContentFactory;
+import ch.systemsx.cisd.openbis.common.io.hierarchical_content.Hdf5AwareHierarchicalContentFactory;
+import ch.systemsx.cisd.openbis.common.io.hierarchical_content.IHierarchicalContentFactory;
 import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContent;
 import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContentNode;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ArchiverTaskContext;
@@ -213,7 +214,6 @@ public class RsyncArchiver extends AbstractArchiverProcessingPlugin
             ArchiverTaskContext context, boolean removeFromDataStore) throws UserFailureException
     {
         DatasetProcessingStatuses statuses = new DatasetProcessingStatuses();
-        DefaultFileBasedHierarchicalContentFactory contentFactory = new DefaultFileBasedHierarchicalContentFactory();
         for (DatasetDescription dataset : datasets)
         {
             File originalData = getDatasetDirectory(context, dataset);
@@ -236,6 +236,8 @@ public class RsyncArchiver extends AbstractArchiverProcessingPlugin
                     if (getFileOperationsManager().isHosted())
                     {
                         getFileOperationsManager().retrieveFromDestination(temp, dataset);
+                        IHierarchicalContentFactory contentFactory =  new Hdf5AwareHierarchicalContentFactory(
+                                dataset.isH5Folders(), dataset.isH5arFolders());
                         archivedContent = contentFactory.asHierarchicalContent(temp, null);
                     } else
                     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java
index e27e1c736f4..36e97b4b183 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java
@@ -98,6 +98,8 @@ public class DataSetTranslator
             description.setDataSetLocation(dataSet.getLocation());
             description.setSpeedHint(dataSet.getSpeedHint());
             description.setFileFormatType(dataSet.getFileFormatType().getCode());
+            description.setH5Folders(dataSet.isH5Folders());
+            description.setH5arFolders(dataSet.isH5arFolders());
         }
         description.setDataSetSize(data.getSize());
         DataSetType dataSetType = data.getDataSetType();
@@ -515,6 +517,8 @@ public class DataSetTranslator
             description.setSpeedHint(externalData.getSpeedHint());
             description.setFileFormatType(externalData.getFileFormatType().getCode());
             description.setStorageConfirmed(externalData.isStorageConfirmation());
+            description.setH5Folders(externalData.isH5Folders());
+            description.setH5arFolders(externalData.isH5arFolders());
         }
         SamplePE sample = dataSet.tryGetSample();
         if (sample != null)
-- 
GitLab