From 857ba76a32d59df956c8cf121ae723b12337799e Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Tue, 24 May 2016 10:54:01 +0000
Subject: [PATCH] SSDM-3574 : Using default command queue from bean

SVN: 36563
---
 .../plugins/ResetArchivePendingTask.java      | 22 ++++++++++---------
 .../generic/server/CommandQueueLister.java    | 17 --------------
 .../server/DataSetCommandExecutor.java        | 13 +++++++++++
 .../server/IDataSetCommandExecutor.java       |  8 ++++++-
 4 files changed, 32 insertions(+), 28 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ResetArchivePendingTask.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ResetArchivePendingTask.java
index a8a53a3e511..8c4f7ca5c3d 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ResetArchivePendingTask.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ResetArchivePendingTask.java
@@ -11,7 +11,8 @@ import org.springframework.transaction.annotation.Transactional;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.maintenance.IMaintenanceTask;
-import ch.systemsx.cisd.openbis.dss.generic.server.CommandQueueLister;
+import ch.systemsx.cisd.openbis.dss.generic.server.IDataSetCommandExecutor;
+import ch.systemsx.cisd.openbis.dss.generic.server.IDataSetCommandExecutorProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.QueueingDataSetStatusUpdaterService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
@@ -22,6 +23,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
 public class ResetArchivePendingTask implements IMaintenanceTask
 {
 
+    private static final String COMMAND_EXECUTOR_BEAN = "data-set-command-executor-provider";
+
     private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, ResetArchivePendingTask.class);
 
     @Override
@@ -41,15 +44,14 @@ public class ResetArchivePendingTask implements IMaintenanceTask
         operationLog.info("Found " + inArchivePendings.size() + " datasets in " + DataSetArchivingStatus.ARCHIVE_PENDING.name() + " status.");
 
         // 2. Filter out datasets that are not on the command queue
-        Set<String> inQueue = null;
-        try
-        {
-            inQueue = CommandQueueLister.getDataSetCodesFromCommandQueue();
-        } catch (Exception ex)
-        {
-            operationLog.error("Command queue can't be read, aborting task.", ex);
-            return;
-        }
+        IDataSetCommandExecutorProvider commandExecutorProvider =
+                (IDataSetCommandExecutorProvider) ServiceProvider
+                        .getApplicationContext()
+                        .getBean(COMMAND_EXECUTOR_BEAN);
+        IDataSetCommandExecutor commandExecutor = commandExecutorProvider.getDefaultExecutor();
+
+        Set<String> inQueue = commandExecutor.getDataSetCodesFromCommandQueue();
+        operationLog.info("Found " + inQueue.size() + " datasets in the command queue.");
 
         List<String> toUpdate = new ArrayList<String>();
         for (SimpleDataSetInformationDTO inArchivePending : inArchivePendings)
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/CommandQueueLister.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/CommandQueueLister.java
index ff386f6fd81..62b2c2aef18 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/CommandQueueLister.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/CommandQueueLister.java
@@ -16,10 +16,6 @@
 
 package ch.systemsx.cisd.openbis.dss.generic.server;
 
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
 /**
  * A class that provides a lister for the commands in the command queue of the store.
  * 
@@ -37,17 +33,4 @@ public final class CommandQueueLister
         final ConfigParameters configParams = DataStoreServer.getConfigParameters();
         DataSetCommandExecutor.listQueuedCommands(configParams.getCommandQueueDir());
     }
-
-    public static Set<String> getDataSetCodesFromCommandQueue()
-    {
-        final ConfigParameters configParams = DataStoreServer.getConfigParameters();
-        List<IDataSetCommand> commands = DataSetCommandExecutor.getQueuedCommands(configParams.getCommandQueueDir());
-
-        Set<String> datasetCodes = new HashSet<String>();
-        for (IDataSetCommand command : commands)
-        {
-            datasetCodes.addAll(command.getDataSetCodes());
-        }
-        return datasetCodes;
-    }
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java
index 0f7b6fe7660..d62a2a1f383 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java
@@ -21,8 +21,10 @@ import java.io.FilenameFilter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.StopWatch;
@@ -212,6 +214,17 @@ class DataSetCommandExecutor implements IDataSetCommandExecutor
         return hierarchicalContentProvider;
     }
 
+    @Override
+    public Set<String> getDataSetCodesFromCommandQueue()
+    {
+        Set<String> dataSetCodes = new HashSet<String>();
+        for (IDataSetCommand command : commandQueue)
+        {
+            dataSetCodes.addAll(command.getDataSetCodes());
+        }
+        return dataSetCodes;
+    }
+
     /**
      * Returns the list of items in the command store of the given <var>store</var> directory.
      */
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutor.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutor.java
index 6b1d33c0d84..28fb7c63581 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutor.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutor.java
@@ -18,13 +18,14 @@ package ch.systemsx.cisd.openbis.dss.generic.server;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import ch.systemsx.cisd.common.mail.MailClientParameters;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IDataSetDeleter;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IProcessingPluginTask;
 import ch.systemsx.cisd.openbis.generic.shared.Constants;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUploadContext;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription;
 
@@ -41,6 +42,11 @@ public interface IDataSetCommandExecutor extends IDataSetDeleter
      */
     void start();
 
+    /**
+     * Returns the codes of the DataSets currently in the queue.
+     */
+    Set<String> getDataSetCodesFromCommandQueue();
+
     /**
      * Schedules uploading of all data sets to CIFEX using the specified upload context.
      * 
-- 
GitLab