From c2d754f9d804cd27209796c2cf579fa390def0e8 Mon Sep 17 00:00:00 2001 From: ShvaykaD Date: Thu, 20 Dec 2018 16:48:47 +0200 Subject: [PATCH] refactoring getAttributesKvEntries method --- .../device/DeviceActorMessageProcessor.java | 84 +++++-------------- 1 file changed, 19 insertions(+), 65 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java b/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java index 6f66a77eb2..b250988369 100644 --- a/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java +++ b/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java @@ -78,7 +78,6 @@ import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.UUID; import java.util.function.Consumer; @@ -288,73 +287,36 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor { private ListenableFuture>> getAttributesKvEntries(GetAttributeRequestMsg request) { ListenableFuture> clientAttributesFuture; ListenableFuture> sharedAttributesFuture; - if (!clientIsPresent(request) && !sharedIsPresent(request)) { - clientAttributesFuture = findAllClientAttributes(); - sharedAttributesFuture = findAllSharedAttributes(); - } else if (clientIsPresent(request) && sharedIsPresent(request)) { - if (clientIsNotEmpty(request) && sharedIsNotEmpty(request)) { - clientAttributesFuture = findClientAttributes(request); - sharedAttributesFuture = findSharedAttributes(request); - } else { - clientAttributesFuture = findAllClientAttributes(); - sharedAttributesFuture = findAllSharedAttributes(); - } - } else if (clientIsPresent(request) && !sharedIsPresent(request)) { - if (clientIsNotEmpty(request)) { - clientAttributesFuture = findClientAttributes(request); - } else { - clientAttributesFuture = findAllClientAttributes(); - } - sharedAttributesFuture = Futures.immediateFuture(Collections.emptyList()); - } else { - if (sharedIsNotEmpty(request)) { - sharedAttributesFuture = findSharedAttributes(request); - } else { - sharedAttributesFuture = findAllSharedAttributes(); - } + if (listIsEmpty(request.getClientAttributeNamesList()) && listIsEmpty(request.getSharedAttributeNamesList())) { + clientAttributesFuture = findAllAttributesByScope(CLIENT_SCOPE); + sharedAttributesFuture = findAllAttributesByScope(SHARED_SCOPE); + } else if (!listIsEmpty(request.getClientAttributeNamesList()) && !listIsEmpty(request.getSharedAttributeNamesList())) { + clientAttributesFuture = findAttributesByScope(toSet(request.getClientAttributeNamesList()), CLIENT_SCOPE); + sharedAttributesFuture = findAttributesByScope(toSet(request.getSharedAttributeNamesList()), SHARED_SCOPE); + } else if (listIsEmpty(request.getClientAttributeNamesList()) && !listIsEmpty(request.getSharedAttributeNamesList())) { clientAttributesFuture = Futures.immediateFuture(Collections.emptyList()); + sharedAttributesFuture = findAttributesByScope(toSet(request.getSharedAttributeNamesList()), SHARED_SCOPE); + } else { + sharedAttributesFuture = Futures.immediateFuture(Collections.emptyList()); + clientAttributesFuture = findAttributesByScope(toSet(request.getClientAttributeNamesList()), CLIENT_SCOPE); } return Futures.allAsList(Arrays.asList(clientAttributesFuture, sharedAttributesFuture)); } - private ListenableFuture> findAllSharedAttributes() { - return systemContext.getAttributesService().findAll(tenantId, deviceId, SHARED_SCOPE); - } - - private ListenableFuture> findAllClientAttributes() { - return systemContext.getAttributesService().findAll(tenantId, deviceId, CLIENT_SCOPE); - } - - private ListenableFuture> findSharedAttributes(GetAttributeRequestMsg request) { - return systemContext.getAttributesService().find(tenantId, deviceId, SHARED_SCOPE, getSharedAttributesSet(request)); - } - - private ListenableFuture> findClientAttributes(GetAttributeRequestMsg request) { - return systemContext.getAttributesService().find(tenantId, deviceId, CLIENT_SCOPE, getClientAttributesSet(request)); - } - - private boolean clientIsNotEmpty(GetAttributeRequestMsg request) { - return !getClientAttributesSet(request).isEmpty(); - } - - private boolean sharedIsNotEmpty(GetAttributeRequestMsg request) { - return !getSharedAttributesSet(request).isEmpty(); + private ListenableFuture> findAllAttributesByScope(String scope) { + return systemContext.getAttributesService().findAll(tenantId, deviceId, scope); } - private Set getSharedAttributesSet(GetAttributeRequestMsg request) { - return toOptionalSet(request.getSharedAttributeNamesList()).get(); + private ListenableFuture> findAttributesByScope(Set attributesSet, String scope) { + return systemContext.getAttributesService().find(tenantId, deviceId, scope, attributesSet); } - private Set getClientAttributesSet(GetAttributeRequestMsg request) { - return toOptionalSet(request.getClientAttributeNamesList()).get(); + private Set toSet(List strings) { + return new HashSet<>(strings); } - private boolean sharedIsPresent(GetAttributeRequestMsg request) { - return toOptionalSet(request.getSharedAttributeNamesList()).isPresent(); - } - - private boolean clientIsPresent(GetAttributeRequestMsg request) { - return toOptionalSet(request.getClientAttributeNamesList()).isPresent(); + private boolean listIsEmpty(List strings) { + return strings == null || strings.isEmpty(); } private void handlePostAttributesRequest(ActorContext context, SessionInfoProto sessionInfo, PostAttributeMsg postAttributes) { @@ -603,14 +565,6 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor { return json; } - private Optional> toOptionalSet(List strings) { - if (strings == null || strings.isEmpty()) { - return Optional.empty(); - } else { - return Optional.of(new HashSet<>(strings)); - } - } - private void sendToTransport(GetAttributeResponseMsg responseMsg, SessionInfoProto sessionInfo) { DeviceActorToTransportMsg msg = DeviceActorToTransportMsg.newBuilder() .setSessionIdMSB(sessionInfo.getSessionIdMSB())