From 84e3e9bae4bca3da53b32e4d92e299c34d8ea2d9 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Thu, 8 May 2014 14:13:08 +0000
Subject: [PATCH] SSDM-212: New "Add to Archive" button added

SVN: 31472
---
 .../web/client/ICommonClientService.java      |  4 +--
 .../web/client/ICommonClientServiceAsync.java |  8 +++---
 .../ui/data/DataSetArchivingMenu.java         | 14 ++++++++--
 .../ExperimentDataSetArchivingMenu.java       | 28 +++++++++++++------
 .../web/server/CommonClientService.java       |  8 +++---
 .../basic/dto/ArchivingServiceKind.java       |  2 +-
 .../cisd/openbis/public/common-dictionary.js  |  1 +
 7 files changed, 43 insertions(+), 22 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java
index bc1e38df9e0..c0b4ee53fe9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java
@@ -1036,7 +1036,7 @@ public interface ICommonClientService extends IClientService
     /**
      * Schedules archiving of the specified datasets.
      */
-    public ArchivingResult archiveDatasets(DisplayedOrSelectedDatasetCriteria criteria)
+    public ArchivingResult archiveDatasets(DisplayedOrSelectedDatasetCriteria criteria, boolean removeFromDataStore)
             throws UserFailureException;
 
     /**
@@ -1049,7 +1049,7 @@ public interface ICommonClientService extends IClientService
      * Schedules archiving of the datasets connected to the specified experiments.
      */
     public ArchivingResult archiveDatasets(
-            DisplayedCriteriaOrSelectedEntityHolder<TableModelRowWithObject<Experiment>> criteria)
+            DisplayedCriteriaOrSelectedEntityHolder<TableModelRowWithObject<Experiment>> criteria, boolean removeFromDataStore)
             throws UserFailureException;
 
     /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java
index 5680753b3f9..2fa01d41886 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java
@@ -922,9 +922,9 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync
             DisplayedOrSelectedDatasetCriteria criteria, AsyncCallback<Void> callback);
 
     /**
-     * @see ICommonClientService#archiveDatasets(DisplayedOrSelectedDatasetCriteria)
+     * @see ICommonClientService#archiveDatasets(DisplayedOrSelectedDatasetCriteria, boolean)
      */
