From d03cabc5d17c85140d02bdd27ec772d5247c8ed6 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Thu, 6 Dec 2012 16:02:07 +0000
Subject: [PATCH] SP-427, BIS-274: New behavior implemented and tested.

SVN: 27881
---
 .../heatmaps/NumberHeatmapRenderer.java       | 21 +++++++++++++++----
 .../heatmaps/NumberHeatmapRendererTest.java   | 10 +++++----
 2 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/NumberHeatmapRenderer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/NumberHeatmapRenderer.java
index 3b0564d0fec..ec562e5b823 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/NumberHeatmapRenderer.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/NumberHeatmapRenderer.java
@@ -15,6 +15,9 @@ import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.d
  */
 class NumberHeatmapRenderer implements IHeatmapRenderer<Float>
 {
+    static final String LESS_THAN_EQUAL = "\u2264";
+    static final String GREATER_THAN_EQUAL = "\u2265";
+    
     private final float step;
 
     private final List<Color> colors;
@@ -50,13 +53,23 @@ class NumberHeatmapRenderer implements IHeatmapRenderer<Float>
         }
         if (step > 0)
         {
-            scaleTop = round(Math.max(until, minMaxRange.getMax()));
-            scaleBottom = round(Math.min(from, minMaxRange.getMin()));
+            scaleTop = createScaleEndLabel(until, minMaxRange.getMax(), minMaxRange.getMin());
+            scaleBottom = createScaleEndLabel(from, minMaxRange.getMin(), minMaxRange.getMax());
         } else
         {
-            scaleTop = round(Math.min(until, minMaxRange.getMin()));
-            scaleBottom = round(Math.max(from, minMaxRange.getMax()));
+            scaleTop = createScaleEndLabel(until, minMaxRange.getMin(), minMaxRange.getMax());
+            scaleBottom = createScaleEndLabel(from, minMaxRange.getMax(), minMaxRange.getMin());
+        }
+    }
+    
+    private String createScaleEndLabel(float scaleEnd, float dataEnd, float otherDataEnd)
+    {
+        String scaleNumber = round(scaleEnd);
+        if ((dataEnd - scaleEnd) * (scaleEnd - otherDataEnd) > 0)
+        {
+            scaleNumber = (scaleEnd < dataEnd ? GREATER_THAN_EQUAL : LESS_THAN_EQUAL) + " " + scaleNumber;
         }
+        return scaleNumber;
     }
 
     @Override
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/NumberHeatmapRendererTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/NumberHeatmapRendererTest.java
index 7ad61ce28eb..85d2c937818 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/NumberHeatmapRendererTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/NumberHeatmapRendererTest.java
@@ -16,6 +16,8 @@
 
 package ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.heatmaps;
 
+import static ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.heatmaps.NumberHeatmapRenderer.GREATER_THAN_EQUAL;
+import static ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.heatmaps.NumberHeatmapRenderer.LESS_THAN_EQUAL;
 import static org.testng.AssertJUnit.assertEquals;
 
 import java.util.Arrays;
@@ -173,8 +175,8 @@ public class NumberHeatmapRendererTest
         String firstLabel = renderer.tryGetFirstLabel();
         List<HeatmapScaleElement> scale = renderer.calculateScale();
 
-        assertEquals("[3.0:#111, 2.0:#222, 0.0:#333]", scale.toString());
-        assertEquals("5.0", firstLabel);
+        assertEquals("[3.0:#111, 2.0:#222, " + LESS_THAN_EQUAL + " 1.0:#333]", scale.toString());
+        assertEquals(GREATER_THAN_EQUAL + " 4.0", firstLabel);
     }
     
     @Test
@@ -203,8 +205,8 @@ public class NumberHeatmapRendererTest
         String firstLabel = renderer.tryGetFirstLabel();
         List<HeatmapScaleElement> scale = renderer.calculateScale();
         
-        assertEquals("[2.0:#111, 3.0:#222, 5.0:#333]", scale.toString());
-        assertEquals("0.0", firstLabel);
+        assertEquals("[2.0:#111, 3.0:#222, " + GREATER_THAN_EQUAL + " 4.0:#333" + "]", scale.toString());
+        assertEquals(LESS_THAN_EQUAL + " 1.0", firstLabel);
     }
     
     @Test
-- 
GitLab