package eu.etaxonomy.cdm.format.description;
import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
static final String minSep = UTF8.NARROW_NO_BREAK + sepDash;
static final String maxSep = sepDash + UTF8.NARROW_NO_BREAK;
public static final String lowerUpperSep = UTF8.NARROW_NO_BREAK + sepDash + UTF8.NARROW_NO_BREAK;
+ private static final String EXACT_VALUE_SEP = ";";
static final String modifierSep = UTF8.NARROW_NO_BREAK.toString();
minMax = "<" + upper;
}
String exactValueStr = "";
- for(BigDecimal exactValue : quantData.getExactValues()){
+ List<BigDecimal> exactValues = new ArrayList<>(quantData.getExactValues());
+ Collections.sort(exactValues);
+ for(BigDecimal exactValue : exactValues){
if (exactValue != null){
- exactValueStr = CdmUtils.concat(";", exactValueStr, String.valueOf(exactValue));
+ exactValueStr = CdmUtils.concat(EXACT_VALUE_SEP, exactValueStr, String.valueOf(exactValue));
}
}
if (isNotBlank(minMax)){
text = formatter.format(quantData, formatKey);
Assert.assertEquals("data unavailable (0.1"+lowerUpperSep+"1.3 m [n=2])", text);
}
+
+ @Test
+ public void testOrdering() {
+ QuantitativeData quantData = QuantitativeData.NewInstance(Feature.CHROMOSOME_NUMBER());
+ FormatKey[] formatKey = null;
+ QuantitativeDataFormatter formatter = new QuantitativeDataFormatter(quantData, formatKey);
+
+ StatisticalMeasurementValue val1 = StatisticalMeasurementValue.NewInstance(StatisticalMeasure.EXACT_VALUE(), new BigDecimal("2.1"));
+ StatisticalMeasurementValue val2 = StatisticalMeasurementValue.NewInstance(StatisticalMeasure.EXACT_VALUE(), new BigDecimal("1.3"));
+ StatisticalMeasurementValue val3 = StatisticalMeasurementValue.NewInstance(StatisticalMeasure.EXACT_VALUE(), new BigDecimal("5"));
+ StatisticalMeasurementValue val4 = StatisticalMeasurementValue.NewInstance(StatisticalMeasure.EXACT_VALUE(), new BigDecimal("4"));
+ quantData.addStatisticalValue(val1);
+ quantData.addStatisticalValue(val2);
+ quantData.addStatisticalValue(val3);
+ quantData.addStatisticalValue(val4);
+ MeasurementUnit unit = MeasurementUnit.METER();
+ quantData.setUnit(unit);
+
+ String text = formatter.format(quantData, formatKey);
+ Assert.assertEquals("1.3;2.1;4;5 m", text);
+ }
}
\ No newline at end of file