Skip to content
Snippets Groups Projects
Commit c14bb492 authored by felmer's avatar felmer
Browse files

SE-126 protXML file uploading: parameter name is either code of a sample or...

SE-126 protXML file uploading: parameter name is either code of a sample or value of property MZXML_FILENAME

SVN: 12296
parent f6a41df5
No related branches found
No related tags found
No related merge requests found
......@@ -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;
......
......@@ -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();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment