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

SE-137 Abundance columns sorted: Improve comparison, sorting moved to TreatmentFinder

SVN: 12496
parent 4dc04ddf
No related branches found
No related tags found
Loading
...@@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.server.business; ...@@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.server.business;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
...@@ -53,7 +54,9 @@ public class TreatmentFinder ...@@ -53,7 +54,9 @@ public class TreatmentFinder
{ {
Map<String, Treatment> treatments = new LinkedHashMap<String, Treatment>(); Map<String, Treatment> treatments = new LinkedHashMap<String, Treatment>();
findAndAddTreatments(treatments, sample); findAndAddTreatments(treatments, sample);
return new ArrayList<Treatment>(treatments.values()); List<Treatment> treatmentList = new ArrayList<Treatment>(treatments.values());
Collections.sort(treatmentList);
return treatmentList;
} }
private void findAndAddTreatments(Map<String, Treatment> treatments, SamplePE sampleOrNull) private void findAndAddTreatments(Map<String, Treatment> treatments, SamplePE sampleOrNull)
......
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
package ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto; package ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collections;
import java.util.List; import java.util.List;
import com.google.gwt.user.client.rpc.IsSerializable; import com.google.gwt.user.client.rpc.IsSerializable;
...@@ -73,14 +72,7 @@ public class AbundanceColumnDefinition implements Serializable, IsSerializable, ...@@ -73,14 +72,7 @@ public class AbundanceColumnDefinition implements Serializable, IsSerializable,
{ {
if (this.treatments != null && that.treatments != null) if (this.treatments != null && that.treatments != null)
{ {
int sizeDiff = this.treatments.size() - that.treatments.size(); for (int i = 0, n = Math.min(this.treatments.size(), that.treatments.size()); i < n; i++)
if (sizeDiff != 0)
{
return sizeDiff;
}
Collections.sort(this.treatments);
Collections.sort(that.treatments);
for (int i = 0, n = treatments.size(); i < n; i++)
{ {
Treatment thisTreatment = this.treatments.get(i); Treatment thisTreatment = this.treatments.get(i);
Treatment thatTreatment = that.treatments.get(i); Treatment thatTreatment = that.treatments.get(i);
...@@ -90,6 +82,11 @@ public class AbundanceColumnDefinition implements Serializable, IsSerializable, ...@@ -90,6 +82,11 @@ public class AbundanceColumnDefinition implements Serializable, IsSerializable,
return diff; return diff;
} }
} }
int sizeDiff = this.treatments.size() - that.treatments.size();
if (sizeDiff != 0)
{
return sizeDiff;
}
} }
if (this.sampleCode != null && that.sampleCode != null) if (this.sampleCode != null && that.sampleCode != null)
{ {
......
...@@ -74,9 +74,10 @@ public class Treatment implements Serializable, IsSerializable, Comparable<Treat ...@@ -74,9 +74,10 @@ public class Treatment implements Serializable, IsSerializable, Comparable<Treat
public int compareTo(Treatment that) public int compareTo(Treatment that)
{ {
if (this.type.compareTo(that.type) != 0) int typeComparisonResult = this.type.toLowerCase().compareTo(that.type.toLowerCase());
if (typeComparisonResult != 0)
{ {
return this.type.compareTo(that.type); return typeComparisonResult;
} }
double thisNumber = convert(this.value); double thisNumber = convert(this.value);
double thatNumber = convert(that.value); double thatNumber = convert(that.value);
......
...@@ -19,7 +19,6 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.server.business; ...@@ -19,7 +19,6 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.server.business;
import static ch.systemsx.cisd.openbis.plugin.phosphonetx.server.business.TreatmentFinder.TREATMENT_TYPE_CODE; import static ch.systemsx.cisd.openbis.plugin.phosphonetx.server.business.TreatmentFinder.TREATMENT_TYPE_CODE;
import static ch.systemsx.cisd.openbis.plugin.phosphonetx.server.business.TreatmentFinder.TREATMENT_VALUE_CODE; import static ch.systemsx.cisd.openbis.plugin.phosphonetx.server.business.TreatmentFinder.TREATMENT_VALUE_CODE;
import java.util.HashMap;
import java.util.List; import java.util.List;
import org.testng.AssertJUnit; import org.testng.AssertJUnit;
...@@ -56,14 +55,9 @@ public class TreatmentFinderTest extends AssertJUnit ...@@ -56,14 +55,9 @@ public class TreatmentFinderTest extends AssertJUnit
List<Treatment> treatments = new TreatmentFinder().findTreatmentsOf(sample); List<Treatment> treatments = new TreatmentFinder().findTreatmentsOf(sample);
assertEquals(3, treatments.size()); assertEquals(3, treatments.size());
HashMap<String, Treatment> map = new HashMap<String, Treatment>(); assertTreatment("7", "pH", treatments.get(0));
for (Treatment treatment : treatments) assertTreatment("20", "PLASMA", treatments.get(1));
{ assertTreatment("HIV", "VIRUS", EntityDataType.MATERIAL, treatments.get(2));
map.put(treatment.getType(), treatment);
}
assertTreatment("7", "pH", map.get("pH"));
assertTreatment("20", "PLASMA", map.get("PLASMA"));
assertTreatment("HIV", "VIRUS", EntityDataType.MATERIAL, map.get("VIRUS"));
} }
@Test @Test
...@@ -82,8 +76,8 @@ public class TreatmentFinderTest extends AssertJUnit ...@@ -82,8 +76,8 @@ public class TreatmentFinderTest extends AssertJUnit
List<Treatment> treatments = new TreatmentFinder().findTreatmentsOf(sample); List<Treatment> treatments = new TreatmentFinder().findTreatmentsOf(sample);
assertEquals(2, treatments.size()); assertEquals(2, treatments.size());
assertTreatment("20", "PLASMA", treatments.get(0)); assertTreatment("7", "pH", treatments.get(0));
assertTreatment("7", "pH", treatments.get(1)); assertTreatment("20", "PLASMA", treatments.get(1));
} }
@Test @Test
...@@ -135,10 +129,12 @@ public class TreatmentFinderTest extends AssertJUnit ...@@ -135,10 +129,12 @@ public class TreatmentFinderTest extends AssertJUnit
private void assertTreatment(String expectedValue, String expectedType, private void assertTreatment(String expectedValue, String expectedType,
EntityDataType expectedDataType, Treatment treatment) EntityDataType expectedDataType, Treatment treatment)
{ {
assertEquals(expectedValue, treatment.getValue()); assertEquals("Actual treatment: " + treatment, expectedValue, treatment.getValue());
assertEquals(expectedDataType.toString(), treatment.getValueType()); assertEquals("Actual treatment: " + treatment, expectedDataType.toString(), treatment
assertEquals(expectedType, treatment.getType()); .getValueType());
assertEquals(expectedValue + " " + expectedType, treatment.getLabel()); assertEquals("Actual treatment: " + treatment, expectedType, treatment.getType());
assertEquals("Actual treatment: " + treatment, expectedValue + " " + expectedType,
treatment.getLabel());
} }
private void addTreatment(SamplePE sample, String treatmentCodePostfix, String treatmentType, private void addTreatment(SamplePE sample, String treatmentCodePostfix, String treatmentType,
......
...@@ -77,7 +77,7 @@ public class AbundanceColumnDefinitionTest extends AssertJUnit ...@@ -77,7 +77,7 @@ public class AbundanceColumnDefinitionTest extends AssertJUnit
@Test @Test
public void testCompareTwoDefinitonsWithOneNumericalTreatment() public void testCompareTwoDefinitonsWithOneNumericalTreatment()
{ {
AbundanceColumnDefinition d1 = create("abc", treatment("pH", "7.5")); AbundanceColumnDefinition d1 = create("abc", treatment("pH", "7.5"), treatment("T", "yes"));
AbundanceColumnDefinition d2 = create("abc", treatment("pH", "9e-1")); AbundanceColumnDefinition d2 = create("abc", treatment("pH", "9e-1"));
assertEquals(true, d1.compareTo(d2) > 0); assertEquals(true, d1.compareTo(d2) > 0);
......
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