Sergey Gotliv has uploaded a new change for review. Change subject: webadmin: Display more accurate size of ISO files ......................................................................
webadmin: Display more accurate size of ISO files Till now DiskSizeRenderer which is used to render all image/disk/file sizes had 3 limitations: 1. Size appeared only in GB. 2. All numbers were integers. 3. Size smaller than 1GB appeared as '<1GB' >From now, it supports MB, KB, and numbers with floating point. Using this new capability when displaing sizes of ISO files and floppies under Storage -> Images. Change-Id: I95961fde2256a44b8474d8f41562bc0e33b0ad4a Bug-Url: https://bugzilla.redhat.com/1005889 Signed-off-by: Sergey Gotliv <sgot...@redhat.com> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/renderer/DiskSizeRenderer.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/DiskSizeColumn.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageIsoView.java 3 files changed, 62 insertions(+), 13 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/50/19550/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/renderer/DiskSizeRenderer.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/renderer/DiskSizeRenderer.java index 57cc623..a2aa3dc 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/renderer/DiskSizeRenderer.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/renderer/DiskSizeRenderer.java @@ -1,6 +1,7 @@ package org.ovirt.engine.ui.common.widget.renderer; import com.google.gwt.core.client.GWT; +import com.google.gwt.i18n.client.NumberFormat; import com.google.gwt.text.shared.AbstractRenderer; import org.ovirt.engine.ui.common.CommonApplicationConstants; @@ -11,16 +12,27 @@ GIGABYTE; } + public enum Format { + DEFAULT, + FORMATTED + } + private final DiskSizeUnit unit; + private final Format format; private static final CommonApplicationConstants CONSTANTS = GWT.create(CommonApplicationConstants.class); public DiskSizeRenderer(DiskSizeUnit unit) { + this(unit, Format.DEFAULT); + } + + public DiskSizeRenderer(DiskSizeUnit unit, Format format) { if (unit == null) { throw new IllegalArgumentException("The unit can not be null!"); //$NON-NLS-1$ } this.unit = unit; + this.format = format; } protected boolean isUnavailable(T size) { @@ -33,18 +45,49 @@ return CONSTANTS.unAvailablePropertyLabel(); } - long sizeInGB = -1; + double sizeInGB = getSizeInGigabytes(size); - switch (unit) { - case BYTE: - sizeInGB = (long) (size.longValue() / Math.pow(1024, 3)); - break; - case GIGABYTE: - sizeInGB = size.longValue(); - break; + if (format == Format.DEFAULT) { + return (sizeInGB >= 1) ? Double.valueOf(sizeInGB).longValue() + " GB" : "< 1 GB"; //$NON-NLS-1$ //$NON-NLS-2$ + } else { + return format(sizeInGB); } - - return sizeInGB >= 1 ? sizeInGB + " GB" : "< 1 GB"; //$NON-NLS-1$ //$NON-NLS-2$ } + private double getSizeInGigabytes(T size) { + double sizeInGB = -1; + + switch (unit) { + case BYTE: + sizeInGB = size.doubleValue() / Math.pow(1024, 3); + break; + case GIGABYTE: + sizeInGB = size.doubleValue(); + break; + } + + return sizeInGB; + } + + private String format(double sizeInGB) { + if (sizeInGB == 0) { + // sizeInGB = 0 means that Engine working with old VDSM which doesn't return the correct size, so it + // should display the size as 'less than 1 GB' for backward compatibility + return "< 1 GB"; //$NON-NLS-1$ + } + + NumberFormat fmt = NumberFormat.getFormat("####.##"); //$NON-NLS-1$ + if (sizeInGB >= 1) { + return fmt.format(sizeInGB) + " GB"; //$NON-NLS-1$ + } + + fmt = NumberFormat.getFormat("####.#"); //$NON-NLS-1$ + double sizeInMB = sizeInGB * 1024; + if (sizeInMB >= 1) { + return fmt.format(sizeInMB) + " MB"; //$NON-NLS-1$ + } + + double sizeInKB = sizeInMB * 1024; + return fmt.format(sizeInKB) + " KB"; //$NON-NLS-1$ + } } 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 34ab25c..68d729e 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 @@ -2,15 +2,19 @@ import org.ovirt.engine.ui.common.widget.renderer.DiskSizeRenderer; import org.ovirt.engine.ui.common.widget.renderer.DiskSizeRenderer.DiskSizeUnit; +import org.ovirt.engine.ui.common.widget.renderer.DiskSizeRenderer.Format; public abstract class DiskSizeColumn<T> extends RenderedTextColumn<T, Long> { public DiskSizeColumn() { - super(new DiskSizeRenderer<Long>(DiskSizeUnit.BYTE)); + this(DiskSizeUnit.BYTE); } public DiskSizeColumn(DiskSizeUnit diskSizeUnit) { - super(new DiskSizeRenderer<Long>(diskSizeUnit)); + this(diskSizeUnit, Format.DEFAULT); } + public DiskSizeColumn(DiskSizeUnit diskSizeUnit, Format format) { + super(new DiskSizeRenderer<Long>(diskSizeUnit, format)); + } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageIsoView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageIsoView.java index 3e78a9f..6723507 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageIsoView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageIsoView.java @@ -3,6 +3,8 @@ import org.ovirt.engine.core.common.businessentities.RepoImage; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.widget.renderer.DiskSizeRenderer.DiskSizeUnit; +import org.ovirt.engine.ui.common.widget.renderer.DiskSizeRenderer.Format; import org.ovirt.engine.ui.common.widget.table.column.DiskSizeColumn; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.uicommonweb.UICommand; @@ -46,7 +48,7 @@ }; getTable().addColumn(typeColumn, constants.typeIso(), "200px"); //$NON-NLS-1$ - TextColumnWithTooltip<RepoImage> sizeColumn = new DiskSizeColumn<RepoImage>() { + TextColumnWithTooltip<RepoImage> sizeColumn = new DiskSizeColumn<RepoImage>(DiskSizeUnit.BYTE, Format.FORMATTED) { @Override protected Long getRawValue(RepoImage object) { return object.getSize(); -- To view, visit http://gerrit.ovirt.org/19550 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I95961fde2256a44b8474d8f41562bc0e33b0ad4a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sergey Gotliv <sgot...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches