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