Daniel Erez has uploaded a new change for review.

Change subject: webadmin: fix client sorting for size columns
......................................................................

webadmin: fix client sorting for size columns

Currently, size columns are sorted using LexoNumericComparator,
which is fine for most cases except for '< 1 GB' value...
Hence, overridden 'makeSortable' method to compare the size
values numerically.

Screenshot: http://i.imgur.com/KfJjdq8.png

Change-Id: Iab8cdc171ff8f652ec0747212f6fd846cf95540e
Bug-Url: https://bugzilla.redhat.com/1133264
Signed-off-by: Daniel Erez <de...@redhat.com>
---
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractSizeColumn.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/DiskSizeColumn.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StorageSizeColumn.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewColumns.java
4 files changed, 31 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/57/31857/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractSizeColumn.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractSizeColumn.java
new file mode 100644
index 0000000..63160c1
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractSizeColumn.java
@@ -0,0 +1,23 @@
+package org.ovirt.engine.ui.common.widget.table.column;
+
+import java.util.Comparator;
+
+import com.google.gwt.text.shared.Renderer;
+
+public abstract class AbstractSizeColumn<T> extends RenderedTextColumn<T, 
Long> {
+
+    public AbstractSizeColumn(Renderer<Long> renderer) {
+        super(renderer);
+    }
+
+    @Override
+    public void makeSortable() {
+        makeSortable(new Comparator<T>() {
+            @Override
+            public int compare(T object1, T object2) {
+                return getRawValue(object1).compareTo(getRawValue(object2));
+            }
+        });
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/DiskSizeColumn.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/DiskSizeColumn.java
index f2c2442..16ee071 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/DiskSizeColumn.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/DiskSizeColumn.java
@@ -3,7 +3,7 @@
 import org.ovirt.engine.core.common.utils.SizeConverter;
 import org.ovirt.engine.ui.common.widget.renderer.DiskSizeRenderer;
 
-public abstract class DiskSizeColumn<T> extends RenderedTextColumn<T, Long> {
+public abstract class DiskSizeColumn<T> extends AbstractSizeColumn<T> {
 
     public DiskSizeColumn() {
         this(SizeConverter.SizeUnit.BYTES);
@@ -16,4 +16,5 @@
     public DiskSizeColumn(SizeConverter.SizeUnit diskSizeUnit, 
DiskSizeRenderer.Format format) {
         super(new DiskSizeRenderer<Long>(diskSizeUnit, format));
     }
+
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StorageSizeColumn.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StorageSizeColumn.java
index 2ad0adf..478e7b6 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StorageSizeColumn.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StorageSizeColumn.java
@@ -3,7 +3,7 @@
 import org.ovirt.engine.core.common.utils.SizeConverter;
 import org.ovirt.engine.ui.common.widget.renderer.DiskSizeRenderer;
 
-public abstract class StorageSizeColumn<T> extends RenderedTextColumn<T, Long> 
{
+public abstract class StorageSizeColumn<T> extends AbstractSizeColumn<T> {
 
     public StorageSizeColumn() {
         super(new DiskSizeRenderer<Long>(SizeConverter.SizeUnit.GB) {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewColumns.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewColumns.java
index abc2ec4..f79224a 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewColumns.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewColumns.java
@@ -206,7 +206,7 @@
             }
         };
 
-        return (DiskSizeColumn<Disk>) makeSortable(column, sortBy);
+        return makeSortable(column, sortBy);
     }
 
     public static final DiskSizeColumn<Disk> getActualSizeColumn(String 
sortBy) {
@@ -219,7 +219,7 @@
             }
         };
 
-        return (DiskSizeColumn<Disk>) makeSortable(column, sortBy);
+        return makeSortable(column, sortBy);
     }
 
     public static final TextColumnWithTooltip<Disk> getAllocationColumn(String 
sortBy) {
@@ -353,14 +353,14 @@
     };
 
     public static final DiskSizeColumn<Disk> getSnapshotSizeColumn(String 
sortBy) {
-        TextColumnWithTooltip<Disk> column = new DiskSizeColumn<Disk>() {
+        DiskSizeColumn<Disk> column = new DiskSizeColumn<Disk>() {
             @Override
             protected Long getRawValue(Disk object) {
                 return ((DiskImage) object).getActualSizeInBytes();
             }
         };
 
-        return (DiskSizeColumn<Disk>) makeSortable(column, sortBy);
+        return makeSortable(column, sortBy);
     }
 
     public static final TextColumnWithTooltip<Disk> 
getSnapshotDescriptionColumn(String sortBy) {
@@ -374,7 +374,7 @@
         return makeSortable(column, sortBy);
     }
 
-    public static <T> TextColumnWithTooltip<T> 
makeSortable(TextColumnWithTooltip<T> column, String sortBy) {
+    public static <C extends TextColumnWithTooltip<T>, T> C makeSortable(C 
column, String sortBy) {
         if (sortBy == null ) {
             // Client sorting
             column.makeSortable();


-- 
To view, visit http://gerrit.ovirt.org/31857
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iab8cdc171ff8f652ec0747212f6fd846cf95540e
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Daniel Erez <de...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to