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

Reply via email to