From 83e11743ae9e63c14a16ea47c9bc70170eb96493 Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Tue, 15 Feb 2011 12:48:42 +0000
Subject: [PATCH] [LMS-2048] batch update of managed properties for data sets
 with overwriting behaviour

SVN: 19974
---
 .../server/business/IPropertiesBatchManager.java   |  7 ++++++-
 .../server/business/PropertiesBatchManager.java    | 14 ++++++++++++--
 .../generic/shared/basic/dto/NewDataSet.java       |  2 +-
 .../plugin/generic/server/GenericServer.java       |  2 ++
 4 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IPropertiesBatchManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IPropertiesBatchManager.java
index 5421fb5849e..4774b67a47e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IPropertiesBatchManager.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IPropertiesBatchManager.java
@@ -19,8 +19,10 @@ package ch.systemsx.cisd.openbis.generic.server.business;
 import java.util.List;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewBasicExperiment;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewMaterial;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
@@ -39,6 +41,9 @@ public interface IPropertiesBatchManager
     public void manageProperties(ExperimentTypePE experimentType,
             List<? extends NewBasicExperiment> experiments, PersonPE registrator);
 
-    public void manageProperties(MaterialTypePE materialType, List<NewMaterial> newMaterials,
+    public void manageProperties(MaterialTypePE materialType, List<NewMaterial> materials,
             PersonPE registrator);
+
+    public void manageProperties(DataSetTypePE dataSetType, List<NewDataSet> dataSets,
+            PersonPE tryGetPerson);
 }
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/PropertiesBatchManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/PropertiesBatchManager.java
index 1cefc167383..894fe7ccf2d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/PropertiesBatchManager.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/PropertiesBatchManager.java
@@ -37,10 +37,12 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IPropertiesBean;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ManagedProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewBasicExperiment;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewMaterial;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.ValidationException;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE;
@@ -85,12 +87,20 @@ public class PropertiesBatchManager implements IPropertiesBatchManager
         managePropertiesBeans(experiments, entityTypePropertyTypes, registrator);
     }
 
-    public void manageProperties(MaterialTypePE materialType, List<NewMaterial> newMaterials,
+    public void manageProperties(MaterialTypePE materialType, List<NewMaterial> materials,
             PersonPE registrator)
     {
         Set<? extends EntityTypePropertyTypePE> entityTypePropertyTypes =
                 materialType.getMaterialTypePropertyTypes();
-        managePropertiesBeans(newMaterials, entityTypePropertyTypes, registrator);
+        managePropertiesBeans(materials, entityTypePropertyTypes, registrator);
+    }
+
+    public void manageProperties(DataSetTypePE dataSetType, List<NewDataSet> dataSets,
+            PersonPE registrator)
+    {
+        Set<? extends EntityTypePropertyTypePE> entityTypePropertyTypes =
+                dataSetType.getDataSetTypePropertyTypes();
+        managePropertiesBeans(dataSets, entityTypePropertyTypes, registrator);
     }
 
     private void managePropertiesBeans(List<? extends IPropertiesBean> propertiesBeans,
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewDataSet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewDataSet.java
index 84dcb0cf22f..98667587819 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewDataSet.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewDataSet.java
@@ -23,7 +23,7 @@ import java.util.Set;
  * 
  * @author Izabela Adamczyk
  */
-public class NewDataSet extends Code<NewDataSet> implements Comparable<NewDataSet>
+public class NewDataSet extends Code<NewDataSet> implements Comparable<NewDataSet>, IPropertiesBean
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java
index 41202439819..930cd2327e2 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java
@@ -399,6 +399,8 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen
             throw UserFailureException.fromTemplate("Data set type with code '%s' does not exist.",
                     dataSets.getDataSetType());
         }
+        getPropertiesBatchManager().manageProperties(dataSetType, newDataSets,
+                session.tryGetPerson());
         getDataSetTypeSlaveServerPlugin(dataSetType).updateDataSets(session, newDataSets);
     }
 
-- 
GitLab