Browse Source

Check for blank keys before fetching latest for entity view

pull/3246/head
Igor Kulikov 6 years ago
parent
commit
2ee3a855d1
  1. 9
      application/src/main/java/org/thingsboard/server/controller/EntityViewController.java
  2. 10
      application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java

9
application/src/main/java/org/thingsboard/server/controller/EntityViewController.java

@ -63,6 +63,7 @@ import java.util.List;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static org.apache.commons.lang.StringUtils.isBlank;
import static org.thingsboard.server.controller.CustomerController.CUSTOMER_ID; import static org.thingsboard.server.controller.CustomerController.CUSTOMER_ID;
/** /**
@ -253,8 +254,12 @@ public class EntityViewController extends BaseController {
keysFuture = Futures.immediateFuture(keys); keysFuture = Futures.immediateFuture(keys);
} }
ListenableFuture<List<TsKvEntry>> latestFuture = Futures.transformAsync(keysFuture, fetchKeys -> { ListenableFuture<List<TsKvEntry>> latestFuture = Futures.transformAsync(keysFuture, fetchKeys -> {
List<ReadTsKvQuery> queries = fetchKeys.stream().map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList()); List<ReadTsKvQuery> queries = fetchKeys.stream().filter(key -> !isBlank(key)).map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList());
return tsService.findAll(user.getTenantId(), entityView.getEntityId(), queries); if (!queries.isEmpty()) {
return tsService.findAll(user.getTenantId(), entityView.getEntityId(), queries);
} else {
return Futures.immediateFuture(null);
}
}, MoreExecutors.directExecutor()); }, MoreExecutors.directExecutor());
return Futures.transform(latestFuture, latestValues -> { return Futures.transform(latestFuture, latestValues -> {
if (latestValues != null && !latestValues.isEmpty()) { if (latestValues != null && !latestValues.isEmpty()) {

10
application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java

@ -48,6 +48,8 @@ import java.util.List;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static org.apache.commons.lang.StringUtils.isBlank;
@Service @Service
@Profile("install") @Profile("install")
@Slf4j @Slf4j
@ -158,8 +160,12 @@ public class DefaultDataUpdateService implements DataUpdateService {
keysFuture = Futures.immediateFuture(keys); keysFuture = Futures.immediateFuture(keys);
} }
ListenableFuture<List<TsKvEntry>> latestFuture = Futures.transformAsync(keysFuture, fetchKeys -> { ListenableFuture<List<TsKvEntry>> latestFuture = Futures.transformAsync(keysFuture, fetchKeys -> {
List<ReadTsKvQuery> queries = fetchKeys.stream().map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList()); List<ReadTsKvQuery> queries = fetchKeys.stream().filter(key -> !isBlank(key)).map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList());
return tsService.findAll(TenantId.SYS_TENANT_ID, entityView.getEntityId(), queries); if (!queries.isEmpty()) {
return tsService.findAll(TenantId.SYS_TENANT_ID, entityView.getEntityId(), queries);
} else {
return Futures.immediateFuture(null);
}
}, MoreExecutors.directExecutor()); }, MoreExecutors.directExecutor());
return Futures.transformAsync(latestFuture, latestValues -> { return Futures.transformAsync(latestFuture, latestValues -> {
if (latestValues != null && !latestValues.isEmpty()) { if (latestValues != null && !latestValues.isEmpty()) {

Loading…
Cancel
Save