diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java index c534b618bc4415fb07981fdbc960bea65900003b..b74c2873816549e49ae0b25b0f5cf338ffd2db68 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java @@ -128,7 +128,7 @@ public class EntityHelper { IEntityProperty property = null; - if (holder.getProperties() != null) + if (holder != null && holder.getProperties() != null) { property = EntityHelper.tryFindProperty(holder.getProperties(), propertyCode); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/AnalysisProcedureChooser.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/AnalysisProcedureChooser.java index cf36f2e0624ea31d2d8df35333ca61ad36f267cf..1af57154e8fb197927729274bc24c54cab2e2034 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/AnalysisProcedureChooser.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/AnalysisProcedureChooser.java @@ -59,6 +59,8 @@ class AnalysisProcedureChooser extends LayoutContainer private final static String UNSPECIFIED_PROCEDURE = "Unspecified"; + private final static String ALL_PROCEDURES = "All"; + /** * Can be used from external classes wishing to be notified when the analysis procedure * selection changes. @@ -82,16 +84,15 @@ class AnalysisProcedureChooser extends LayoutContainer public static final AnalysisProcedureChooser createHorizontal( IViewContext<IScreeningClientServiceAsync> viewContext, ExperimentSearchCriteriaHolder experimentCriteriaHolder, - String selectedAnalysisProcedureOrNull, + AnalysisProcedureCriteria initialSelection, IAnalysisProcedureSelectionListener selectionListener, boolean triggerInitialSelectionEvent) { AnalysisProcedureLister analysisProcedureLister = createNumericalDatasetsAnalysisProcedureLister(viewContext, experimentCriteriaHolder); - return new AnalysisProcedureChooser(viewContext, analysisProcedureLister, - selectedAnalysisProcedureOrNull, selectionListener, triggerInitialSelectionEvent, - true); + return new AnalysisProcedureChooser(viewContext, analysisProcedureLister, initialSelection, + selectionListener, triggerInitialSelectionEvent, true); } /** @@ -102,16 +103,15 @@ class AnalysisProcedureChooser extends LayoutContainer public static final AnalysisProcedureChooser createVertical( IViewContext<IScreeningClientServiceAsync> viewContext, ExperimentSearchCriteriaHolder experimentCriteriaHolder, - String selectedAnalysisProcedureOrNull, + AnalysisProcedureCriteria initialSelection, IAnalysisProcedureSelectionListener selectionListener, boolean triggerInitialSelectionEvent) { AnalysisProcedureLister analysisProcedureLister = createNumericalDatasetsAnalysisProcedureLister(viewContext, experimentCriteriaHolder); - return new AnalysisProcedureChooser(viewContext, analysisProcedureLister, - selectedAnalysisProcedureOrNull, selectionListener, triggerInitialSelectionEvent, - false); + return new AnalysisProcedureChooser(viewContext, analysisProcedureLister, initialSelection, + selectionListener, triggerInitialSelectionEvent, false); } /** @@ -119,7 +119,8 @@ class AnalysisProcedureChooser extends LayoutContainer * separate row above the combobox. */ public static final AnalysisProcedureChooser create(IViewContext<?> viewContext, - final AnalysisProcedures analysisProcedures, String selectedAnalysisProcedureOrNull, + final AnalysisProcedures analysisProcedures, + AnalysisProcedureCriteria initialSelection, IAnalysisProcedureSelectionListener selectionListener) { // dummy lister which always returns the same result @@ -131,8 +132,8 @@ class AnalysisProcedureChooser extends LayoutContainer resultsCallback.onSuccess(analysisProcedures); } }; - return new AnalysisProcedureChooser(viewContext, analysisProcedureLister, - selectedAnalysisProcedureOrNull, selectionListener, true, false); + return new AnalysisProcedureChooser(viewContext, analysisProcedureLister, initialSelection, + selectionListener, true, false); } private static AnalysisProcedureLister createNumericalDatasetsAnalysisProcedureLister( @@ -160,6 +161,8 @@ class AnalysisProcedureChooser extends LayoutContainer private final SimpleModelComboBox<String> analysisProceduresComboBox; + private final boolean displaySelectAllProcedures; + private final Listener<BaseEvent> selectionChangeListener = new Listener<BaseEvent>() { @@ -172,7 +175,7 @@ class AnalysisProcedureChooser extends LayoutContainer private AnalysisProcedureChooser(IViewContext<?> viewContext, AnalysisProcedureLister analysisProcedureLister, - String selectedAnalysisProcedureOrNull, + AnalysisProcedureCriteria initialSelection, IAnalysisProcedureSelectionListener selectionListener, boolean triggerInitialSelectionEvent, boolean horizontalLayout) { @@ -182,8 +185,9 @@ class AnalysisProcedureChooser extends LayoutContainer this.selectionListener = selectionListener; this.analysisProcedureLister = analysisProcedureLister; this.analysisProceduresComboBox = createLayout(horizontalLayout); + this.displaySelectAllProcedures = initialSelection.isAllProcedures(); - initSelection(selectedAnalysisProcedureOrNull, triggerInitialSelectionEvent); + initSelection(initialSelection, triggerInitialSelectionEvent); } private SimpleModelComboBox<String> createLayout(boolean horizontalLayout) @@ -214,14 +218,14 @@ class AnalysisProcedureChooser extends LayoutContainer return layoutPanel; } - private void initSelection(String selectedAnalysisProcedureOrNull, boolean triggerEvents) + private void initSelection(AnalysisProcedureCriteria initialSelection, boolean triggerEvents) { if (false == triggerEvents) { disableEvents(true); } - refresh(selectedAnalysisProcedureOrNull); + refresh(initialSelection); if (false == triggerEvents) { @@ -232,11 +236,10 @@ class AnalysisProcedureChooser extends LayoutContainer public void updateAnalysisProcedures() { - String selectedProcedureOrNull = getSelectionAsCriteria().tryGetAnalysisProcedureCode(); - refresh(selectedProcedureOrNull); + refresh(getSelectionAsCriteria()); } - private void refresh(final String selectedAnalysisProcedureOrNull) + private void refresh(final AnalysisProcedureCriteria selectedProcedureCriteria) { analysisProceduresComboBox.removeAll(); @@ -246,7 +249,7 @@ class AnalysisProcedureChooser extends LayoutContainer { public void onSuccess(AnalysisProcedures analysisProcedures) { - refresh(selectedAnalysisProcedureOrNull, analysisProcedures); + refresh(selectedProcedureCriteria, analysisProcedures); } public void onFailure(Throwable caught) @@ -256,11 +259,11 @@ class AnalysisProcedureChooser extends LayoutContainer }); } - private void refresh(final String selectedAnalysisProcedureOrNull, + private void refresh(AnalysisProcedureCriteria selectedProcedureCriteria, AnalysisProcedures analysisProcedures) { addAnalysisProcedures(analysisProcedures.getProcedureCodes()); - setInitialSelection(selectedAnalysisProcedureOrNull); + setInitialSelection(selectedProcedureCriteria); } private Component createComboLabel() @@ -304,11 +307,15 @@ class AnalysisProcedureChooser extends LayoutContainer List<String> sortedCodes = new ArrayList<String>(); for (String code : codes) { - sortedCodes.add(analysisCodeToComboBoxValue(code)); + sortedCodes.add(unspecifiedIfEmpty(code)); } boolean unspecifiedPresent = sortedCodes.remove(UNSPECIFIED_PROCEDURE); Collections.sort(sortedCodes); + if (displaySelectAllProcedures) + { + sortedCodes.add(0, ALL_PROCEDURES); + } if (unspecifiedPresent) { // unspecified is always displayed at the end @@ -325,15 +332,18 @@ class AnalysisProcedureChooser extends LayoutContainer } } - private void setInitialSelection(String value) + private void setInitialSelection(AnalysisProcedureCriteria selectedProcedureCriteria) { - String analysisProcedureOrNull = value; + String analysisProcedureOrNull = selectedProcedureCriteria.tryGetAnalysisProcedureCode(); if (StringUtils.isBlank(analysisProcedureOrNull)) { analysisProcedureOrNull = getDefaultAnalysisProcedure(); } - - String comboBoxValue = analysisCodeToComboBoxValue(analysisProcedureOrNull); + + String comboBoxValue = analysisProcedureOrNull; + if (StringUtils.isBlank(comboBoxValue)) { + comboBoxValue = selectedProcedureCriteria.isNoProcedures() ? UNSPECIFIED_PROCEDURE : ALL_PROCEDURES; + } LabeledItem<String> valueToSelect = analysisProceduresComboBox.findModelForVal(comboBoxValue); @@ -360,11 +370,18 @@ class AnalysisProcedureChooser extends LayoutContainer private AnalysisProcedureCriteria getSelectionAsCriteria() { - String selection = analysisProceduresComboBox.getChosenItem(); - String analysisProcedureOrNull = comboBoxValueToAnalysisProcedure(selection); - return StringUtils.isBlank(analysisProcedureOrNull) ? AnalysisProcedureCriteria - .createNoProcedures() : AnalysisProcedureCriteria - .createFromCode(analysisProcedureOrNull); + String selectedAP = analysisProceduresComboBox.getChosenItem(); + if (UNSPECIFIED_PROCEDURE.equals(selectedAP)) + { + return AnalysisProcedureCriteria.createNoProcedures(); + } else if (ALL_PROCEDURES.equals(selectedAP)) + { + return AnalysisProcedureCriteria.createAllProcedures(); + } else + { + return AnalysisProcedureCriteria.createFromCode(selectedAP); + } + } private String getDefaultAnalysisProcedure() @@ -374,22 +391,19 @@ class AnalysisProcedureChooser extends LayoutContainer private void setDefaultAnalysisProcedure(AnalysisProcedureCriteria analysisProcedureCriteria) { - String analysisProcedureCode = analysisProcedureCriteria.tryGetAnalysisProcedureCode(); + String analysisProcedureCode = + (analysisProcedureCriteria.isAllProcedures()) ? ALL_PROCEDURES + : analysisProcedureCriteria.tryGetAnalysisProcedureCode(); if (StringUtils.isNotBlank(analysisProcedureCode)) { screeningDisplaySettingsManager.setDefaultAnalysisProcedure(analysisProcedureCode); } } - private String analysisCodeToComboBoxValue(String analysisProcedureOrNull) + private String unspecifiedIfEmpty(String analysisProcedureOrNull) { return StringUtils.isBlank(analysisProcedureOrNull) ? UNSPECIFIED_PROCEDURE : analysisProcedureOrNull; } - private String comboBoxValueToAnalysisProcedure(String comboBoxValue) - { - return UNSPECIFIED_PROCEDURE.equals(comboBoxValue) ? null : comboBoxValue; - } - } \ No newline at end of file diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummarySection.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummarySection.java index 9fadaa51bae73611316572558e036553300174ae..e7880f443b539dfc15a195e50c90f2c4fc45f685 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummarySection.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummarySection.java @@ -8,6 +8,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningCli import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.AnalysisProcedureChooser.IAnalysisProcedureSelectionListener; +import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.AnalysisProcedureCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteriaHolder; @@ -81,7 +82,7 @@ public class ExperimentAnalysisSummarySection extends DisposableTabContent ExperimentSearchCriteriaHolder criteriaHolder = new ExperimentSearchCriteriaHolder(experimentCriteria); return AnalysisProcedureChooser.createHorizontal(screeningViewContext, criteriaHolder, - null, getGridAsListener(), true); + AnalysisProcedureCriteria.createNoProcedures(), getGridAsListener(), true); } } \ No newline at end of file diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialMergedSummarySection.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialMergedSummarySection.java index 1261a9311037f7d4f94e32f58f85e12b49f39072..25a1f1f4ae83c432e3e732330551a681c8cdbdb7 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialMergedSummarySection.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialMergedSummarySection.java @@ -147,12 +147,12 @@ class MaterialMergedSummarySection extends DisposableTabContent private AnalysisProcedureChooser createAnalysisProcedureChooser() { - String initialAnalysisProcedureOrNull = - (initialAnalysisProcedureCriteriaOrNull == null) ? null - : initialAnalysisProcedureCriteriaOrNull.tryGetAnalysisProcedureCode(); + AnalysisProcedureCriteria initialSelection = + (initialAnalysisProcedureCriteriaOrNull == null) ? AnalysisProcedureCriteria + .createNoProcedures() : initialAnalysisProcedureCriteriaOrNull; return AnalysisProcedureChooser.createVertical(screeningViewContext, - experimentSearchCriteriaHolder, initialAnalysisProcedureOrNull, + experimentSearchCriteriaHolder, initialSelection, createAnalysisProcedureListener(), false); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java index 6653f3af4ae157952f7d1bd83a25757c6c6eb475..c790f045b771eb1824e87a0e2d1c6f521533715c 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java @@ -571,8 +571,9 @@ public class WellSearchGrid extends TypedTableGrid<WellContent> implements private AnalysisProcedureChooser createAnalysisProcedureChooser() { AnalysisProcedureChooser analysisProcedureChooser = - AnalysisProcedureChooser.createVertical(getViewContext(), experimentCriteriaHolder, - null, this, true); + AnalysisProcedureChooser.createVertical(getViewContext(), + experimentCriteriaHolder, + AnalysisProcedureCriteria.createAllProcedures(), this, true); return analysisProcedureChooser; } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/resultset/WellContentProvider.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/resultset/WellContentProvider.java index e41158e6428767200f4a21c74aba70040ae6391b..b77f81b54b37372a71adc3450788ed10b9d9d142 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/resultset/WellContentProvider.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/resultset/WellContentProvider.java @@ -16,6 +16,7 @@ package ch.systemsx.cisd.openbis.plugin.screening.client.web.server.resultset; +import static ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.grids.WellSearchGridColumnIds.ANALYSIS_PROCEDURE; import static ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.grids.WellSearchGridColumnIds.EXPERIMENT; import static ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.grids.WellSearchGridColumnIds.FILE_FORMAT_TYPE; import static ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.grids.WellSearchGridColumnIds.IMAGE_ANALYSIS_DATA_SET; @@ -103,6 +104,7 @@ public class WellContentProvider extends AbstractTableModelProvider<WellContent> builder.addColumn(FILE_FORMAT_TYPE); builder.addColumn(IMAGE_DATA_SET); builder.addColumn(IMAGE_ANALYSIS_DATA_SET); + builder.addColumn(ANALYSIS_PROCEDURE); } private void addMaterialColumns(TypedTableModelBuilder<WellContent> builder, @@ -173,6 +175,8 @@ public class WellContentProvider extends AbstractTableModelProvider<WellContent> DatasetReference dataset = well.tryGetFeatureVectorDataset(); builder.column(IMAGE_ANALYSIS_DATA_SET).addString( dataset == null ? null : dataset.getCode()); + builder.column(ANALYSIS_PROCEDURE).addString( + dataset == null ? null : dataset.getAnalysisProcedure()); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/FeatureVectorDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/FeatureVectorDatasetLoader.java index a139d9b87e84888b75fe1c1cb354f4f11380eefb..a52c744978b510520659970d949192575802d0fd 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/FeatureVectorDatasetLoader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/FeatureVectorDatasetLoader.java @@ -27,8 +27,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.commons.lang.StringUtils; - import ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister.IDatasetLister; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStore; @@ -165,21 +163,9 @@ class FeatureVectorDatasetLoader extends HCSImageDatasetLoader private boolean isMatchingAnalysisProcedure(ExternalData dataset) { - if (analysisProcedureCriteria.isAllProcedures()) - { - return true; - } - String dataSetAnalysisProcedure = EntityHelper.tryFindPropertyValue(dataset, ScreeningConstants.ANALYSIS_PROCEDURE); - if (analysisProcedureCriteria.isNoProcedures()) - { - return StringUtils.isBlank(dataSetAnalysisProcedure); - } else - { - String analysisProcedureCode = analysisProcedureCriteria.tryGetAnalysisProcedureCode(); - return analysisProcedureCode.equals(dataSetAnalysisProcedure); - } + return analysisProcedureCriteria.matches(dataSetAnalysisProcedure); } private boolean isMatchingAnalysisDataSet(ExternalData dataset) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java index b7c95e9c1affb4cca8eb441c333b31b3f8e8cfb1..38c172dc8a7b22e527ec5e7ebb14466091ff3cc4 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java @@ -28,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; +import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper; import ch.systemsx.cisd.openbis.plugin.screening.server.IScreeningBusinessObjectFactory; import ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess.AnalysisProcedureResult; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.AnalysisProcedures; @@ -63,9 +64,12 @@ public class ScreeningUtils @SuppressWarnings("deprecation") String fileTypeCode = dataset.getFileFormatType().getCode(); Experiment experiment = dataset.getExperiment(); + String analysisProcedureOrNull = + EntityHelper.tryFindPropertyValue(dataset, ScreeningConstants.ANALYSIS_PROCEDURE); return new DatasetReference(dataset.getId(), dataset.getCode(), dataTypeCode, dataset.getRegistrationDate(), fileTypeCode, dataStore.getCode(), - dataStore.getHostUrl(), experiment.getPermId(), experiment.getIdentifier()); + dataStore.getHostUrl(), experiment.getPermId(), experiment.getIdentifier(), + analysisProcedureOrNull); } public static List<ExternalDataPE> filterImageAnalysisDatasetsPE(List<ExternalDataPE> datasets) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/WellContentLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/WellContentLoader.java index 8f8cd9ed80e15e7b3ca63096eb541d83bd6a3d70..4b64a151e79f818c1c9a2c0908ffec8522ecf962 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/WellContentLoader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/WellContentLoader.java @@ -143,8 +143,10 @@ public class WellContentLoader extends AbstractContentLoader List<WellContent> withPropsAndDataSets = loader.enrichWithDatasets(locations, materialCriteria.getAnalysisProcedureCriteria()); - List<WellContent> withFeatureVectors = - loader.enrichWithFeatureVectors(withPropsAndDataSets); + List<WellContent> byAnalysisProcedure = + loader.filterByAnalysisProcedure(withPropsAndDataSets, + materialCriteria.getAnalysisProcedureCriteria()); + List<WellContent> withFeatureVectors = loader.enrichWithFeatureVectors(byAnalysisProcedure); return withFeatureVectors; } @@ -972,4 +974,27 @@ public class WellContentLoader extends AbstractContentLoader return new ExperimentReference(loc.exp_id, loc.exp_perm_id, loc.exp_code, loc.exp_type_code, loc.proj_code, loc.space_code); } + + private List<WellContent> filterByAnalysisProcedure(List<WellContent> wells, + AnalysisProcedureCriteria criteria) + { + if (criteria.isAllProcedures()) + { + return wells; + } + ArrayList<WellContent> filtered = new ArrayList<WellContent>(); + for (WellContent well : wells) + { + String analysisProcedureCode = + well.tryGetFeatureVectorDataset() == null ? null : well + .tryGetFeatureVectorDataset().getAnalysisProcedure(); + if (criteria.matches(analysisProcedureCode)) + { + filtered.add(well); + } + } + + return filtered; + } + } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetReference.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetReference.java index baa231a517b56cdbe4b8fccbe168caf7f8e841e9..71e4bf47bad27215467dab0a6753164a9e80bda4 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetReference.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetReference.java @@ -51,6 +51,8 @@ public class DatasetReference implements ISerializable, IEntityInformationHolder private String experimentIdentifier; + private String analysisProcedure; + // GWT only @SuppressWarnings("unused") private DatasetReference() @@ -59,7 +61,7 @@ public class DatasetReference implements ISerializable, IEntityInformationHolder public DatasetReference(long id, String code, String typeCode, Date registrationDate, String fileTypeCode, String datastoreCode, String datastoreHostUrl, - String experimentPermId, String experimentIdentifier) + String experimentPermId, String experimentIdentifier, String analysisProcedure) { this.id = id; this.datasetCode = code; @@ -70,6 +72,7 @@ public class DatasetReference implements ISerializable, IEntityInformationHolder this.datastoreHostUrl = datastoreHostUrl; this.experimentPermId = experimentPermId; this.experimentIdentifier = experimentIdentifier; + this.analysisProcedure = analysisProcedure; } public String getCode() @@ -126,4 +129,9 @@ public class DatasetReference implements ISerializable, IEntityInformationHolder { return experimentIdentifier; } + + public String getAnalysisProcedure() + { + return analysisProcedure; + } } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/WellSearchCriteria.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/WellSearchCriteria.java index 1d03f6a13bb014ee0ca84abd5e5efc7acc59b0f8..9d079cc84b4031ac640088ee5bf2e3b1a6529f4c 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/WellSearchCriteria.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/WellSearchCriteria.java @@ -586,6 +586,19 @@ public class WellSearchCriteria implements ISerializable return analysisProcedureCodeOrNull; } + public boolean matches(String codeOrNull) + { + if (isAllProcedures()) + { + return true; + } + if (StringUtils.isBlank(codeOrNull)) + { + return isNoProcedures(); + } + return codeOrNull.equals(analysisProcedureCodeOrNull); + } + @Override public String toString() { diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/grids/WellSearchGridColumnIds.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/grids/WellSearchGridColumnIds.java index 275c24240d62f4a18708e8a98e7d15963aba384a..7c31ffe54a6f369fc0b733def7cb28ba447d74ec 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/grids/WellSearchGridColumnIds.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/grids/WellSearchGridColumnIds.java @@ -39,6 +39,8 @@ public class WellSearchGridColumnIds public static final String WELL_IMAGES = "WELL_IMAGES"; + public static final String ANALYSIS_PROCEDURE = "ANALYSIS_PROCEDURE"; + private static final String MATERIAL_PROPERTY_GROUP = "MATERIAL_PROPERTY-"; private static final String PROPERTY_CODE_MARKER = "$$$"; diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/WellTooltipGeneratorTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/WellTooltipGeneratorTest.java index 5263a5cf922768e3449fcad6295f9a5e2af1d7cb..9c31a7cec63ce3041cce39fa23e40e5496dd31e2 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/WellTooltipGeneratorTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/WellTooltipGeneratorTest.java @@ -191,7 +191,7 @@ public class WellTooltipGeneratorTest extends AssertJUnit private static DatasetReference createDatasetReference() { - return new DatasetReference(0, null, null, null, null, null, null, null, null); + return new DatasetReference(0, null, null, null, null, null, null, null, null, null); } private static PlateMetadata createEmptyPlateMetadata() diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/utils/EntityTypeLabelUtilsTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/utils/EntityTypeLabelUtilsTest.java index c03f01d608e481d9afb645436671d19203f2b05a..36805f8ca2b18aeaf39738f5ef990d9dd30bc874 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/utils/EntityTypeLabelUtilsTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/utils/EntityTypeLabelUtilsTest.java @@ -45,7 +45,7 @@ public class EntityTypeLabelUtilsTest extends AssertJUnit { DatasetReference ref = new DatasetReference(0, "123412342314-1234", typeCode, null, "DAT", null, null, - null, null); + null, null, null); return EntityTypeLabelUtils.createDatasetLabel(ref, withFileType, "2011-05-30", null, true); } } \ No newline at end of file