From c63e9347708da340bf90ef4c0b2b6d197875faa6 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 28 Mar 2017 10:16:16 +0000 Subject: [PATCH] SSDM-4647: Search External DMS by code implemented and system test added to SearchExternalDmsTest SVN: 37984 --- .../ISearchExternalDmsExecutor.java | 3 +- .../SearchExternalDmsExecutor.java | 35 +++++++++++++------ .../SearchExternalDmsOperationExecutor.java | 7 ++-- .../asapi/v3/SearchExternalDmsTest.java | 21 +++++++++++ 4 files changed, 51 insertions(+), 15 deletions(-) diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/ISearchExternalDmsExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/ISearchExternalDmsExecutor.java index 1ce2ad75dbb..8025a531f28 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/ISearchExternalDmsExecutor.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/ISearchExternalDmsExecutor.java @@ -18,11 +18,12 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.externaldms; import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.search.ExternalDmsSearchCriteria; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.search.ISearchObjectExecutor; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataManagementSystemPE; /** * @author pkupczyk */ -public interface ISearchExternalDmsExecutor extends ISearchObjectExecutor<ExternalDmsSearchCriteria, Long> +public interface ISearchExternalDmsExecutor extends ISearchObjectExecutor<ExternalDmsSearchCriteria, ExternalDataManagementSystemPE> { } diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/SearchExternalDmsExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/SearchExternalDmsExecutor.java index 62085f560ad..ee6ff796a8f 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/SearchExternalDmsExecutor.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/SearchExternalDmsExecutor.java @@ -16,23 +16,25 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.externaldms; -import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.CodeSearchCriteria; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.ISearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.search.ExternalDmsSearchCriteria; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext; -import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.search.AbstractSearchObjectExecutor; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.search.AbstractSearchObjectManuallyExecutor; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.search.CodeMatcher; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.search.Matcher; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataManagementSystemPE; /** * @author pkupczyk */ @Component -public class SearchExternalDmsExecutor extends AbstractSearchObjectExecutor<ExternalDmsSearchCriteria, Long> implements +public class SearchExternalDmsExecutor extends AbstractSearchObjectManuallyExecutor<ExternalDmsSearchCriteria, ExternalDataManagementSystemPE> implements ISearchExternalDmsExecutor { @@ -40,16 +42,27 @@ public class SearchExternalDmsExecutor extends AbstractSearchObjectExecutor<Exte private IExternalDmsAuthorizationExecutor authorizationExecutor; @Override - protected List<Long> doSearch(IOperationContext context, DetailedSearchCriteria criteria) + public List<ExternalDataManagementSystemPE> search(IOperationContext context, ExternalDmsSearchCriteria criteria) { authorizationExecutor.canSearch(context); - List<ExternalDataManagementSystemPE> list = - daoFactory.getExternalDataManagementSystemDAO().listExternalDataManagementSystems(); - List<Long> ids = new ArrayList<>(); - for (ExternalDataManagementSystemPE edms : list) + return super.search(context, criteria); + } + + @Override + protected List<ExternalDataManagementSystemPE> listAll() + { + return daoFactory.getExternalDataManagementSystemDAO().listExternalDataManagementSystems(); + } + + @Override + protected Matcher<ExternalDataManagementSystemPE> getMatcher(ISearchCriteria criteria) + { + if (criteria instanceof CodeSearchCriteria) + { + return new CodeMatcher<ExternalDataManagementSystemPE>(); + } else { - ids.add(edms.getId()); + throw new IllegalArgumentException("Unknown search criteria: " + criteria.getClass()); } - return ids; } } diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/SearchExternalDmsOperationExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/SearchExternalDmsOperationExecutor.java index c3d9241b9f3..6367d4bee7f 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/SearchExternalDmsOperationExecutor.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/externaldms/SearchExternalDmsOperationExecutor.java @@ -28,16 +28,17 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.search.ExternalDmsSe import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.search.SearchExternalDmsOperation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.search.SearchExternalDmsOperationResult; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.search.ISearchObjectExecutor; -import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.search.SearchObjectsOperationExecutor; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.search.SearchObjectsPEOperationExecutor; import ch.ethz.sis.openbis.generic.server.asapi.v3.translator.ITranslator; import ch.ethz.sis.openbis.generic.server.asapi.v3.translator.externaldms.IExternalDmsTranslator; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataManagementSystemPE; /** * @author pkupczyk */ @Component public class SearchExternalDmsOperationExecutor - extends SearchObjectsOperationExecutor<ExternalDms, Long, ExternalDmsSearchCriteria, ExternalDmsFetchOptions> + extends SearchObjectsPEOperationExecutor<ExternalDms, ExternalDataManagementSystemPE, ExternalDmsSearchCriteria, ExternalDmsFetchOptions> implements ISearchExternalDmsOperationExecutor { @@ -54,7 +55,7 @@ public class SearchExternalDmsOperationExecutor } @Override - protected ISearchObjectExecutor<ExternalDmsSearchCriteria, Long> getExecutor() + protected ISearchObjectExecutor<ExternalDmsSearchCriteria, ExternalDataManagementSystemPE> getExecutor() { return searchExecutor; } diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExternalDmsTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExternalDmsTest.java index 52e2226a96c..5afd5bbfe28 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExternalDmsTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExternalDmsTest.java @@ -18,7 +18,11 @@ package ch.ethz.sis.openbis.systemtest.asapi.v3; import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.MatcherAssert.assertThat; +import static org.testng.Assert.assertEquals; +import java.util.List; + +import org.testng.Assert; import org.testng.annotations.Test; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult; @@ -41,4 +45,21 @@ public class SearchExternalDmsTest extends AbstractExternalDmsTest assertThat(result.getObjects(), hasItem(isSimilarTo(edms1))); assertThat(result.getObjects(), hasItem(isSimilarTo(edms2))); } + + @Test + public void searchReturnsSpecifiedExternalDataManagementSystem() + { + get(create(externalDms())); + ExternalDms edms2 = get(create(externalDms())); + + ExternalDmsSearchCriteria criteria = new ExternalDmsSearchCriteria(); + criteria.withCode().thatEquals(edms2.getCode()); + ExternalDmsFetchOptions fetchOptions = new ExternalDmsFetchOptions(); + List<ExternalDms> result = v3api.searchExternalDataManagementSystems(session, criteria, fetchOptions).getObjects(); + + assertEquals(result.size(), 1); + assertEquals(result.get(0).getCode(), edms2.getCode()); + assertEquals(result.get(0).getAddress(), edms2.getAddress()); + assertEquals(result.get(0).getAddressType(), edms2.getAddressType()); + } } -- GitLab