diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java index c2913e5d28536393c96d6c1d506224d9cc6530dd..ece2aeca4551118de0ca51e41817aaa304731ef6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java @@ -23,6 +23,7 @@ import java.util.Date; import java.util.EnumSet; import java.util.HashMap; import java.util.List; +import java.util.TreeMap; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; @@ -283,27 +284,8 @@ public final class DataSet implements Serializable builder.append(getDataSetTypeCode()); // Append properties alphabetically for consistency - HashMap<String, String> props = getProperties(); - ArrayList<String> sortedKeys = new ArrayList<String>(props.size()); - sortedKeys.addAll(props.keySet()); - Collections.sort(sortedKeys); - StringBuilder propString = new StringBuilder(); - propString.append("{"); - for (String key : sortedKeys) - { - propString.append(key); - propString.append("="); - propString.append(props.get(key)); - propString.append(", "); - } - if (sortedKeys.size() > 0) - { - // Get rid of the trailing , - propString.deleteCharAt(propString.length() - 1); - propString.deleteCharAt(propString.length() - 1); - } - propString.append("}"); - builder.append(propString); + TreeMap<String, String> sortedProps = new TreeMap<String, String>(getProperties()); + builder.append(sortedProps.toString()); if (retrievedConnections.contains(Connections.PARENTS)) { builder.append(getParentCodes()); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSetTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSetTest.java index 3e7d20f9903e356d4d6a751a6b7c9de6e06b8f06..b5b81b7c706e552b0ebb344164217137d146f34d 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSetTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSetTest.java @@ -40,6 +40,7 @@ public class DataSetTest extends AssertJUnit initializer.setCode(DATA_SET_CODE); initializer.setExperimentIdentifier("/SPACE/PROJECT/EXP"); initializer.setDataSetTypeCode(DATA_SET_TYPE_CODE); + initializer.putProperty("PROP2", "value2"); initializer.putProperty("PROP1", "value1"); dataSet = new DataSet(initializer); } @@ -60,7 +61,6 @@ public class DataSetTest extends AssertJUnit initializer.setCode(DATA_SET_CODE); initializer.setExperimentIdentifier("/SPACE/PROJECT/EXP"); initializer.setDataSetTypeCode(DATA_SET_TYPE_CODE); - initializer.putProperty("PROP1", "value1"); DataSet myDataSet = new DataSet(initializer); assertTrue("Data sets with the same code should be equal.", dataSet.equals(myDataSet)); assertEquals(dataSet.hashCode(), myDataSet.hashCode()); @@ -87,7 +87,8 @@ public class DataSetTest extends AssertJUnit public void testToString() { String stringRepresentation = dataSet.toString(); - assertEquals("DataSet[dataSet-code,/SPACE/PROJECT/EXP,<null>,dataSet-type,{PROP1=value1}]", + assertEquals( + "DataSet[dataSet-code,/SPACE/PROJECT/EXP,<null>,dataSet-type,{PROP1=value1, PROP2=value2}]", stringRepresentation); } }