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

bug in ProteinResultDataSetParentLinkingTask fixed.

SVN: 23339
parent 2c1efe1b
No related branches found
No related tags found
No related merge requests found
...@@ -18,7 +18,6 @@ package ch.systemsx.cisd.openbis.etlserver.phosphonetx; ...@@ -18,7 +18,6 @@ package ch.systemsx.cisd.openbis.etlserver.phosphonetx;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Properties;
...@@ -31,6 +30,7 @@ import ch.systemsx.cisd.common.utilities.PropertyUtils; ...@@ -31,6 +30,7 @@ import ch.systemsx.cisd.common.utilities.PropertyUtils;
import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
import ch.systemsx.cisd.openbis.etlserver.phosphonetx.dto.ParentDataSetCodes;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
...@@ -96,14 +96,20 @@ public class DataSetInfoExtractorForProteinResults extends AbstractDataSetInfoEx ...@@ -96,14 +96,20 @@ public class DataSetInfoExtractorForProteinResults extends AbstractDataSetInfoEx
Properties properties = Properties properties =
loadSearchProperties(new File(incomingDataSetPath, experimentPropertiesFileName)); loadSearchProperties(new File(incomingDataSetPath, experimentPropertiesFileName));
experiment.setProperties(Util.getAndCheckProperties(properties, experimentType)); experiment.setProperties(Util.getAndCheckProperties(properties, experimentType));
service.registerExperiment(experiment);
DataSetInformation info = new DataSetInformation(); DataSetInformation info = new DataSetInformation();
info.setExperimentIdentifier(experimentIdentifier); info.setExperimentIdentifier(experimentIdentifier);
String parentDataSetCodesOrNull = getProperty(properties, PARENT_DATA_SET_CODES); String parentDataSetCodesOrNull = getProperty(properties, PARENT_DATA_SET_CODES);
String baseExperimentIdentifier = getProperty(properties, EXPERIMENT_IDENTIFIER_KEY); String baseExperimentIdentifier = getProperty(properties, EXPERIMENT_IDENTIFIER_KEY);
List<String> parentDataSetCodes = ParentDataSetCodes parentDataSetCodes =
getParentDataSetCodes(parentDataSetCodesOrNull, baseExperimentIdentifier, service); getParentDataSetCodes(parentDataSetCodesOrNull, baseExperimentIdentifier, service);
info.setParentDataSetCodes(parentDataSetCodes); if (parentDataSetCodes.getErrorMessage() == null)
{
info.setParentDataSetCodes(parentDataSetCodes.getDataSetCodes());
} else
{
throw new UserFailureException(parentDataSetCodes.getErrorMessage());
}
service.registerExperiment(experiment);
return info; return info;
} }
...@@ -111,35 +117,45 @@ public class DataSetInfoExtractorForProteinResults extends AbstractDataSetInfoEx ...@@ -111,35 +117,45 @@ public class DataSetInfoExtractorForProteinResults extends AbstractDataSetInfoEx
* Returns data set codes either from the first argument or if <code>null</code> from * Returns data set codes either from the first argument or if <code>null</code> from
* the data sets of the specified experiment. * the data sets of the specified experiment.
*/ */
static List<String> getParentDataSetCodes(String parentDataSetCodesOrNull, static ParentDataSetCodes getParentDataSetCodes(String parentDataSetCodesOrNull,
String baseExperimentIdentifier, IEncapsulatedOpenBISService service) String baseExperimentIdentifier, IEncapsulatedOpenBISService service)
{ {
List<String> parentDataSetCodes = new ArrayList<String>(); List<ExternalData> parentDataSets = new ArrayList<ExternalData>();
StringBuilder builder = new StringBuilder();
if (parentDataSetCodesOrNull != null) if (parentDataSetCodesOrNull != null)
{ {
parentDataSetCodes = Arrays.asList(StringUtils.split(parentDataSetCodesOrNull, ", ")); for (String code : StringUtils.split(parentDataSetCodesOrNull, ", "))
} else
{
if (baseExperimentIdentifier != null)
{ {
ExperimentIdentifier identifier = ExternalData dataSet = service.tryGetDataSet(code);
new ExperimentIdentifierFactory(baseExperimentIdentifier) if (dataSet != null)
.createIdentifier();
Experiment baseExperiment = service.tryToGetExperiment(identifier);
if (baseExperiment == null)
{ {
throw new UserFailureException("Property " + EXPERIMENT_IDENTIFIER_KEY parentDataSets.add(dataSet);
+ " specifies an unknown experiment: " + baseExperimentIdentifier); } else
}
List<ExternalData> dataSets =
service.listDataSetsByExperimentID(baseExperiment.getId());
for (ExternalData dataSet : dataSets)
{ {
parentDataSetCodes.add(dataSet.getCode()); builder.append(builder.length() == 0 ? "Unknown data sets: " : ", ");
builder.append(code);
} }
} }
} else if (baseExperimentIdentifier != null)
{
ExperimentIdentifier identifier =
new ExperimentIdentifierFactory(baseExperimentIdentifier).createIdentifier();
Experiment baseExperiment = service.tryToGetExperiment(identifier);
if (baseExperiment != null)
{
parentDataSets.addAll(service.listDataSetsByExperimentID(baseExperiment.getId()));
} else
{
builder.append("Unkown experiment ").append(baseExperimentIdentifier);
}
}
List<String> parentDataSetCodes = new ArrayList<String>();
for (ExternalData dataSet : parentDataSets)
{
parentDataSetCodes.add(dataSet.getCode());
} }
return parentDataSetCodes; String errorMessage = builder.length() > 0 ? builder.toString() : null;
return new ParentDataSetCodes(parentDataSetCodes, errorMessage);
} }
private String getProperty(Properties properties, String key) private String getProperty(Properties properties, String key)
......
...@@ -22,7 +22,6 @@ import java.util.HashMap; ...@@ -22,7 +22,6 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.regex.Pattern;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
...@@ -54,8 +53,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; ...@@ -54,8 +53,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier;
*/ */
public class ProteinResultDataSetParentLinkingTask implements IMaintenanceTask public class ProteinResultDataSetParentLinkingTask implements IMaintenanceTask
{ {
private static final Pattern DATA_SET_CODE_PATTERN = Pattern.compile("\\d{17}-\\d+");
private static final String PARENT_DATA_SET_CODES_KEY = private static final String PARENT_DATA_SET_CODES_KEY =
DataSetInfoExtractorForProteinResults.PARENT_DATA_SET_CODES.toUpperCase(); DataSetInfoExtractorForProteinResults.PARENT_DATA_SET_CODES.toUpperCase();
...@@ -99,8 +96,9 @@ public class ProteinResultDataSetParentLinkingTask implements IMaintenanceTask ...@@ -99,8 +96,9 @@ public class ProteinResultDataSetParentLinkingTask implements IMaintenanceTask
String parentDataSetCodes = String parentDataSetCodes =
tryGetProperty(propertiesMap, PARENT_DATA_SET_CODES_KEY); tryGetProperty(propertiesMap, PARENT_DATA_SET_CODES_KEY);
List<String> codes = List<String> codes =
filter(DataSetInfoExtractorForProteinResults.getParentDataSetCodes( DataSetInfoExtractorForProteinResults.getParentDataSetCodes(
parentDataSetCodes, baseExperimentIdentifier, service)); parentDataSetCodes, baseExperimentIdentifier, service)
.getDataSetCodes();
if (codes.isEmpty()) if (codes.isEmpty())
{ {
continue; continue;
...@@ -160,16 +158,4 @@ public class ProteinResultDataSetParentLinkingTask implements IMaintenanceTask ...@@ -160,16 +158,4 @@ public class ProteinResultDataSetParentLinkingTask implements IMaintenanceTask
return property == null ? null : property.tryGetAsString(); return property == null ? null : property.tryGetAsString();
} }
private List<String> filter(List<String> codes)
{
List<String> result = new ArrayList<String>();
for (String code : codes)
{
if (DATA_SET_CODE_PATTERN.matcher(code).matches())
{
result.add(code);
}
}
return result;
}
} }
/*
* 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.etlserver.phosphonetx.dto;
import java.util.List;
/**
* Data transfer object which contains a list of data set codes and an optional
* error message.
*
* @author Franz-Josef Elmer
*/
public class ParentDataSetCodes
{
private final List<String> dataSetCodes;
private final String errorMessage;
public ParentDataSetCodes(List<String> dataSetCodes, String errorMessage)
{
super();
this.dataSetCodes = dataSetCodes;
this.errorMessage = errorMessage;
}
public List<String> getDataSetCodes()
{
return dataSetCodes;
}
public String getErrorMessage()
{
return errorMessage;
}
}
...@@ -96,6 +96,10 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste ...@@ -96,6 +96,10 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste
String experimentType = "MY_EXPERIMENT"; String experimentType = "MY_EXPERIMENT";
properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType); properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType);
properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile);
prepareGetDataSet("1");
prepareGetDataSet("2");
prepareGetDataSet("3");
prepareGetDataSet("4");
prepare(experimentType); prepare(experimentType);
context.checking(new Expectations() context.checking(new Expectations()
{ {
...@@ -120,6 +124,10 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste ...@@ -120,6 +124,10 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste
DataSetInfoExtractorForProteinResults.DEFAULT_EXPERIMENT_PROPERTIES_FILE_NAME), DataSetInfoExtractorForProteinResults.DEFAULT_EXPERIMENT_PROPERTIES_FILE_NAME),
"answer=42\nblabla=blub\n" + PARENT_DATA_SET_CODES + "=1 2 3 4\n"); "answer=42\nblabla=blub\n" + PARENT_DATA_SET_CODES + "=1 2 3 4\n");
prepare(DEFAULT_EXPERIMENT_TYPE_CODE); prepare(DEFAULT_EXPERIMENT_TYPE_CODE);
prepareGetDataSet("1");
prepareGetDataSet("2");
prepareGetDataSet("3");
prepareGetDataSet("4");
context.checking(new Expectations() context.checking(new Expectations()
{ {
...@@ -214,6 +222,70 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste ...@@ -214,6 +222,70 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste
context.assertIsSatisfied(); context.assertIsSatisfied();
} }
@Test
public void testWithUnkownBaseExperiment()
{
String propertiesFile = "my.properties";
FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n"
+ EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP1\n");
Properties properties = new Properties();
String experimentType = "MY_EXPERIMENT";
properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType);
properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile);
prepare(experimentType);
context.checking(new Expectations()
{
{
one(service).tryToGetExperiment(
new ExperimentIdentifier(new ProjectIdentifier("TEST", "PROJECT"),
"EXP1"));
will(returnValue(null));
}
});
IDataSetInfoExtractor extractor = createExtractor(properties);
try
{
extractor.getDataSetInformation(dataSet, service);
fail("UserFailureException expected.");
} catch (UserFailureException ex)
{
assertEquals("Unkown experiment /TEST/PROJECT/EXP1", ex.getMessage());
}
context.assertIsSatisfied();
}
@Test
public void testWithUnkownParentDataSets()
{
String propertiesFile = "my.properties";
FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n"
+ EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP1\n" + PARENT_DATA_SET_CODES_KEY
+ " = ds1 ds2, ds3");
Properties properties = new Properties();
String experimentType = "MY_EXPERIMENT";
properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType);
properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile);
prepare(experimentType);
prepareGetDataSet("ds1");
prepareGetDataSet("ds2", null);
prepareGetDataSet("ds3", null);
IDataSetInfoExtractor extractor = createExtractor(properties);
try
{
extractor.getDataSetInformation(dataSet, service);
fail("UserFailureException expected.");
} catch (UserFailureException ex)
{
assertEquals("Unknown data sets: ds2, ds3", ex.getMessage());
}
context.assertIsSatisfied();
}
@Test @Test
public void testWithParentDataSetsSeparatedBySpaces() public void testWithParentDataSetsSeparatedBySpaces()
{ {
...@@ -226,6 +298,8 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste ...@@ -226,6 +298,8 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste
properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType); properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType);
properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile);
prepare(experimentType); prepare(experimentType);
prepareGetDataSet("ds1");
prepareGetDataSet("ds2");
context.checking(new Expectations() context.checking(new Expectations()
{ {
{ {
...@@ -253,6 +327,8 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste ...@@ -253,6 +327,8 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste
properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType); properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType);
properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile);
prepare(experimentType); prepare(experimentType);
prepareGetDataSet("ds1");
prepareGetDataSet("ds2");
context.checking(new Expectations() context.checking(new Expectations()
{ {
{ {
...@@ -290,6 +366,22 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste ...@@ -290,6 +366,22 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste
}); });
} }
private void prepareGetDataSet(final String dataSetCode)
{
prepareGetDataSet(dataSetCode, new DataSetBuilder().code(dataSetCode).getDataSet());
}
private void prepareGetDataSet(final String dataSetCode, final ExternalData data)
{
context.checking(new Expectations()
{
{
one(service).tryGetDataSet(dataSetCode);
will(returnValue(data));
}
});
}
private IDataSetInfoExtractor createExtractor(Properties properties) private IDataSetInfoExtractor createExtractor(Properties properties)
{ {
return new DataSetInfoExtractorForProteinResults(properties, service); return new DataSetInfoExtractorForProteinResults(properties, service);
......
...@@ -85,25 +85,21 @@ public class ProteinResultDataSetParentLinkingTaskTest extends AssertJUnit ...@@ -85,25 +85,21 @@ public class ProteinResultDataSetParentLinkingTaskTest extends AssertJUnit
.getExperiment(); .getExperiment();
final Experiment e2 = final Experiment e2 =
new ExperimentBuilder().id(2).identifier("/A/P2/E2") new ExperimentBuilder().id(2).identifier("/A/P2/E2")
.property(PARENT_DATA_SET_CODES_KEY, "non-sense").getExperiment(); .property(PARENT_DATA_SET_CODES_KEY, "non-sense2").getExperiment();
final Experiment e3 = final Experiment e3 =
new ExperimentBuilder() new ExperimentBuilder().id(3).identifier("/A/P2/E3")
.id(3) .property(PARENT_DATA_SET_CODES_KEY, "ds1, ds3").getExperiment();
.identifier("/A/P2/E3")
.property(PARENT_DATA_SET_CODES_KEY,
"20100930111833087-297733, 20100511163311581-25265")
.getExperiment();
final Experiment e4 = final Experiment e4 =
new ExperimentBuilder().id(4).identifier("/S/P1/E4") new ExperimentBuilder().id(4).identifier("/S/P1/E4")
.property(BASE_EXPERIMENT_KEY, "/S/P1/E1").getExperiment(); .property(BASE_EXPERIMENT_KEY, "/S/P1/E1").getExperiment();
final DataSet ds1 = final DataSet ds1 =
new DataSetBuilder(1).code("20100930111811581-25265").fileFormat("A") new DataSetBuilder(1).code("ds1").fileFormat("A")
.experiment(e1).modificationDate(new Date(11)).getDataSet(); .experiment(e1).modificationDate(new Date(11)).getDataSet();
final DataSet ds2 = final DataSet ds2 =
new DataSetBuilder(2).code("20100930111811087-29765").fileFormat("B") new DataSetBuilder(2).code("ds2").fileFormat("B")
.experiment(e4).modificationDate(new Date(22)).getDataSet(); .experiment(e4).modificationDate(new Date(22)).getDataSet();
final DataSet ds3 = final DataSet ds3 =
new DataSetBuilder(3).code("20100530111833087-297733").fileFormat("C") new DataSetBuilder(3).code("ds3").fileFormat("C")
.experiment(e3).modificationDate(new Date(33)).property("ALPHA", "3.1") .experiment(e3).modificationDate(new Date(33)).property("ALPHA", "3.1")
.getDataSet(); .getDataSet();
final RecordingMatcher<AtomicEntityOperationDetails> operationRecorder = final RecordingMatcher<AtomicEntityOperationDetails> operationRecorder =
...@@ -122,7 +118,16 @@ public class ProteinResultDataSetParentLinkingTaskTest extends AssertJUnit ...@@ -122,7 +118,16 @@ public class ProteinResultDataSetParentLinkingTaskTest extends AssertJUnit
one(service).tryToGetExperiment(ExperimentIdentifierFactory.parse("/S/P1/E1")); one(service).tryToGetExperiment(ExperimentIdentifierFactory.parse("/S/P1/E1"));
will(returnValue(e1)); will(returnValue(e1));
one(service).tryGetDataSet("non-sense2");
will(returnValue(null));
one(service).tryGetDataSet("ds1");
will(returnValue(ds1));
one(service).tryGetDataSet("ds3");
will(returnValue(ds3));
one(service).listDataSetsByExperimentID(e1.getId()); one(service).listDataSetsByExperimentID(e1.getId());
will(returnValue(Arrays.asList(ds1))); will(returnValue(Arrays.asList(ds1)));
...@@ -139,10 +144,10 @@ public class ProteinResultDataSetParentLinkingTaskTest extends AssertJUnit ...@@ -139,10 +144,10 @@ public class ProteinResultDataSetParentLinkingTaskTest extends AssertJUnit
task.execute(); task.execute();
assertEquals("INFO OPERATION.ProteinResultDataSetParentLinkingTask - " assertEquals("INFO OPERATION.ProteinResultDataSetParentLinkingTask - "
+ "Parent data set links of data set 20100930111811087-29765 " + "Parent data set links of data set ds2 "
+ "from experiment /S/P1/E4 will be updated.\n" + "from experiment /S/P1/E4 will be updated.\n"
+ "INFO OPERATION.ProteinResultDataSetParentLinkingTask - " + "INFO OPERATION.ProteinResultDataSetParentLinkingTask - "
+ "Parent data set links of data set 20100530111833087-297733 " + "Parent data set links of data set ds3 "
+ "from experiment /A/P2/E3 will be updated.\n" + "from experiment /A/P2/E3 will be updated.\n"
+ "INFO OPERATION.ProteinResultDataSetParentLinkingTask - " + "INFO OPERATION.ProteinResultDataSetParentLinkingTask - "
+ "Parent data set links for 2 data sets have been updated.", + "Parent data set links for 2 data sets have been updated.",
...@@ -155,7 +160,7 @@ public class ProteinResultDataSetParentLinkingTaskTest extends AssertJUnit ...@@ -155,7 +160,7 @@ public class ProteinResultDataSetParentLinkingTaskTest extends AssertJUnit
assertEquals("[]", dataSetUpdates.get(0).getProperties().toString()); assertEquals("[]", dataSetUpdates.get(0).getProperties().toString());
assertEquals(e4.getIdentifier(), dataSetUpdates.get(0).getExperimentIdentifierOrNull() assertEquals(e4.getIdentifier(), dataSetUpdates.get(0).getExperimentIdentifierOrNull()
.toString()); .toString());
assertEquals("[20100930111811581-25265]", assertEquals("[ds1]",
Arrays.asList(dataSetUpdates.get(0).getModifiedParentDatasetCodesOrNull()) Arrays.asList(dataSetUpdates.get(0).getModifiedParentDatasetCodesOrNull())
.toString()); .toString());
assertEquals(3L, dataSetUpdates.get(1).getDatasetId().getId().longValue()); assertEquals(3L, dataSetUpdates.get(1).getDatasetId().getId().longValue());
...@@ -164,7 +169,7 @@ public class ProteinResultDataSetParentLinkingTaskTest extends AssertJUnit ...@@ -164,7 +169,7 @@ public class ProteinResultDataSetParentLinkingTaskTest extends AssertJUnit
assertEquals("[ALPHA: 3.1]", dataSetUpdates.get(1).getProperties().toString()); assertEquals("[ALPHA: 3.1]", dataSetUpdates.get(1).getProperties().toString());
assertEquals(e3.getIdentifier(), dataSetUpdates.get(1).getExperimentIdentifierOrNull() assertEquals(e3.getIdentifier(), dataSetUpdates.get(1).getExperimentIdentifierOrNull()
.toString()); .toString());
assertEquals("[20100930111833087-297733, 20100511163311581-25265]", assertEquals("[ds1, ds3]",
Arrays.asList(dataSetUpdates.get(1).getModifiedParentDatasetCodesOrNull()) Arrays.asList(dataSetUpdates.get(1).getModifiedParentDatasetCodesOrNull())
.toString()); .toString());
assertEquals(2, dataSetUpdates.size()); assertEquals(2, dataSetUpdates.size());
......
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