Browse Source

skip JPA TsKVEntry initialization if no data found

pull/1458/head
vparomskiy 8 years ago
parent
commit
178db50d32
  1. 91
      dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvEntity.java

91
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) { public TsKvEntity(Long longValue, Double doubleValue, Long longCountValue, Long doubleCountValue, String aggType) {
switch (aggType) { if(!isAllNull(longValue, doubleValue, longCountValue, doubleCountValue)) {
case AVG: switch (aggType) {
double sum = 0.0; case AVG:
if (longValue != null) { double sum = 0.0;
sum += longValue; if (longValue != null) {
} sum += longValue;
if (doubleValue != null) { }
sum += doubleValue; if (doubleValue != null) {
} sum += doubleValue;
long totalCount = longCountValue + doubleCountValue; }
if (totalCount > 0) { long totalCount = longCountValue + doubleCountValue;
this.doubleValue = sum / (longCountValue + doubleCountValue); if (totalCount > 0) {
} else { this.doubleValue = sum / (longCountValue + doubleCountValue);
this.doubleValue = 0.0; } else {
} this.doubleValue = 0.0;
break; }
case SUM: break;
if (doubleCountValue > 0) { case SUM:
this.doubleValue = doubleValue + (longValue != null ? longValue.doubleValue() : 0.0); if (doubleCountValue > 0) {
} else { this.doubleValue = doubleValue + (longValue != null ? longValue.doubleValue() : 0.0);
this.longValue = longValue; } else {
} this.longValue = longValue;
break; }
case MIN: break;
case MAX: case MIN:
if (longCountValue > 0 && doubleCountValue > 0) { case MAX:
this.doubleValue = MAX.equals(aggType) ? Math.max(doubleValue, longValue.doubleValue()) : Math.min(doubleValue, longValue.doubleValue()); if (longCountValue > 0 && doubleCountValue > 0) {
} else if (doubleCountValue > 0) { this.doubleValue = MAX.equals(aggType) ? Math.max(doubleValue, longValue.doubleValue()) : Math.min(doubleValue, longValue.doubleValue());
this.doubleValue = doubleValue; } else if (doubleCountValue > 0) {
} else if (longCountValue > 0) { this.doubleValue = doubleValue;
this.longValue = longValue; } else if (longCountValue > 0) {
} this.longValue = longValue;
break; }
break;
}
} }
} }
public TsKvEntity(Long booleanValueCount, Long strValueCount, Long longValueCount, Long doubleValueCount) { public TsKvEntity(Long booleanValueCount, Long strValueCount, Long longValueCount, Long doubleValueCount) {
if (booleanValueCount != 0) { if(!isAllNull(booleanValueCount, strValueCount, longValueCount, doubleValueCount)) {
this.longValue = booleanValueCount; if (booleanValueCount != 0) {
} else if (strValueCount != 0) { this.longValue = booleanValueCount;
this.longValue = strValueCount; } else if (strValueCount != 0) {
} else { this.longValue = strValueCount;
this.longValue = longValueCount + doubleValueCount; } else {
this.longValue = longValueCount + doubleValueCount;
}
} }
} }
@ -155,4 +159,13 @@ public final class TsKvEntity implements ToData<TsKvEntry> {
public boolean isNotEmpty() { public boolean isNotEmpty() {
return strValue != null || longValue != null || doubleValue != null || booleanValue != null; 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;
}
} }

Loading…
Cancel
Save