Commit 2ee3a855d177d141ce0ad432530322b772fc3b11

Authored by Igor Kulikov
1 parent e97edd61

Check for blank keys before fetching latest for entity view

@@ -63,6 +63,7 @@ import java.util.List; @@ -63,6 +63,7 @@ import java.util.List;
63 import java.util.concurrent.ExecutionException; 63 import java.util.concurrent.ExecutionException;
64 import java.util.stream.Collectors; 64 import java.util.stream.Collectors;
65 65
  66 +import static org.apache.commons.lang.StringUtils.isBlank;
66 import static org.thingsboard.server.controller.CustomerController.CUSTOMER_ID; 67 import static org.thingsboard.server.controller.CustomerController.CUSTOMER_ID;
67 68
68 /** 69 /**
@@ -253,8 +254,12 @@ public class EntityViewController extends BaseController { @@ -253,8 +254,12 @@ public class EntityViewController extends BaseController {
253 keysFuture = Futures.immediateFuture(keys); 254 keysFuture = Futures.immediateFuture(keys);
254 } 255 }
255 ListenableFuture<List<TsKvEntry>> latestFuture = Futures.transformAsync(keysFuture, fetchKeys -> { 256 ListenableFuture<List<TsKvEntry>> latestFuture = Futures.transformAsync(keysFuture, fetchKeys -> {
256 - List<ReadTsKvQuery> queries = fetchKeys.stream().map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList());  
257 - return tsService.findAll(user.getTenantId(), entityView.getEntityId(), queries); 257 + List<ReadTsKvQuery> queries = fetchKeys.stream().filter(key -> !isBlank(key)).map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList());
  258 + if (!queries.isEmpty()) {
  259 + return tsService.findAll(user.getTenantId(), entityView.getEntityId(), queries);
  260 + } else {
  261 + return Futures.immediateFuture(null);
  262 + }
258 }, MoreExecutors.directExecutor()); 263 }, MoreExecutors.directExecutor());
259 return Futures.transform(latestFuture, latestValues -> { 264 return Futures.transform(latestFuture, latestValues -> {
260 if (latestValues != null && !latestValues.isEmpty()) { 265 if (latestValues != null && !latestValues.isEmpty()) {
@@ -48,6 +48,8 @@ import java.util.List; @@ -48,6 +48,8 @@ import java.util.List;
48 import java.util.concurrent.ExecutionException; 48 import java.util.concurrent.ExecutionException;
49 import java.util.stream.Collectors; 49 import java.util.stream.Collectors;
50 50
  51 +import static org.apache.commons.lang.StringUtils.isBlank;
  52 +
51 @Service 53 @Service
52 @Profile("install") 54 @Profile("install")
53 @Slf4j 55 @Slf4j
@@ -158,8 +160,12 @@ public class DefaultDataUpdateService implements DataUpdateService { @@ -158,8 +160,12 @@ public class DefaultDataUpdateService implements DataUpdateService {
158 keysFuture = Futures.immediateFuture(keys); 160 keysFuture = Futures.immediateFuture(keys);
159 } 161 }
160 ListenableFuture<List<TsKvEntry>> latestFuture = Futures.transformAsync(keysFuture, fetchKeys -> { 162 ListenableFuture<List<TsKvEntry>> latestFuture = Futures.transformAsync(keysFuture, fetchKeys -> {
161 - List<ReadTsKvQuery> queries = fetchKeys.stream().map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList());  
162 - return tsService.findAll(TenantId.SYS_TENANT_ID, entityView.getEntityId(), queries); 163 + List<ReadTsKvQuery> queries = fetchKeys.stream().filter(key -> !isBlank(key)).map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList());
  164 + if (!queries.isEmpty()) {
  165 + return tsService.findAll(TenantId.SYS_TENANT_ID, entityView.getEntityId(), queries);
  166 + } else {
  167 + return Futures.immediateFuture(null);
  168 + }
163 }, MoreExecutors.directExecutor()); 169 }, MoreExecutors.directExecutor());
164 return Futures.transformAsync(latestFuture, latestValues -> { 170 return Futures.transformAsync(latestFuture, latestValues -> {
165 if (latestValues != null && !latestValues.isEmpty()) { 171 if (latestValues != null && !latestValues.isEmpty()) {