anmolbabu has uploaded a new change for review.

Change subject: engine : Math operations on SizeConverter converted sizes
......................................................................

engine : Math operations on SizeConverter converted sizes

Facilitate Math operations on SizeConverter converted sizes

Change-Id: Ie9fd4e7b7b9411cf17d66037e6424a979c2d037f
Signed-off-by: Anmol Babu <[email protected]>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/SizeConverter.java
1 file changed, 46 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/15/36315/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/SizeConverter.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/SizeConverter.java
index d081064..00194c0 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/SizeConverter.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/SizeConverter.java
@@ -12,6 +12,7 @@
     public static final long BYTES_IN_KB = 1024L;
     public static final long BYTES_IN_MB = 1024L * 1024L;
     public static final long BYTES_IN_GB = 1024L * 1024L * 1024L;
+    public static final long BYTES_IN_TB = 1024L * 1024L * 1024L * 1024L;
 
     public SizeConverter() {
 
@@ -49,14 +50,22 @@
         }
 
         public SizeUnit getUnit(long weight) {
-            return (SizeUnit) weightToUnit.get((int) weight).getSecond();
+            return weightToUnit.get((int) weight).getSecond();
+        }
+
+        public static SizeUnit getMaxHandledUnit() {
+            return weightToUnit.get(weightToUnit.size() -1).getSecond();
+        }
+
+        public static SizeUnit getMinHandledUnit() {
+            return weightToUnit.get(0).getSecond();
         }
     };
 
     public static Number convert(long size, SizeUnit fromUnit, SizeUnit 
toUnit) {
         long fromType = fromUnit.getUnitWeight();
         long toType = toUnit.getUnitWeight();
-        return (size) * ((Math.pow(CONVERT_FACTOR, fromType)) / 
(Math.pow(CONVERT_FACTOR, toType)));
+        return size * (Math.pow(CONVERT_FACTOR, fromType) / 
Math.pow(CONVERT_FACTOR, toType));
     }
 
     public static Pair<SizeUnit, Double> autoConvert(long size, SizeUnit 
inUnit) {
@@ -68,4 +77,39 @@
         }
         return new Pair<SizeConverter.SizeUnit, Double>(SizeUnit.BYTES, 
(double)size);
     }
+
+    @SafeVarargs
+    public static SizeUnit leastUnitInList(Pair<SizeUnit, Double>... operands) 
{
+        SizeUnit leastUnit = SizeUnit.getMaxHandledUnit();
+        for(Pair<SizeUnit, Double> operand : operands) {
+            if(operand.getFirst().getUnitWeight() < leastUnit.getUnitWeight()) 
{
+                leastUnit = operand.getFirst();
+            }
+        }
+        return leastUnit;
+    }
+
+    @SafeVarargs
+    public static SizeUnit maxUnitInList(Pair<SizeUnit, Double>... operands) {
+        SizeUnit maxUnit = SizeUnit.getMinHandledUnit();
+        for(Pair<SizeUnit, Double> operand : operands) {
+            if(operand.getFirst().getUnitWeight() > maxUnit.getUnitWeight()) {
+                maxUnit = operand.getFirst();
+            }
+        }
+        return maxUnit;
+    }
+
+    @SafeVarargs
+    public static List<Pair<SizeUnit, Double>> 
getMathOperationSafeOperands(Pair<SizeUnit, Double>... operands) {
+        List<Pair<SizeUnit, Double>>  operatoinReadyOperands = new 
ArrayList<>();
+        SizeUnit finalUnit = leastUnitInList(operands);
+        for(Pair<SizeUnit, Double> operand : operands) {
+            if(operand.getFirst() != finalUnit) {
+                operand.setSecond(convert(operand.getSecond().longValue(), 
operand.getFirst(), finalUnit).doubleValue());
+                operand.setFirst(finalUnit);
+            }
+        }
+        return operatoinReadyOperands;
+    }
 }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie9fd4e7b7b9411cf17d66037e6424a979c2d037f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: anmolbabu <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to