From c8a0d3d41926fa4b6121e513a6376a5e6044b6bf Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Wed, 30 May 2012 14:07:11 +0000
Subject: [PATCH] SP-47, BIS-36: AbstractArchiverProcessingPlugin slightly
 modified in order to delete incompletely archived data sets even though
 RsyncArchiver is configured to mark as deleted instead of actually deleting
 data sets.

SVN: 25405
---
 .../AbstractArchiverProcessingPlugin.java       |  7 ++++++-
 .../server/plugins/standard/RsyncArchiver.java  | 17 +++++++++++++++--
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractArchiverProcessingPlugin.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractArchiverProcessingPlugin.java
index 07d35ad64a3..b6655741fc4 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractArchiverProcessingPlugin.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractArchiverProcessingPlugin.java
@@ -208,7 +208,7 @@ public abstract class AbstractArchiverProcessingPlugin extends AbstractDatastore
         GroupedDatasets groupedDataSets = groupByArchiveDifferencies(datasets, context);
         DatasetProcessingStatuses statuses = doArchive(groupedDataSets.getDifferentInArchive(), context);
 
-        doDeleteFromArchive(getDataSetsFailedToBeArchived(datasets, statuses));
+        deletePermanentlyFromArchive(getDataSetsFailedToBeArchived(datasets, statuses));
         if (removeFromDataStore)
         {
             removeFromDataStore(getArchivedDataSets(datasets, statuses), context);
@@ -330,6 +330,11 @@ public abstract class AbstractArchiverProcessingPlugin extends AbstractDatastore
         DatasetProcessingStatuses status = doDeleteFromArchive(datasets);
         return status != null ? status.getProcessingStatus() : null;
     }
+    
+    protected DatasetProcessingStatuses deletePermanentlyFromArchive(List<? extends IDatasetLocation> dataSets)
+    {
+        return doDeleteFromArchive(dataSets);
+    }
 
     protected final Status checkUnarchivePrerequisite(List<DatasetDescription> datasets)
     {
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 ff2dab8ee06..d2120532d82 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
@@ -259,12 +259,25 @@ public class RsyncArchiver extends AbstractArchiverProcessingPlugin
 
     @Override
     protected DatasetProcessingStatuses doDeleteFromArchive(List<? extends IDatasetLocation> datasets)
+    {
+        return delete(datasets, deleteAction);
+    }
+
+    @Override
+    protected DatasetProcessingStatuses deletePermanentlyFromArchive(
+            List<? extends IDatasetLocation> dataSets)
+    {
+        return delete(dataSets, DeleteAction.DELETE);
+    }
+
+    private DatasetProcessingStatuses delete(List<? extends IDatasetLocation> datasets,
+            DeleteAction action)
     {
         DatasetProcessingStatuses statuses = new DatasetProcessingStatuses();
         for (IDatasetLocation dataset : datasets)
         {
-            Status status = deleteAction.execute(fileOperationsManager, dataset);
-            statuses.addResult(dataset.getDataSetCode(), status, deleteAction.getOperation());
+            Status status = action.execute(fileOperationsManager, dataset);
+            statuses.addResult(dataset.getDataSetCode(), status, action.getOperation());
         }
         return statuses;
     }
-- 
GitLab