From 4b390aac751a1d937b67ab8ea1fafec547e8fac9 Mon Sep 17 00:00:00 2001 From: izabel <izabel> Date: Tue, 7 Sep 2010 14:41:22 +0000 Subject: [PATCH] [LMS-1727] exact match SVN: 17750 --- .../client/web/client/application/Dict.java | 2 ++ .../ExperimentPlateLocationsSection.java | 9 ++++++++- .../detailviewers/PlateMaterialReviewer.java | 5 +++-- .../client/web/public/screening-dictionary.js | 2 ++ .../logic/PlateMaterialLocationsLoader.java | 16 ++++++++-------- .../basic/dto/PlateMaterialsSearchCriteria.java | 14 +++++++++++--- 6 files changed, 34 insertions(+), 14 deletions(-) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/Dict.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/Dict.java index af303183b0b..7e0d0749b28 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/Dict.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/Dict.java @@ -68,6 +68,8 @@ public final class Dict extends ch.systemsx.cisd.openbis.generic.client.web.clie public static final String PLATE_MATERIAL_REVIEWER_SPECIFY_METERIAL_ITEMS = "PLATE_MATERIAL_REVIEWER_SPECIFY_METERIAL_ITEMS"; + public static final String EXACT_MATCH_ONLY = "EXACT_MATCH_ONLY"; + private Dict() { // Can not be instantiated. diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentPlateLocationsSection.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentPlateLocationsSection.java index a8e7e1c94f7..1a58f49645c 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentPlateLocationsSection.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentPlateLocationsSection.java @@ -22,6 +22,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.CheckBoxField; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.MultilineItemsField; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier; @@ -48,6 +49,8 @@ public class ExperimentPlateLocationsSection extends SingleSectionPanel private final MultilineItemsField materialListField; + private final CheckBoxField exactMatchOnly; + private List<MaterialType> materialTypesOrNull; public ExperimentPlateLocationsSection( @@ -59,6 +62,9 @@ public class ExperimentPlateLocationsSection extends SingleSectionPanel this.screeningViewContext = screeningViewContext; this.experiment = experiment; this.materialListField = createMaterialListArea(); + this.exactMatchOnly = + new CheckBoxField(screeningViewContext.getMessage(Dict.EXACT_MATCH_ONLY), false); + exactMatchOnly.setBoxLabel(screeningViewContext.getMessage(Dict.EXACT_MATCH_ONLY)); setDisplayID(DisplayTypeIDGenerator.PLATE_MATERIAL_REVIEWER, ID_SUFFIX); screeningViewContext.getCommonService().listMaterialTypes( new AbstractAsyncCallback<List<MaterialType>>(screeningViewContext) @@ -99,6 +105,7 @@ public class ExperimentPlateLocationsSection extends SingleSectionPanel }); container.add(new Label(viewContext.getMessage(Dict.PLATE_MATERIAL_REVIEWER_HELP_INFO))); + container.add(exactMatchOnly); container.add(materialListField); container.add(searchButton); container.setScrollMode(Scroll.AUTO); @@ -154,7 +161,7 @@ public class ExperimentPlateLocationsSection extends SingleSectionPanel } String[] materialTypeCodes = Code.extractCodesToArray(materialTypesOrNull); return PlateMaterialReviewer.create(screeningViewContext, experiment, materialItemList, - materialTypeCodes); + materialTypeCodes, exactMatchOnly.getValue()); } } \ No newline at end of file diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java index 31fc626feb6..b4e65330d2c 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java @@ -95,13 +95,14 @@ public class PlateMaterialReviewer extends AbstractSimpleBrowserGrid<WellContent public static IDisposableComponent create( IViewContext<IScreeningClientServiceAsync> viewContext, IEntityInformationHolderWithIdentifier experiment, String[] materialItemList, - String[] materialTypeCodes) + String[] materialTypeCodes, boolean exactMatchOnly) { ExperimentSearchCriteria experimentCriteria = ExperimentSearchCriteria.createExperiment(experiment.getId(), experiment .getIdentifier()); MaterialSearchCriteria materialCriteria = - MaterialSearchCriteria.createCodesCriteria(materialItemList, materialTypeCodes); + MaterialSearchCriteria.createCodesCriteria(materialItemList, materialTypeCodes, + exactMatchOnly); return create(viewContext, experimentCriteria, materialCriteria); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/public/screening-dictionary.js b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/public/screening-dictionary.js index 10038c31c45..87f319a2f1b 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/public/screening-dictionary.js +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/public/screening-dictionary.js @@ -51,6 +51,8 @@ var screening = { EXPERIMENT_PLATE_MATERIAL_REVIEWER_SECTION: "Wells Reviewing Panel", EXPERIMENT_PLATE_MATERIAL_BROWSER_SECTION: "Well Materials", + EXACT_MATCH_ONLY: "Only Exactly Matching", + // LAST LINE: KEEP IT AT THE END lastline: "" // we need a line without a comma diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateMaterialLocationsLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateMaterialLocationsLoader.java index 005266255e0..9c8850e2c7e 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateMaterialLocationsLoader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateMaterialLocationsLoader.java @@ -281,13 +281,13 @@ public class PlateMaterialLocationsLoader if (expId == null) { locations = - dao.getPlateLocationsForMaterialCodes(ids, - codesCriteria.getMaterialTypeCodes()); + dao.getPlateLocationsForMaterialCodes(ids, codesCriteria + .getMaterialTypeCodes()); } else { locations = - dao.getPlateLocationsForMaterialCodes(ids, - codesCriteria.getMaterialTypeCodes(), expId); + dao.getPlateLocationsForMaterialCodes(ids, codesCriteria + .getMaterialTypeCodes(), expId); } } else if (materialSearchCriteria.tryGetMaterialId() != null) @@ -338,10 +338,10 @@ public class PlateMaterialLocationsLoader } criteria.setCriteria(listOfCriteria); criteria.setConnection(SearchCriteriaConnection.MATCH_ANY); - return ArrayUtils.toPrimitive(daoFactory - .getHibernateSearchDAO() - .searchForEntityIds(criteria, - ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind.MATERIAL) + criteria.setUseWildcardSearchMode(codesCriteria.isExactMatchOnly());// FIXME + return ArrayUtils.toPrimitive(daoFactory.getHibernateSearchDAO().searchForEntityIds( + criteria, + ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind.MATERIAL) .toArray(new Long[0])); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/PlateMaterialsSearchCriteria.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/PlateMaterialsSearchCriteria.java index 152e3914101..3c09d8f95e0 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/PlateMaterialsSearchCriteria.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/PlateMaterialsSearchCriteria.java @@ -136,6 +136,8 @@ public class PlateMaterialsSearchCriteria implements IsSerializable, Serializabl private String[] materialTypeCodes; + private boolean exactMatchOnly; + // GWT only @SuppressWarnings("unused") private MaterialSearchCodesCriteria() @@ -143,8 +145,9 @@ public class PlateMaterialsSearchCriteria implements IsSerializable, Serializabl } public MaterialSearchCodesCriteria(String[] materialCodesOrProperties, - String[] materialTypeCodes) + String[] materialTypeCodes, boolean exactMatchOnly) { + this.exactMatchOnly = exactMatchOnly; for (int i = 0; i < materialCodesOrProperties.length; i++) { materialCodesOrProperties[i] = materialCodesOrProperties[i].toUpperCase(); @@ -158,6 +161,11 @@ public class PlateMaterialsSearchCriteria implements IsSerializable, Serializabl return materialCodesOrProperties; } + public boolean isExactMatchOnly() + { + return exactMatchOnly; + } + public String[] getMaterialTypeCodes() { return materialTypeCodes; @@ -188,10 +196,10 @@ public class PlateMaterialsSearchCriteria implements IsSerializable, Serializabl * of codes and type contained in the specified list of types. */ public static final MaterialSearchCriteria createCodesCriteria(String[] materialCodes, - String[] materialTypeCodes) + String[] materialTypeCodes, boolean exactMatchOnly) { return new MaterialSearchCriteria(new MaterialSearchCodesCriteria(materialCodes, - materialTypeCodes), null); + materialTypeCodes, exactMatchOnly), null); } public static final MaterialSearchCriteria createIdCriteria(TechId materialId) -- GitLab