From c14bb492ded8e953bd908ae459f9b7823061ac0e Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Wed, 26 Aug 2009 14:39:50 +0000 Subject: [PATCH] SE-126 protXML file uploading: parameter name is either code of a sample or value of property MZXML_FILENAME SVN: 12296 --- .../phosphonetx/AbundanceHandler.java | 33 +++++++++++++++---- .../ResultDataSetUploaderTest.java | 31 +++++++++++++---- 2 files changed, 50 insertions(+), 14 deletions(-) diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/AbundanceHandler.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/AbundanceHandler.java index aceab659958..c5ac2124a17 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/AbundanceHandler.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/AbundanceHandler.java @@ -17,13 +17,16 @@ package ch.systemsx.cisd.openbis.etlserver.phosphonetx; import java.util.HashMap; +import java.util.List; import java.util.Map; +import ch.rinn.restrictions.Private; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.etlserver.phosphonetx.dto.Experiment; import ch.systemsx.cisd.openbis.etlserver.phosphonetx.dto.Parameter; import ch.systemsx.cisd.openbis.etlserver.phosphonetx.dto.Sample; +import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.GroupIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; @@ -33,6 +36,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; */ class AbundanceHandler extends AbstractHandler { + @Private static final String MZXML_FILENAME = "MZXML_FILENAME"; + private final IEncapsulatedOpenBISService openbisService; private final GroupIdentifier groupIdentifier; private final Experiment experiment; @@ -69,18 +74,32 @@ class AbundanceHandler extends AbstractHandler SampleIdentifier sampleIdentifier = new SampleIdentifier(groupIdentifier, parameterName); SamplePE samplePE = openbisService.tryGetSampleWithExperiment(sampleIdentifier); - if (samplePE == null) + String permID; + if (samplePE != null) { - samplePE = - openbisService.tryToGetSampleWithProperty("MZXML_FILENAME", - groupIdentifier, parameterName); - if (samplePE == null) + permID = samplePE.getPermId(); + } else + { + List<ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample> list = + openbisService + .listSamplesByCriteria(new ListSamplesByPropertyCriteria( + MZXML_FILENAME, parameterName, groupIdentifier + .getGroupCode(), null)); + if (list == null || list.size() == 0) + { + throw new UserFailureException("Protein '" + proteinName + + "' has an abundance value for an unidentified samples: " + + parameterName); + } + if (list.size() > 1) { throw new UserFailureException("Protein '" + proteinName - + "' has an abundance value for a non-existing sample: " + sampleIdentifier); + + "' has an abundance value for which " + list.size() + + " samples are found: " + parameterName); } + permID = list.get(0).getPermId(); } - sample = getOrCreateSample(experiment, samplePE.getPermId()); + sample = getOrCreateSample(experiment, permID); samples.put(parameterName, sample); } return sample; diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/ResultDataSetUploaderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/ResultDataSetUploaderTest.java index a42b6b4b6f5..c53c2590e38 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/ResultDataSetUploaderTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/ResultDataSetUploaderTest.java @@ -23,6 +23,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import org.hamcrest.BaseMatcher; +import org.hamcrest.Description; import org.jmock.Expectations; import org.jmock.Mockery; import org.testng.AssertJUnit; @@ -57,6 +59,7 @@ import ch.systemsx.cisd.openbis.etlserver.phosphonetx.dto.Sequence; import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.GroupPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.GroupIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; @@ -297,17 +300,31 @@ public class ResultDataSetUploaderTest extends AssertJUnit p1.getParameters().add(createAbundance(CELL_LYSATE1, 2.5)); p1.getParameters().add(new Parameter()); final GroupIdentifier groupIdentifier = new GroupIdentifier(DB_INSTANCE, GROUP_CODE); + String upperCaseParameterName = CELL_LYSATE1.toUpperCase(); final SampleIdentifier sampleIdentifier = - new SampleIdentifier(groupIdentifier, CELL_LYSATE1 - .toUpperCase()); + new SampleIdentifier(groupIdentifier, upperCaseParameterName); + final ListSamplesByPropertyCriteria criteria = + new ListSamplesByPropertyCriteria(AbundanceHandler.MZXML_FILENAME, + upperCaseParameterName, GROUP_CODE, null); context.checking(new Expectations() { { one(service).tryGetSampleWithExperiment(sampleIdentifier); will(returnValue(null)); - - one(service).tryToGetSampleWithProperty("MZXML_FILENAME", groupIdentifier, CELL_LYSATE1 - .toUpperCase()); + + one(service).listSamplesByCriteria( + with(new BaseMatcher<ListSamplesByPropertyCriteria>() + { + public boolean matches(Object item) + { + return criteria.toString().equals(item.toString()); + } + + public void describeTo(Description description) + { + description.appendValue(criteria); + } + })); } }); p1.setPeptides(Collections.<Peptide> emptyList()); @@ -321,8 +338,8 @@ public class ResultDataSetUploaderTest extends AssertJUnit } catch (UserFailureException ex) { AssertionUtil.assertContains("Protein '" + PROTEIN_NAME1 - + "' has an abundance value for a non-existing sample: " + sampleIdentifier, ex - .getMessage()); + + "' has an abundance value for an unidentified samples: " + + upperCaseParameterName, ex.getMessage()); } context.assertIsSatisfied(); -- GitLab