From 106db415c1971b673cb5790524fdebf6e89a3122 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Mon, 6 Jun 2016 12:55:33 +0000
Subject: [PATCH] SSDM-3617 : Maintenance task to find orphan datasets in
 archivers, fixing dependencies

SVN: 36633
---
 .../MultiDataSetArchiverOrphanFinderTask.java | 11 ++++------
 .../MultiDataSetArchiverDataSourceUtil.java   | 21 +++++++++++++++++--
 2 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/MultiDataSetArchiverOrphanFinderTask.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/MultiDataSetArchiverOrphanFinderTask.java
index 899584a6a06..367c55d70c8 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/MultiDataSetArchiverOrphanFinderTask.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/MultiDataSetArchiverOrphanFinderTask.java
@@ -17,8 +17,6 @@ import ch.systemsx.cisd.common.mail.IMailClient;
 import ch.systemsx.cisd.common.maintenance.IMaintenanceTask;
 import ch.systemsx.cisd.common.properties.PropertyUtils;
 import ch.systemsx.cisd.openbis.dss.generic.server.DataStoreServer;
-import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.dataaccess.IMultiDataSetArchiverReadonlyQueryDAO;
-import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.dataaccess.MultiDataSetArchiverContainerDTO;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.dataaccess.MultiDataSetArchiverDataSourceUtil;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
@@ -67,14 +65,13 @@ public class MultiDataSetArchiverOrphanFinderTask implements IMaintenanceTask
 
         // 2.1 Database.
         operationLog.info("2.1 Database, obtain a list of the multi dataset containers on the database.");
-        IMultiDataSetArchiverReadonlyQueryDAO readonlyQuery = MultiDataSetArchiverDataSourceUtil.getReadonlyQueryDAO();
-        List<MultiDataSetArchiverContainerDTO> containerDTOs = readonlyQuery.listContainers();
+        List<String> containers = MultiDataSetArchiverDataSourceUtil.getContainerList();
         Set<String> multiDatasetsContainersOnDB = new HashSet<String>();
-        if (containerDTOs != null)
+        if (containers != null)
         {
-            for (MultiDataSetArchiverContainerDTO containerDTO : containerDTOs)
+            for (String container : containers)
             {
-                multiDatasetsContainersOnDB.add(containerDTO.getPath().toLowerCase());
+                multiDatasetsContainersOnDB.add(container.toLowerCase());
             }
         }
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/archiver/dataaccess/MultiDataSetArchiverDataSourceUtil.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/archiver/dataaccess/MultiDataSetArchiverDataSourceUtil.java
index 0a166cf14f7..1be99eb4e89 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/archiver/dataaccess/MultiDataSetArchiverDataSourceUtil.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/archiver/dataaccess/MultiDataSetArchiverDataSourceUtil.java
@@ -16,11 +16,13 @@
 
 package ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.dataaccess;
 
-import javax.sql.DataSource;
+import java.util.ArrayList;
+import java.util.List;
 
-import net.lemnik.eodsql.QueryTool;
+import javax.sql.DataSource;
 
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
+import net.lemnik.eodsql.QueryTool;
 
 /**
  * @author Jakub Straszewski
@@ -38,4 +40,19 @@ public class MultiDataSetArchiverDataSourceUtil
     {
         return QueryTool.getQuery(dataSource, IMultiDataSetArchiverReadonlyQueryDAO.class);
     }
+
+    public static List<String> getContainerList()
+    {
+        List<MultiDataSetArchiverContainerDTO> containerDTOs = getReadonlyQueryDAO().listContainers();
+        List<String> containers = new ArrayList<String>();
+        if (containerDTOs != null)
+        {
+            for (MultiDataSetArchiverContainerDTO containerDTO : containerDTOs)
+            {
+                containers.add(containerDTO.getPath());
+            }
+        }
+        return containers;
+    }
+
 }
-- 
GitLab