From f4fa226e235b250c0174dfb3ae1866fd5dc0e81b Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Fri, 24 Jun 2011 07:30:01 +0000 Subject: [PATCH] [LMS-2290] minor: add data set search using container SVN: 21837 --- .../generic/server/CommonServerLogger.java | 11 +------ ...riaToDetailedSearchCriteriaTranslator.java | 3 ++ .../search/detailed/IndexFieldNameHelper.java | 7 ++++ .../shared/api/v1/dto/SearchCriteria.java | 2 +- .../shared/api/v1/dto/SearchSubCriteria.java | 5 +++ .../api/v1/dto/SearchableEntityKind.java | 2 +- .../basic/dto/AssociatedEntityKind.java | 2 ++ .../openbis/generic/shared/dto/DataPE.java | 15 +++++++++ ...oDetailedSearchCriteriaTranslatorTest.java | 32 +++++++++++++++++++ .../api/v1/GeneralInformationServiceTest.java | 21 ++++++++++++ 10 files changed, 88 insertions(+), 12 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java index 02a46f3ade1..15e1f22660f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java @@ -43,7 +43,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DeletionType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchSubCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DynamicPropertyEvaluationInfo; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType; @@ -471,7 +470,7 @@ final class CommonServerLogger extends AbstractServerLogger implements ICommonSe public List<ExternalData> searchForDataSets(String sessionToken, DetailedSearchCriteria criteria) { - logAccess(sessionToken, "search_for_datasets"); + logAccess(sessionToken, "search_for_datasets", "criteria(%s)", criteria); return null; } @@ -481,14 +480,6 @@ final class CommonServerLogger extends AbstractServerLogger implements ICommonSe return null; } - public List<Sample> searchForSamples(String sessionToken, DetailedSearchCriteria criteria, - List<DetailedSearchSubCriteria> subCriterias) - { - logAccess(sessionToken, "search_for_samples", "criteria(%s) subCriterias(%s)", criteria, - subCriterias); - return null; - } - public ExternalData getDataSetInfo(String sessionToken, TechId datasetId) { logAccess(sessionToken, "getDataSetInfo", "datasetId(%s)", datasetId.getId()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/SearchCriteriaToDetailedSearchCriteriaTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/SearchCriteriaToDetailedSearchCriteriaTranslator.java index 3c043796aee..894962f0205 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/SearchCriteriaToDetailedSearchCriteriaTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/SearchCriteriaToDetailedSearchCriteriaTranslator.java @@ -62,6 +62,7 @@ public class SearchCriteriaToDetailedSearchCriteriaTranslator translators.put(SearchableEntityKind.DATA_SET, new DataSetAttributeTranslator()); translators.put(SearchableEntityKind.DATA_SET_PARENT, new DataSetAttributeTranslator()); translators.put(SearchableEntityKind.DATA_SET_CHILD, new DataSetAttributeTranslator()); + translators.put(SearchableEntityKind.DATA_SET_CONTAINER, new DataSetAttributeTranslator()); translators.put(SearchableEntityKind.SAMPLE_PARENT, new SampleAttributeTranslator()); translators.put(SearchableEntityKind.SAMPLE_CHILD, new SampleAttributeTranslator()); translators.put(SearchableEntityKind.SAMPLE_CONTAINER, new SampleAttributeTranslator()); @@ -88,6 +89,8 @@ public class SearchCriteriaToDetailedSearchCriteriaTranslator return AssociatedEntityKind.EXPERIMENT; case DATA_SET: return AssociatedEntityKind.DATA_SET; + case DATA_SET_CONTAINER: + return AssociatedEntityKind.DATA_SET_CONTAINER; case DATA_SET_PARENT: return AssociatedEntityKind.DATA_SET_PARENT; case DATA_SET_CHILD: diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/detailed/IndexFieldNameHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/detailed/IndexFieldNameHelper.java index 467b976d5b5..b657ff7a1da 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/detailed/IndexFieldNameHelper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/detailed/IndexFieldNameHelper.java @@ -65,6 +65,13 @@ class IndexFieldNameHelper } throw createAssociationNotHandledException(entityKind, associationKind); + case DATA_SET_CONTAINER: + if (entityKind == EntityKind.DATA_SET) + { + return SearchFieldConstants.CONTAINER_ID; + } + throw createAssociationNotHandledException(entityKind, associationKind); + case DATA_SET_PARENT: case DATA_SET_CHILD: case SAMPLE_PARENT: diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchCriteria.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchCriteria.java index 6150ac9b500..2b8eb0151f5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchCriteria.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchCriteria.java @@ -85,7 +85,7 @@ public class SearchCriteria implements Serializable public static enum MatchClauseAttribute { // common - CODE, TYPE, + CODE, TYPE, // TODO 2011-06-24, Piotr Buczek: add search by PERM_ID // for sample or experiment SPACE, // for experiment diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchSubCriteria.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchSubCriteria.java index 3679a6629e4..bc6db685d34 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchSubCriteria.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchSubCriteria.java @@ -47,6 +47,11 @@ public class SearchSubCriteria implements Serializable return new SearchSubCriteria(SearchableEntityKind.EXPERIMENT, criteria); } + public static SearchSubCriteria createDataSetContainerCriteria(SearchCriteria criteria) + { + return new SearchSubCriteria(SearchableEntityKind.DATA_SET_CONTAINER, criteria); + } + public static SearchSubCriteria createDataSetParentCriteria(SearchCriteria criteria) { return new SearchSubCriteria(SearchableEntityKind.DATA_SET_PARENT, criteria); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchableEntityKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchableEntityKind.java index fd61fcdfd11..7db0f5b80f5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchableEntityKind.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchableEntityKind.java @@ -11,5 +11,5 @@ public enum SearchableEntityKind // sample subcriteria SAMPLE_CONTAINER, SAMPLE_PARENT, SAMPLE_CHILD, // data set subcriteria - DATA_SET_PARENT, DATA_SET_CHILD + DATA_SET_CONTAINER, DATA_SET_PARENT, DATA_SET_CHILD } \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AssociatedEntityKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AssociatedEntityKind.java index ba4b56f0983..82e387d8b94 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AssociatedEntityKind.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AssociatedEntityKind.java @@ -42,6 +42,8 @@ public enum AssociatedEntityKind implements ISerializable DATA_SET_CHILD("Child", EntityKind.DATA_SET, EnumSet.of(EntityKind.DATA_SET)), + DATA_SET_CONTAINER("Container", EntityKind.DATA_SET, EnumSet.of(EntityKind.DATA_SET)), + SAMPLE_CONTAINER("Container", EntityKind.SAMPLE, EnumSet.of(EntityKind.SAMPLE)), SAMPLE_PARENT("Parent", EntityKind.SAMPLE, EnumSet.of(EntityKind.SAMPLE)), diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java index ad24bc227c1..1ddc04fc5ba 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java @@ -446,6 +446,21 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements this.container = container; } + // used only by Hibernate Search + @SuppressWarnings("unused") + @Transient + @Field(index = Index.UN_TOKENIZED, store = Store.YES, name = SearchFieldConstants.CONTAINER_ID) + private Long getContainerId() + { + Long result = null; + if (getContainer() != null) + { + result = HibernateUtils.getId(getContainerInternal()); + assert result != null; + } + return result; + } + public void addComponent(final DataPE component) { assert component != null; diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/api/v1/SearchCriteriaToDetailedSearchCriteriaTranslatorTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/api/v1/SearchCriteriaToDetailedSearchCriteriaTranslatorTest.java index 497ece136c6..d3adb48f5c9 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/api/v1/SearchCriteriaToDetailedSearchCriteriaTranslatorTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/api/v1/SearchCriteriaToDetailedSearchCriteriaTranslatorTest.java @@ -174,6 +174,14 @@ public class SearchCriteriaToDetailedSearchCriteriaTranslatorTest extends Assert testConvertToDetailedSearchSubCriteria(AssociatedEntityKind.SAMPLE_PARENT, subCriteria); } + @Test + public void testBasicSampleChildSubCriteriaTranslator() + { + SearchCriteria criteria = createBasicSearchCriteria(); + SearchSubCriteria subCriteria = SearchSubCriteria.createSampleChildCriteria(criteria); + testConvertToDetailedSearchSubCriteria(AssociatedEntityKind.SAMPLE_CHILD, subCriteria); + } + @Test public void testBasicSampleContainerSubCriteriaTranslator() { @@ -182,6 +190,30 @@ public class SearchCriteriaToDetailedSearchCriteriaTranslatorTest extends Assert testConvertToDetailedSearchSubCriteria(AssociatedEntityKind.SAMPLE_CONTAINER, subCriteria); } + @Test + public void testBasicDataSetParentSubCriteriaTranslator() + { + SearchCriteria criteria = createBasicSearchCriteria(); + SearchSubCriteria subCriteria = SearchSubCriteria.createDataSetParentCriteria(criteria); + testConvertToDetailedSearchSubCriteria(AssociatedEntityKind.DATA_SET_PARENT, subCriteria); + } + + @Test + public void testBasicDataSetChildSubCriteriaTranslator() + { + SearchCriteria criteria = createBasicSearchCriteria(); + SearchSubCriteria subCriteria = SearchSubCriteria.createDataSetChildCriteria(criteria); + testConvertToDetailedSearchSubCriteria(AssociatedEntityKind.DATA_SET_CHILD, subCriteria); + } + + @Test + public void testBasicDataSetContainerSubCriteriaTranslator() + { + SearchCriteria criteria = createBasicSearchCriteria(); + SearchSubCriteria subCriteria = SearchSubCriteria.createDataSetContainerCriteria(criteria); + testConvertToDetailedSearchSubCriteria(AssociatedEntityKind.DATA_SET_CONTAINER, subCriteria); + } + @Test public void testBasicExperimentSubCriteriaTranslator() { diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java index 6e9e7408a76..9b54cb3b0f1 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java @@ -499,4 +499,25 @@ public class GeneralInformationServiceTest extends SystemTestCase "[DataSet[20081105092259000-9,/CISD/DEFAULT/EXP-REUSE,<null>,HCS_IMAGE,{COMMENT=no comment},[]]]", result.toString()); } + + @Test(groups = "broken") + // FIXME rebuild test DB index and commit it to SVN + public void testSearchForDataSetsByContainer() + { + SearchCriteria searchCriteria = new SearchCriteria(); + SearchCriteria containerCriteria = new SearchCriteria(); + + containerCriteria.addMatchClause(MatchClause.createAttributeMatch( + MatchClauseAttribute.CODE, "20110509092359990-10")); + searchCriteria.addSubCriteria(SearchSubCriteria + .createDataSetContainerCriteria(containerCriteria)); + + List<DataSet> result = + generalInformationService.searchForDataSets(sessionToken, searchCriteria); + assertEquals(2, result.size()); + assertEquals( + "[DataSet[20110509092359990-11,/CISD/DEFAULT/EXP-REUSE,<null>,HCS_IMAGE,{COMMENT=non-virtual comment},[]], " + + "DataSet[20110509092359990-12,/CISD/DEFAULT/EXP-REUSE,<null>,HCS_IMAGE,{COMMENT=non-virtual comment},[]]]", + result.toString()); + } } -- GitLab