From af3433d2ba499eedbf17c6ab680290d3834ada9a Mon Sep 17 00:00:00 2001 From: tpylak <tpylak> Date: Wed, 2 Mar 2011 10:31:12 +0000 Subject: [PATCH] LMS-2081 minor: simplify API interface for analysis registration SVN: 20194 --- ...tionValues.java => FeatureDefinition.java} | 22 +++- .../impl/FeatureVectorDataSetInformation.java | 29 ++++- .../dss/etl/dto/api/impl/FeaturesBuilder.java | 25 ++-- .../dss/etl/dto/api/v1/FeatureDefinition.java | 120 ------------------ ...ureValues.java => IFeatureDefinition.java} | 10 +- .../etl/dto/api/v1/IFeatureVectorDataSet.java | 28 ++++ .../dss/etl/dto/api/v1/IFeaturesBuilder.java | 2 +- .../CsvToCanonicalFeatureVector.java | 6 +- .../FeatureVectorStorageProcessor.java | 6 +- .../api/impl/FeatureDefinitionValuesTest.java | 12 +- 10 files changed, 104 insertions(+), 156 deletions(-) rename screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/{FeatureDefinitionValues.java => FeatureDefinition.java} (92%) delete mode 100644 screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/FeatureDefinition.java rename screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/{IFeatureValues.java => IFeatureDefinition.java} (84%) create mode 100644 screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeatureVectorDataSet.java diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureDefinitionValues.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureDefinition.java similarity index 92% rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureDefinitionValues.java rename to screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureDefinition.java index ff39220551b..6eda73dd15f 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureDefinitionValues.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureDefinition.java @@ -24,7 +24,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.IFeatureValues; +import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.IFeatureDefinition; import ch.systemsx.cisd.openbis.dss.etl.featurevector.CanonicalFeatureVector; import ch.systemsx.cisd.openbis.dss.etl.featurevector.FeatureValuesMap; import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.Geometry; @@ -39,7 +39,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFe * * @author Tomasz Pylak */ -public class FeatureDefinitionValues implements IFeatureValues +public class FeatureDefinition implements IFeatureDefinition { private final ImgFeatureDefDTO imgFeatureDefDTO; @@ -47,12 +47,12 @@ public class FeatureDefinitionValues implements IFeatureValues private FeatureValuesMap currentFeatureVector; - public FeatureDefinitionValues(ImgFeatureDefDTO imgFeatureDefDTO) + public FeatureDefinition(ImgFeatureDefDTO imgFeatureDefDTO) { this(imgFeatureDefDTO, new FeatureValuesMap(null, null)); } - public FeatureDefinitionValues(ImgFeatureDefDTO imgFeatureDefDTO, + public FeatureDefinition(ImgFeatureDefDTO imgFeatureDefDTO, FeatureValuesMap currentFeatureVector) { assert imgFeatureDefDTO != null : "featureDefinition is null"; @@ -61,7 +61,7 @@ public class FeatureDefinitionValues implements IFeatureValues this.currentFeatureVector = currentFeatureVector; } - public void setSeries(Double timeOrNull, Double depthOrNull) + public void changeSeries(Double timeOrNull, Double depthOrNull) { flushCurrent(); currentFeatureVector = new FeatureValuesMap(timeOrNull, depthOrNull); @@ -76,6 +76,18 @@ public class FeatureDefinitionValues implements IFeatureValues } } + /** Optional. Sets the label of a feature. */ + public void setFeatureLabel(String label) + { + this.imgFeatureDefDTO.setLabel(label); + } + + /** Optional. Sets description of a feature. */ + public void setFeatureDescription(String description) + { + this.imgFeatureDefDTO.setDescription(description); + } + /** * @param well code of the well, e.g. A1 * @param value value of the feature in the specified well diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureVectorDataSetInformation.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureVectorDataSetInformation.java index 01a79ed6ce9..6c2da007c00 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureVectorDataSetInformation.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureVectorDataSetInformation.java @@ -16,10 +16,14 @@ package ch.systemsx.cisd.openbis.dss.etl.dto.api.impl; +import java.util.ArrayList; import java.util.List; +import ch.systemsx.cisd.common.shared.basic.utils.StringUtils; +import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.IFeatureDefinition; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; import ch.systemsx.cisd.openbis.generic.shared.IServer; +import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO; /** * Extends {@link DataSetInformation} with information about images analysis on the well level @@ -31,18 +35,19 @@ public class FeatureVectorDataSetInformation extends DataSetInformation { private static final long serialVersionUID = IServer.VERSION; - private List<FeatureDefinitionValues> features; + private List<FeatureDefinition> features; public FeatureVectorDataSetInformation() { + this.features = new ArrayList<FeatureDefinition>(); } - public List<FeatureDefinitionValues> getFeatures() + public List<FeatureDefinition> getFeatures() { return features; } - public void setFeatures(List<FeatureDefinitionValues> features) + public void setFeatures(List<FeatureDefinition> features) { this.features = features; } @@ -53,4 +58,22 @@ public class FeatureVectorDataSetInformation extends DataSetInformation return features != null && features.size() > 0; } + /** Defines a container to which values of the feature for each well can be added. */ + public IFeatureDefinition defineFeature(String featureCode) + { + assert StringUtils.isBlank(featureCode) == false : "Feature code is blank " + featureCode; + FeatureDefinition featureDefinitionValues = + new FeatureDefinition(createFeatureDefinition(featureCode)); + features.add(featureDefinitionValues); + return featureDefinitionValues; + } + + private static ImgFeatureDefDTO createFeatureDefinition(String featureCode) + { + ImgFeatureDefDTO dto = new ImgFeatureDefDTO(); + dto.setCode(featureCode); + dto.setLabel(featureCode); + return dto; + } + } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeaturesBuilder.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeaturesBuilder.java index 7aecfaa1401..2db162e5c21 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeaturesBuilder.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeaturesBuilder.java @@ -19,8 +19,8 @@ package ch.systemsx.cisd.openbis.dss.etl.dto.api.impl; import java.util.ArrayList; import java.util.List; -import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.FeatureDefinition; -import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.IFeatureValues; +import ch.systemsx.cisd.common.shared.basic.utils.StringUtils; +import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.IFeatureDefinition; import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.IFeaturesBuilder; import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO; @@ -31,33 +31,32 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFe */ public class FeaturesBuilder implements IFeaturesBuilder { - private final List<FeatureDefinitionValues> featureDefinitionValuesList; + private final List<FeatureDefinition> featureDefinitionValuesList; public FeaturesBuilder() { - this.featureDefinitionValuesList = new ArrayList<FeatureDefinitionValues>(); + this.featureDefinitionValuesList = new ArrayList<FeatureDefinition>(); } /** Defines a container to which values of the feature for each well can be added. */ - public IFeatureValues defineFeature(FeatureDefinition featureDefinition) + public IFeatureDefinition defineFeature(String featureCode) { - featureDefinition.ensureValid(); - FeatureDefinitionValues featureDefinitionValues = - new FeatureDefinitionValues(convert(featureDefinition)); + assert StringUtils.isBlank(featureCode) == false : "Feature code is blank " + featureCode; + FeatureDefinition featureDefinitionValues = + new FeatureDefinition(createFeatureDefinition(featureCode)); featureDefinitionValuesList.add(featureDefinitionValues); return featureDefinitionValues; } - private static ImgFeatureDefDTO convert(FeatureDefinition featureDefinition) + private static ImgFeatureDefDTO createFeatureDefinition(String featureCode) { ImgFeatureDefDTO dto = new ImgFeatureDefDTO(); - dto.setCode(featureDefinition.getCode()); - dto.setLabel(featureDefinition.getLabel()); - dto.setDescription(featureDefinition.getDescription()); + dto.setCode(featureCode); + dto.setLabel(featureCode); return dto; } - public List<FeatureDefinitionValues> getFeatureDefinitionValuesList() + public List<FeatureDefinition> getFeatureDefinitionValuesList() { return featureDefinitionValuesList; } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/FeatureDefinition.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/FeatureDefinition.java deleted file mode 100644 index 9ca81d7402e..00000000000 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/FeatureDefinition.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.dss.etl.dto.api.v1; - -import org.apache.commons.lang.StringUtils; - -/** - * Definition of the feature. - * - * @author Tomasz Pylak - */ -public class FeatureDefinition -{ - private String code; - - private String label; - - private String description; - - public FeatureDefinition() - { - } - - /** Creates a feature definition, the label will be equal to the code. */ - public FeatureDefinition(String code) - { - this.code = code; - this.label = code; - } - - public String getCode() - { - return code; - } - - /** Sets the code of a feature. */ - public void setCode(String code) - { - this.code = code; - } - - public String getLabel() - { - return label; - } - - /** Sets the label of a feature. */ - public void setLabel(String label) - { - this.label = label; - } - - public String getDescription() - { - return description; - } - - /** Sets description of a feature. */ - public void setDescription(String description) - { - this.description = description; - } - - /** - * Validates that tile number, well and channel have been specified. - * - * @throws IllegalStateException if the object is not valid. - */ - public void ensureValid() - { - if (StringUtils.isBlank(code)) - { - throw new IllegalStateException("Code is not specified"); - } - if (StringUtils.isBlank(label)) - { - throw new IllegalStateException("Label is not specified"); - } - } - - @Override - public int hashCode() - { - return code.hashCode(); - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - FeatureDefinition other = (FeatureDefinition) obj; - if (code == null) - { - return other.code == null; - } else - { - return code.equals(other.code); - } - } - -} diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeatureValues.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeatureDefinition.java similarity index 84% rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeatureValues.java rename to screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeatureDefinition.java index 113829fd518..4d52a964e47 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeatureValues.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeatureDefinition.java @@ -21,7 +21,7 @@ package ch.systemsx.cisd.openbis.dss.etl.dto.api.v1; * * @author Tomasz Pylak */ -public interface IFeatureValues +public interface IFeatureDefinition { /** * Relevant only in cases where feature values for different timepoints and/or depth-scans are @@ -31,7 +31,7 @@ public interface IFeatureValues * {@link #addValue} until this method will be called again. * </p> */ - void setSeries(Double timeOrNull, Double depthOrNull); + void changeSeries(Double timeOrNull, Double depthOrNull); /** * @param well code of the well, e.g. A1 @@ -45,4 +45,10 @@ public interface IFeatureValues * @param value value of the feature in the specified well */ void addValue(int wellRow, int wellColumn, String value); + + /** Optional. Sets the label of a feature. */ + void setFeatureLabel(String label); + + /** Optional. Sets description of a feature. */ + void setFeatureDescription(String description); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeatureVectorDataSet.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeatureVectorDataSet.java new file mode 100644 index 00000000000..cb9703b0ca8 --- /dev/null +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeatureVectorDataSet.java @@ -0,0 +1,28 @@ +/* + * Copyright 2011 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.dss.etl.dto.api.v1; + +import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSet; + +/** + * @author Tomasz Pylak + */ +public interface IFeatureVectorDataSet extends IDataSet +{ + /** Defines a container to which values of the feature for each well can be added. */ + IFeatureDefinition defineFeature(String featureCode); +} diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeaturesBuilder.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeaturesBuilder.java index c5df9d5a4ce..e44605f40ab 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeaturesBuilder.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/IFeaturesBuilder.java @@ -24,6 +24,6 @@ package ch.systemsx.cisd.openbis.dss.etl.dto.api.v1; public interface IFeaturesBuilder { /** Defines a container to which values of the feature for each well can be added. */ - public IFeatureValues defineFeature(FeatureDefinition featureDefinition); + public IFeatureDefinition defineFeature(String featureCode); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java index 94fdc31e415..9aacfc2e6da 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java @@ -23,7 +23,7 @@ import java.util.Set; import ch.systemsx.cisd.common.shared.basic.utils.StringUtils; import ch.systemsx.cisd.common.utilities.Counters; -import ch.systemsx.cisd.openbis.dss.etl.dto.api.impl.FeatureDefinitionValues; +import ch.systemsx.cisd.openbis.dss.etl.dto.api.impl.FeatureDefinition; import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.DatasetFileLines; import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndLabelUtil; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CodeAndLabel; @@ -282,8 +282,8 @@ public class CsvToCanonicalFeatureVector public CanonicalFeatureVector createCanonicalFeatureVector(ImgFeatureDefDTO featureDef, Geometry geometry) { - FeatureDefinitionValues featureDefinitionValues = - new FeatureDefinitionValues(featureDef, values); + FeatureDefinition featureDefinitionValues = + new FeatureDefinition(featureDef, values); return featureDefinitionValues.getCanonicalFeatureVector(geometry); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java index ad920d80ebe..0ecabd33f52 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java @@ -34,7 +34,7 @@ import ch.systemsx.cisd.etlserver.DispatcherStorageProcessor.IDispatchableStorag import ch.systemsx.cisd.etlserver.ITypeExtractor; import ch.systemsx.cisd.openbis.dss.etl.HCSContainerDatasetInfo; import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingQueryDAO; -import ch.systemsx.cisd.openbis.dss.etl.dto.api.impl.FeatureDefinitionValues; +import ch.systemsx.cisd.openbis.dss.etl.dto.api.impl.FeatureDefinition; import ch.systemsx.cisd.openbis.dss.etl.dto.api.impl.FeatureVectorDataSetInformation; import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.ImageDataSetInformation; import ch.systemsx.cisd.openbis.dss.etl.featurevector.CsvToCanonicalFeatureVector.CsvToCanonicalFeatureVectorConfiguration; @@ -131,12 +131,12 @@ public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProc private static List<CanonicalFeatureVector> extractCanonicalFeatureVectors( FeatureVectorDataSetInformation dataSetInformation, Geometry plateGeometry) { - List<FeatureDefinitionValues> featuresDefinitionValuesList = + List<FeatureDefinition> featuresDefinitionValuesList = dataSetInformation.getFeatures(); List<CanonicalFeatureVector> canonicalFeatureVectors = new ArrayList<CanonicalFeatureVector>(); - for (FeatureDefinitionValues featureDefinitionValues : featuresDefinitionValuesList) + for (FeatureDefinition featureDefinitionValues : featuresDefinitionValuesList) { CanonicalFeatureVector canonicalFeatureVector = featureDefinitionValues.getCanonicalFeatureVector(plateGeometry); diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureDefinitionValuesTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureDefinitionValuesTest.java index 06a68ba8f80..62d64687c40 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureDefinitionValuesTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureDefinitionValuesTest.java @@ -29,7 +29,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFe import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureVocabularyTermDTO; /** - * Test of {@link FeatureDefinitionValues} + * Test of {@link FeatureDefinition} * * @author Tomasz Pylak */ @@ -38,7 +38,7 @@ public class FeatureDefinitionValuesTest extends AssertJUnit @Test public void test() { - FeatureDefinitionValues def = new FeatureDefinitionValues(new ImgFeatureDefDTO()); + FeatureDefinition def = new FeatureDefinition(new ImgFeatureDefDTO()); def.addValue("A1", "1.2"); def.addValue("B2", "2.1"); CanonicalFeatureVector vector = @@ -58,10 +58,10 @@ public class FeatureDefinitionValuesTest extends AssertJUnit @Test public void testTimepointsAndDepthScans() { - FeatureDefinitionValues def = new FeatureDefinitionValues(new ImgFeatureDefDTO()); - def.setSeries(1.1, null); + FeatureDefinition def = new FeatureDefinition(new ImgFeatureDefDTO()); + def.changeSeries(1.1, null); def.addValue("A1", "1"); - def.setSeries(null, 2.2); + def.changeSeries(null, 2.2); def.addValue("A1", "10"); CanonicalFeatureVector vector = @@ -87,7 +87,7 @@ public class FeatureDefinitionValuesTest extends AssertJUnit @Test public void testVocabularyFeatures() { - FeatureDefinitionValues def = new FeatureDefinitionValues(new ImgFeatureDefDTO()); + FeatureDefinition def = new FeatureDefinition(new ImgFeatureDefDTO()); def.addValue("A1", "a"); def.addValue("A2", "b"); def.addValue("A3", "a"); -- GitLab