From 4d0115d01d54bae7f7fd5d0a029005324b8d32b5 Mon Sep 17 00:00:00 2001
From: juanf <juanf@ethz.ch>
Date: Tue, 20 Jun 2023 10:34:01 +0200
Subject: [PATCH] SSDM-13784: Bugfix, not use V1 anymore

---
 ...UpdateEntityTypePropertyTypesExecutor.java | 38 +++++++++++++++----
 1 file changed, 31 insertions(+), 7 deletions(-)

diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractUpdateEntityTypePropertyTypesExecutor.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractUpdateEntityTypePropertyTypesExecutor.java
index 32d93872628..cb5a7c28f60 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractUpdateEntityTypePropertyTypesExecutor.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractUpdateEntityTypePropertyTypesExecutor.java
@@ -19,14 +19,22 @@ import java.util.*;
 
 import javax.annotation.Resource;
 
+import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetFetchOptions;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentFetchOptions;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.fetchoptions.MaterialFetchOptions;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.Sample;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchOptions;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.dataset.ISearchDataSetExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.experiment.ISearchExperimentExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.material.ISearchMaterialExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.sample.ISearchSampleExecutor;
+import ch.systemsx.cisd.openbis.generic.server.CommonServiceProvider;
 import ch.systemsx.cisd.openbis.generic.shared.dto.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -84,6 +92,9 @@ public abstract class AbstractUpdateEntityTypePropertyTypesExecutor<UPDATE exten
     @Autowired
     private ISearchMaterialExecutor searchMaterialExecutor;
 
+    @Autowired
+    private IApplicationServerApi applicationServerApi;
+
     protected abstract EntityKind getEntityKind();
 
     @Override
@@ -250,31 +261,44 @@ public abstract class AbstractUpdateEntityTypePropertyTypesExecutor<UPDATE exten
         for (EntityTypePropertyTypePE entityTypePropertyType : etpts)
         {
             EntityTypePE entityTypePE = entityTypePropertyType.getEntityType();
-            List<Long> found = null;
+            int totalCount = 0;
+            String sessionToken = context.getSession().getSessionToken();
             if (entityTypePE instanceof SampleTypePE) {
                 SampleSearchCriteria criteria = new SampleSearchCriteria();
                 criteria.withType().withCode().thatEquals(entityTypePE.getCode());
                 criteria.withProperty(entityTypePropertyType.getPropertyType().getCode());
-                found = searchSampleExecutor.search(context, criteria);
+                SampleFetchOptions fetchOptions = new SampleFetchOptions();
+                fetchOptions.count(0);
+                SearchResult searchResult = applicationServerApi.searchSamples(sessionToken, criteria, fetchOptions);
+                totalCount = searchResult.getTotalCount();
             } else if (entityTypePE instanceof ExperimentTypePE) {
                 ExperimentSearchCriteria criteria = new ExperimentSearchCriteria();
                 criteria.withType().withCode().thatEquals(entityTypePE.getCode());
                 criteria.withProperty(entityTypePropertyType.getPropertyType().getCode());
-                found = searchExperimentExecutor.search(context, criteria);
+                ExperimentFetchOptions fetchOptions = new ExperimentFetchOptions();
+                fetchOptions.count(0);
+                SearchResult searchResult = applicationServerApi.searchExperiments(sessionToken, criteria, fetchOptions);
+                totalCount = searchResult.getTotalCount();
             } else if (entityTypePE instanceof DataSetTypePE) {
                 DataSetSearchCriteria criteria = new DataSetSearchCriteria();
                 criteria.withType().withCode().thatEquals(entityTypePE.getCode());
                 criteria.withProperty(entityTypePropertyType.getPropertyType().getCode());
-                found = searchDataSetExecutor.search(context, criteria);
+                DataSetFetchOptions fetchOptions = new DataSetFetchOptions();
+                fetchOptions.count(0);
+                SearchResult searchResult = applicationServerApi.searchDataSets(sessionToken, criteria, fetchOptions);
+                totalCount = searchResult.getTotalCount();
             } else if (entityTypePE instanceof MaterialTypePE) {
                 MaterialSearchCriteria criteria = new MaterialSearchCriteria();
                 criteria.withType().withCode().thatEquals(entityTypePE.getCode());
                 criteria.withProperty(entityTypePropertyType.getPropertyType().getCode());
-                found = searchMaterialExecutor.search(context, criteria);
+                MaterialFetchOptions fetchOptions = new MaterialFetchOptions();
+                fetchOptions.count(0);
+                SearchResult searchResult = applicationServerApi.searchMaterials(sessionToken, criteria, fetchOptions);
+                totalCount = searchResult.getTotalCount();
             } else {
                 throw new IllegalStateException("This should never happen! entityTypePE=" + entityTypePE.getClass());
             }
-            if (forceRemovingAssignments || found.isEmpty())
+            if (forceRemovingAssignments || totalCount == 0)
             {
                 new InternalPropertyTypeAuthorization().canDeletePropertyAssignment(context.getSession(), entityTypePropertyType.getPropertyType(),
                         entityTypePropertyType);
@@ -285,7 +309,7 @@ public abstract class AbstractUpdateEntityTypePropertyTypesExecutor<UPDATE exten
                 throw new UserFailureException("Can not remove property type "
                         + entityTypePropertyType.getPropertyType().getCode() + " from type "
                         + entityTypePropertyType.getEntityType().getCode() + " because "
-                        + found.size() + " entites using this property. "
+                        + totalCount + " entites using this property. "
                         + "To force removal call getPropertyAssignments().setForceRemovingAssignments(true) "
                         + "on the entity update object.");
             }
-- 
GitLab