-    public void archiveDatasets(DisplayedOrSelectedDatasetCriteria criteria,
+    public void archiveDatasets(DisplayedOrSelectedDatasetCriteria criteria, boolean removeFromDataStore,
             AsyncCallback<ArchivingResult> callback);
 
     /**
@@ -934,10 +934,10 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync
             AsyncCallback<ArchivingResult> callback);
 
     /**
-     * @see ICommonClientService#archiveDatasets(DisplayedCriteriaOrSelectedEntityHolder)
+     * @see ICommonClientService#archiveDatasets(DisplayedCriteriaOrSelectedEntityHolder, boolean)
      */
     public void archiveDatasets(
-            DisplayedCriteriaOrSelectedEntityHolder<TableModelRowWithObject<Experiment>> criteria,
+            DisplayedCriteriaOrSelectedEntityHolder<TableModelRowWithObject<Experiment>> criteria, boolean removeFromDataStore,
             AsyncCallback<ArchivingResult> callback);
 
     /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetArchivingMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetArchivingMenu.java
index 0fbe8383659..58a016b759f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetArchivingMenu.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetArchivingMenu.java
@@ -43,10 +43,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMess
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.TextToolItem;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ArchivingResult;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedDatasetCriteria;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ArchivingServiceKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetArchivingStatus;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
 
 /**
  * 'Archiving' menu for Data Sets.
@@ -71,6 +71,7 @@ public class DataSetArchivingMenu extends TextToolItem
         this.selectedDataSetsGetter = selectedDataSetsGetter;
 
         Menu submenu = new Menu();
+        addMenuItem(submenu, ArchivingActionMenuKind.ARCHIVING_MENU_BACKUP);
         addMenuItem(submenu, ArchivingActionMenuKind.ARCHIVING_MENU_ARCHIVE);
         addMenuItem(submenu, ArchivingActionMenuKind.ARCHIVING_MENU_UNARCHIVE);
         addMenuItem(submenu, ArchivingActionMenuKind.ARCHIVING_MENU_LOCK);
@@ -81,6 +82,7 @@ public class DataSetArchivingMenu extends TextToolItem
     /** {@link ActionMenu} kind enum with names matching dictionary keys */
     private static enum ArchivingActionMenuKind implements IActionMenuItem
     {
+        ARCHIVING_MENU_BACKUP(ArchivingServiceKind.BACKUP),
         ARCHIVING_MENU_ARCHIVE(ArchivingServiceKind.ARCHIVE), ARCHIVING_MENU_UNARCHIVE(
                 ArchivingServiceKind.UNARCHIVE), ARCHIVING_MENU_LOCK(ArchivingServiceKind.LOCK),
         ARCHIVING_MENU_UNLOCK(ArchivingServiceKind.UNLOCK);
@@ -192,9 +194,15 @@ public class DataSetArchivingMenu extends TextToolItem
                             selectedAndDisplayedItems.createCriteria(computeOnSelected);
                     switch (taskKind)
                     {
+                        case BACKUP:
+                            viewContext.getService().archiveDatasets(
+                                    criteria, false,
+                                    createArchivingDisplayCallback(taskKind.getDescription(),
+                                            computeOnSelected));
+                            break;
                         case ARCHIVE:
                             viewContext.getService().archiveDatasets(
-                                    criteria,
+                                    criteria, true,
                                     createArchivingDisplayCallback(taskKind.getDescription(),
                                             computeOnSelected));
                             break;
@@ -307,6 +315,8 @@ public class DataSetArchivingMenu extends TextToolItem
         {
             switch (taskKind)
             {
+                case BACKUP:
+                    return DataSetArchivingStatus.AVAILABLE;
                 case ARCHIVE:
                     return DataSetArchivingStatus.AVAILABLE;
                 case UNARCHIVE:
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentDataSetArchivingMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentDataSetArchivingMenu.java
index 59627d5eb0b..7050ee85a0f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentDataSetArchivingMenu.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentDataSetArchivingMenu.java
@@ -53,8 +53,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject;
 
 /**
- * 'Archiving' menu for data sets connected to experiments. Here, experiments are the central
- * entity, as opposed to {@link DataSetArchivingMenu}, where data sets are the central entity.
+ * 'Archiving' menu for data sets connected to experiments. Here, experiments are the central entity, as opposed to {@link DataSetArchivingMenu},
+ * where data sets are the central entity.
  * 
  * @author Piotr Buczek
  * @author Chandrasekhar Ramakrishnan
@@ -77,6 +77,7 @@ public class ExperimentDataSetArchivingMenu extends TextToolItem
         this.selectedDataSetsGetter = selectedDataSetsGetter;
 
         Menu submenu = new Menu();
+        addMenuItem(submenu, ArchivingActionMenuKind.ARCHIVING_MENU_BACKUP);
         addMenuItem(submenu, ArchivingActionMenuKind.ARCHIVING_MENU_ARCHIVE);
         addMenuItem(submenu, ArchivingActionMenuKind.ARCHIVING_MENU_UNARCHIVE);
         addMenuItem(submenu, ArchivingActionMenuKind.ARCHIVING_MENU_LOCK);
@@ -87,6 +88,7 @@ public class ExperimentDataSetArchivingMenu extends TextToolItem
     /** {@link ActionMenu} kind enum with names matching dictionary keys */
     private static enum ArchivingActionMenuKind implements IActionMenuItem
     {
+        ARCHIVING_MENU_BACKUP(ArchivingServiceKind.BACKUP),
         ARCHIVING_MENU_ARCHIVE(ArchivingServiceKind.ARCHIVE), ARCHIVING_MENU_UNARCHIVE(
                 ArchivingServiceKind.UNARCHIVE), ARCHIVING_MENU_LOCK(ArchivingServiceKind.LOCK),
         ARCHIVING_MENU_UNLOCK(ArchivingServiceKind.UNLOCK);
@@ -199,13 +201,19 @@ public class ExperimentDataSetArchivingMenu extends TextToolItem
                 @Override
                 public void execute(DatastoreServiceDescription service, boolean computeOnSelected)
                 {
-                        DisplayedCriteriaOrSelectedEntityHolder<TableModelRowWithObject<Experiment>> criteria =
+                    DisplayedCriteriaOrSelectedEntityHolder<TableModelRowWithObject<Experiment>> criteria =
                             selectedAndDisplayedItems.createCriteria(computeOnSelected);
                     switch (taskKind)
                     {
+                        case BACKUP:
+                            viewContext.getService().archiveDatasets(
+                                    criteria, false,
+                                    createArchivingDisplayCallback(taskKind.getDescription(),
+                                            computeOnSelected));
+                            break;
                         case ARCHIVE:
                             viewContext.getService().archiveDatasets(
-                                    criteria,
+                                    criteria, true,
                                     createArchivingDisplayCallback(taskKind.getDescription(),
                                             computeOnSelected));
                             break;
@@ -320,6 +328,8 @@ public class ExperimentDataSetArchivingMenu extends TextToolItem
         {
             switch (taskKind)
             {
+                case BACKUP:
+                    return DataSetArchivingStatus.AVAILABLE;
                 case ARCHIVE:
                     return DataSetArchivingStatus.AVAILABLE;
                 case UNARCHIVE:
@@ -381,11 +391,11 @@ public class ExperimentDataSetArchivingMenu extends TextToolItem
         {
             this.displayedItemsConfig = displayedItemsConfig;
             this.selectedItems = selectedItems;
-//            this.selectedItems = new ArrayList<Experiment>();
-//            for (TableModelRowWithObject<Experiment> row : selectedItems)
-//            {
-//                this.selectedItems.add(row.getObjectOrNull());
-//            }
+            // this.selectedItems = new ArrayList<Experiment>();
+            // for (TableModelRowWithObject<Experiment> row : selectedItems)
+            // {
+            // this.selectedItems.add(row.getObjectOrNull());
+            // }
             this.displayedItemsCount = displayedItemsCount;
         }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
index 7d91df593f3..b236076b2c7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
@@ -2255,11 +2255,11 @@ public final class CommonClientService extends AbstractClientService implements
 
     @Override
     public ArchivingResult archiveDatasets(
-            DisplayedOrSelectedDatasetCriteria displayedOrSelectedDatasetCriteria)
+            DisplayedOrSelectedDatasetCriteria displayedOrSelectedDatasetCriteria, boolean removeFromDataStore)
     {
         final String sessionToken = getSessionToken();
         List<String> datasetCodes = extractDatasetCodes(displayedOrSelectedDatasetCriteria);
-        int result = commonServer.archiveDatasets(sessionToken, datasetCodes, true);
+        int result = commonServer.archiveDatasets(sessionToken, datasetCodes, removeFromDataStore);
         return new ArchivingResult(datasetCodes.size(), result);
     }
 
@@ -2580,11 +2580,11 @@ public final class CommonClientService extends AbstractClientService implements
 
     @Override
     public ArchivingResult archiveDatasets(
-            DisplayedCriteriaOrSelectedEntityHolder<TableModelRowWithObject<Experiment>> criteria)
+            DisplayedCriteriaOrSelectedEntityHolder<TableModelRowWithObject<Experiment>> criteria, boolean removeFromDataStore)
     {
         final String sessionToken = getSessionToken();
         List<String> datasetCodes = extractDatasetCodes(criteria);
-        int result = commonServer.archiveDatasets(sessionToken, datasetCodes, true);
+        int result = commonServer.archiveDatasets(sessionToken, datasetCodes, removeFromDataStore);
         return new ArchivingResult(datasetCodes.size(), result);
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ArchivingServiceKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ArchivingServiceKind.java
index 7db6acf72b0..a9e840db6c7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ArchivingServiceKind.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ArchivingServiceKind.java
@@ -23,7 +23,7 @@ import java.io.Serializable;
  */
 public enum ArchivingServiceKind implements Serializable
 {
-    ARCHIVE("Archiving"), UNARCHIVE("Unarchiving"), LOCK("Disable Archiving"), UNLOCK(
+    BACKUP("Backup Archiving"), ARCHIVE("Archiving"), UNARCHIVE("Unarchiving"), LOCK("Disable Archiving"), UNLOCK(
             "Enable Archiving");
 
     private final String description;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
index 786e51ca149..3c153d78214 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
@@ -532,6 +532,7 @@ var common = {
   menu_processing: "Actions",
 
   menu_archiving: "Archiving",
+  ARCHIVING_MENU_BACKUP: "Add to Archive",
   ARCHIVING_MENU_ARCHIVE: "Archive",
   ARCHIVING_MENU_UNARCHIVE: "Unarchive",
   ARCHIVING_MENU_LOCK: "Disable",
-- 
GitLab