thingsboard-aplcache

Merge pull request #1458 from vparomskiy/master skip JPA

2/6/2019 12:46:10 PM

Details

diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvEntity.java
index d5a0968..873f8e8 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvEntity.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvEntity.java
@@ -62,49 +62,53 @@ public final class TsKvEntity implements ToData<TsKvEntry> {
     }
 
     public TsKvEntity(Long longValue, Double doubleValue, Long longCountValue, Long doubleCountValue, String aggType) {
-        switch (aggType) {
-            case AVG:
-                double sum = 0.0;
-                if (longValue != null) {
-                    sum += longValue;
-                }
-                if (doubleValue != null) {
-                    sum += doubleValue;
-                }
-                long totalCount = longCountValue + doubleCountValue;
-                if (totalCount > 0) {
-                    this.doubleValue = sum / (longCountValue + doubleCountValue);
-                } else {
-                    this.doubleValue = 0.0;
-                }
-                break;
-            case SUM:
-                if (doubleCountValue > 0) {
-                    this.doubleValue = doubleValue + (longValue != null ? longValue.doubleValue() : 0.0);
-                } else {
-                    this.longValue = longValue;
-                }
-                break;
-            case MIN:
-            case MAX:
-                if (longCountValue > 0 && doubleCountValue > 0) {
-                    this.doubleValue = MAX.equals(aggType) ? Math.max(doubleValue, longValue.doubleValue()) : Math.min(doubleValue, longValue.doubleValue());
-                } else if (doubleCountValue > 0) {
-                    this.doubleValue = doubleValue;
-                } else if (longCountValue > 0) {
-                    this.longValue = longValue;
-                }
-                break;
+        if(!isAllNull(longValue, doubleValue, longCountValue, doubleCountValue)) {
+            switch (aggType) {
+                case AVG:
+                    double sum = 0.0;
+                    if (longValue != null) {
+                        sum += longValue;
+                    }
+                    if (doubleValue != null) {
+                        sum += doubleValue;
+                    }
+                    long totalCount = longCountValue + doubleCountValue;
+                    if (totalCount > 0) {
+                        this.doubleValue = sum / (longCountValue + doubleCountValue);
+                    } else {
+                        this.doubleValue = 0.0;
+                    }
+                    break;
+                case SUM:
+                    if (doubleCountValue > 0) {
+                        this.doubleValue = doubleValue + (longValue != null ? longValue.doubleValue() : 0.0);
+                    } else {
+                        this.longValue = longValue;
+                    }
+                    break;
+                case MIN:
+                case MAX:
+                    if (longCountValue > 0 && doubleCountValue > 0) {
+                        this.doubleValue = MAX.equals(aggType) ? Math.max(doubleValue, longValue.doubleValue()) : Math.min(doubleValue, longValue.doubleValue());
+                    } else if (doubleCountValue > 0) {
+                        this.doubleValue = doubleValue;
+                    } else if (longCountValue > 0) {
+                        this.longValue = longValue;
+                    }
+                    break;
+            }
         }
     }
 
     public TsKvEntity(Long booleanValueCount, Long strValueCount, Long longValueCount, Long doubleValueCount) {
-        if (booleanValueCount != 0) {
-            this.longValue = booleanValueCount;
-        } else if (strValueCount != 0) {
-            this.longValue = strValueCount;
-        } else {
-            this.longValue = longValueCount + doubleValueCount;
+        if(!isAllNull(booleanValueCount, strValueCount, longValueCount, doubleValueCount)) {
+            if (booleanValueCount != 0) {
+                this.longValue = booleanValueCount;
+            } else if (strValueCount != 0) {
+                this.longValue = strValueCount;
+            } else {
+                this.longValue = longValueCount + doubleValueCount;
+            }
         }
     }
 
@@ -155,4 +159,13 @@ public final class TsKvEntity implements ToData<TsKvEntry> {
     public boolean isNotEmpty() {
         return strValue != null || longValue != null || doubleValue != null || booleanValue != null;
     }
+
+    private static boolean isAllNull(Object... args) {
+        for (Object arg : args) {
+            if(arg != null) {
+                return false;
+            }
+        }
+        return true;
+    }
 }