thingsboard-aplcache

Code review fixes

9/12/2018 3:08:30 AM

Details

diff --git a/application/src/main/java/org/thingsboard/server/service/telemetry/DefaultTelemetrySubscriptionService.java b/application/src/main/java/org/thingsboard/server/service/telemetry/DefaultTelemetrySubscriptionService.java
index 35455b9..bdf8e74 100644
--- a/application/src/main/java/org/thingsboard/server/service/telemetry/DefaultTelemetrySubscriptionService.java
+++ b/application/src/main/java/org/thingsboard/server/service/telemetry/DefaultTelemetrySubscriptionService.java
@@ -33,11 +33,8 @@ import org.thingsboard.server.common.data.EntityView;
 import org.thingsboard.server.common.data.id.DeviceId;
 import org.thingsboard.server.common.data.id.EntityId;
 import org.thingsboard.server.common.data.id.EntityIdFactory;
-//<<<<<<< HEAD
 import org.thingsboard.server.common.data.id.EntityViewId;
-//=======
 import org.thingsboard.server.common.data.id.TenantId;
-//>>>>>>> d909192071880b7af2137333142bc62ece369ec1
 import org.thingsboard.server.common.data.kv.AttributeKvEntry;
 import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry;
 import org.thingsboard.server.common.data.kv.BaseReadTsKvQuery;
@@ -108,9 +105,6 @@ public class DefaultTelemetrySubscriptionService implements TelemetrySubscriptio
     @Autowired
     private ClusterRpcService rpcService;
 
-    /*@Autowired
-    private EntityViewService entityViewService;*/
-
     @Autowired
     @Lazy
     private DeviceStateService stateService;
@@ -143,17 +137,15 @@ public class DefaultTelemetrySubscriptionService implements TelemetrySubscriptio
 
     @Override
     public void addLocalWsSubscription(String sessionId, EntityId entityId, SubscriptionState sub) {
-        String familyName = entityId.getEntityType().equals(EntityType.ENTITY_VIEW)
-                ? ModelConstants.ENTITY_VIEW_FAMILY_NAME : ModelConstants.DEVICE_FAMILY_NAME;
         Optional<ServerAddress> server = routingService.resolveById(entityId);
         Subscription subscription;
         if (server.isPresent()) {
             ServerAddress address = server.get();
-            log.trace("[{}] Forwarding subscription [{}] for " + familyName + " [{}] to [{}]", sessionId, sub.getSubscriptionId(), entityId, address);
+            log.trace("[{}] Forwarding subscription [{}] for [{}] entity [{}] to [{}]", sessionId, sub.getSubscriptionId(), entityId.getEntityType().name(), entityId, address);
             subscription = new Subscription(sub, true, address);
             tellNewSubscription(address, sessionId, subscription);
         } else {
-            log.trace("[{}] Registering local subscription [{}] for " + familyName + " [{}]", sessionId, sub.getSubscriptionId(), entityId);
+            log.trace("[{}] Registering local subscription [{}] for [{}] entity [{}]", sessionId, sub.getSubscriptionId(), entityId.getEntityType().name(), entityId);
             subscription = new Subscription(sub, true);
         }
         registerSubscription(sessionId, entityId, subscription);
diff --git a/application/src/main/java/org/thingsboard/server/service/telemetry/sub/Subscription.java b/application/src/main/java/org/thingsboard/server/service/telemetry/sub/Subscription.java
index 08440e4..47c80e9 100644
--- a/application/src/main/java/org/thingsboard/server/service/telemetry/sub/Subscription.java
+++ b/application/src/main/java/org/thingsboard/server/service/telemetry/sub/Subscription.java
@@ -34,7 +34,7 @@ public class Subscription {
     private long endTime;
 
     public Subscription(SubscriptionState sub, boolean local) {
-        this(sub, local, null, 0L, 0L);
+        this(sub, local, null);
     }
 
     public Subscription(SubscriptionState sub, boolean local, ServerAddress server) {
diff --git a/application/src/test/java/org/thingsboard/server/controller/ControllerSqlTestSuite.java b/application/src/test/java/org/thingsboard/server/controller/ControllerSqlTestSuite.java
index a9e94e9..c8a5da8 100644
--- a/application/src/test/java/org/thingsboard/server/controller/ControllerSqlTestSuite.java
+++ b/application/src/test/java/org/thingsboard/server/controller/ControllerSqlTestSuite.java
@@ -24,7 +24,7 @@ import java.util.Arrays;
 
 @RunWith(ClasspathSuite.class)
 @ClasspathSuite.ClassnameFilters({
-        "org.thingsboard.server.controller.sql.EntityViewControllerSqlTest",
+        "org.thingsboard.server.controller.sql.*Test",
         })
 public class ControllerSqlTestSuite {
 
diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/EntityView.java b/common/data/src/main/java/org/thingsboard/server/common/data/EntityView.java
index d7ab6e3..49dd209 100644
--- a/common/data/src/main/java/org/thingsboard/server/common/data/EntityView.java
+++ b/common/data/src/main/java/org/thingsboard/server/common/data/EntityView.java
@@ -1,4 +1,4 @@
- /**
+/**
  * Copyright © 2016-2018 The Thingsboard Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/kv/BaseReadTsKvQuery.java b/common/data/src/main/java/org/thingsboard/server/common/data/kv/BaseReadTsKvQuery.java
index 739586e..3e4e8ef 100644
--- a/common/data/src/main/java/org/thingsboard/server/common/data/kv/BaseReadTsKvQuery.java
+++ b/common/data/src/main/java/org/thingsboard/server/common/data/kv/BaseReadTsKvQuery.java
@@ -43,7 +43,7 @@ public class BaseReadTsKvQuery extends BaseTsKvQuery implements ReadTsKvQuery {
     }
 
     public BaseReadTsKvQuery(String key, long startTs, long endTs, int limit, String orderBy) {
-        this(key, startTs, endTs, endTs - startTs, limit, Aggregation.AVG, orderBy);
+        this(key, startTs, endTs, endTs - startTs, limit, Aggregation.NONE, orderBy);
     }
 
 }
diff --git a/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewServiceImpl.java
index 5646ac9..d2a902b 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewServiceImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewServiceImpl.java
@@ -89,7 +89,7 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti
     @Autowired
     private CacheManager cacheManager;
 
-    @Cacheable(cacheNames = ENTITY_VIEW_CACHE)
+//    @Cacheable(cacheNames = ENTITY_VIEW_CACHE)
     @Override
     public EntityView findEntityViewById(EntityViewId entityViewId) {
         log.trace("Executing findEntityViewById [{}]", entityViewId);
@@ -105,7 +105,7 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti
                 .orElse(null);
     }
 
-    @CachePut(cacheNames = ENTITY_VIEW_CACHE)
+//    @CachePut(cacheNames = ENTITY_VIEW_CACHE)
     @Override
     public EntityView saveEntityView(EntityView entityView) {
         log.trace("Executing save entity view [{}]", entityView);
@@ -130,14 +130,14 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti
     @Override
     public void deleteEntityView(EntityViewId entityViewId) {
         log.trace("Executing deleteEntityView [{}]", entityViewId);
-        Cache cache = cacheManager.getCache(ENTITY_VIEW_CACHE);
+//        Cache cache = cacheManager.getCache(ENTITY_VIEW_CACHE);
         validateId(entityViewId, INCORRECT_ENTITY_VIEW_ID + entityViewId);
         deleteEntityRelations(entityViewId);
         EntityView entityView = entityViewDao.findById(entityViewId.getId());
-        List<Object> list = new ArrayList<>();
-        list.add(entityView.getTenantId());
-        list.add(entityView.getName());
-        cache.evict(list);
+//        List<Object> list = new ArrayList<>();
+//        list.add(entityView.getTenantId());
+//        list.add(entityView.getName());
+//        cache.evict(list);
         entityViewDao.removeById(entityViewId.getId());
     }
 
@@ -150,7 +150,7 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti
         return new TextPageData<>(entityViews, pageLink);
     }
 
-    @Cacheable(cacheNames = ENTITY_VIEW_CACHE)
+//    @Cacheable(cacheNames = ENTITY_VIEW_CACHE)
     @Override
     public TextPageData<EntityView> findEntityViewByTenantIdAndEntityId(TenantId tenantId, EntityId entityId,
                                                                     TextPageLink pageLink) {
@@ -190,7 +190,7 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti
         return new TextPageData<>(entityViews, pageLink);
     }
 
-    @Cacheable(cacheNames = ENTITY_VIEW_CACHE, key = "{#tenantId, #customerId, #entityId, #pageLink}")
+//    @Cacheable(cacheNames = ENTITY_VIEW_CACHE, key = "{#tenantId, #customerId, #entityId, #pageLink}")
     @Override
     public TextPageData<EntityView> findEntityViewsByTenantIdAndCustomerIdAndEntityId(TenantId tenantId,
                                                                                       CustomerId customerId,
diff --git a/dao/src/main/java/org/thingsboard/server/dao/timeseries/BaseTimeseriesService.java b/dao/src/main/java/org/thingsboard/server/dao/timeseries/BaseTimeseriesService.java
index 3829df6..3a1e8db 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/timeseries/BaseTimeseriesService.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/timeseries/BaseTimeseriesService.java
@@ -36,6 +36,7 @@ import org.thingsboard.server.dao.service.Validator;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import static org.apache.commons.lang3.StringUtils.isBlank;
 
@@ -61,7 +62,11 @@ public class BaseTimeseriesService implements TimeseriesService {
         queries.forEach(BaseTimeseriesService::validate);
         if (entityId.getEntityType().equals(EntityType.ENTITY_VIEW)) {
             EntityView entityView = entityViewService.findEntityViewById((EntityViewId) entityId);
-            return timeseriesDao.findAllAsync(entityView.getEntityId(), updateQueriesForEntityView(entityView, queries));
+            List<ReadTsKvQuery> filteredQueries =
+                    queries.stream()
+                            .filter(query -> entityView.getKeys().getTimeseries().contains(query.getKey()))
+                            .collect(Collectors.toList());
+            return timeseriesDao.findAllAsync(entityView.getEntityId(), updateQueriesForEntityView(entityView, filteredQueries));
         }
         return timeseriesDao.findAllAsync(entityId, queries);
     }
@@ -73,11 +78,12 @@ public class BaseTimeseriesService implements TimeseriesService {
         keys.forEach(key -> Validator.validateString(key, "Incorrect key " + key));
         if (entityId.getEntityType().equals(EntityType.ENTITY_VIEW)) {
             EntityView entityView = entityViewService.findEntityViewById((EntityViewId) entityId);
-            Collection<String> matchingKeys = chooseKeysForEntityView(entityView, keys);
-            List<ReadTsKvQuery> queries = new ArrayList<>();
-
-            matchingKeys.forEach(key -> queries.add(
-                    new BaseReadTsKvQuery(key, entityView.getStartTs(), entityView.getEndTs(), 1, "ASC")));
+            List<String> filteredKeys = new ArrayList<>(keys);
+            filteredKeys.retainAll(entityView.getKeys().getTimeseries());
+            List<ReadTsKvQuery> queries =
+                    filteredKeys.stream()
+                            .map(key -> new BaseReadTsKvQuery(key, entityView.getStartTs(), entityView.getEndTs(), 1, "ASC"))
+                            .collect(Collectors.toList());
 
             return timeseriesDao.findAllAsync(entityView.getEntityId(), updateQueriesForEntityView(entityView, queries));
         }
@@ -136,34 +142,11 @@ public class BaseTimeseriesService implements TimeseriesService {
     }
 
     private List<ReadTsKvQuery> updateQueriesForEntityView(EntityView entityView, List<ReadTsKvQuery> queries) {
-        List<ReadTsKvQuery> newQueries = new ArrayList<>();
-        entityView.getKeys().getTimeseries()
-                .forEach(viewKey -> queries
-                        .forEach(query -> {
-                            if (query.getKey().equals(viewKey)) {
-                                if (entityView.getStartTs() == 0 && entityView.getEndTs() == 0) {
-                                    newQueries.add(updateQuery(query.getStartTs(), query.getEndTs(), viewKey, query));
-                                } else if (entityView.getStartTs() == 0 && entityView.getEndTs() != 0) {
-                                    newQueries.add(updateQuery(query.getStartTs(), entityView.getEndTs(), viewKey, query));
-                                } else if (entityView.getStartTs() != 0 && entityView.getEndTs() == 0) {
-                                    newQueries.add(updateQuery(entityView.getStartTs(), query.getEndTs(), viewKey, query));
-                                } else {
-                                    newQueries.add(updateQuery(entityView.getStartTs(), entityView.getEndTs(), viewKey, query));
-                                }
-                            }}));
-        return newQueries;
-    }
-
-    private Collection<String> chooseKeysForEntityView(EntityView entityView, Collection<String> keys) {
-        Collection<String> newKeys = new ArrayList<>();
-        entityView.getKeys().getTimeseries()
-                .forEach(viewKey -> keys
-                        .forEach(key -> {
-                            if (key.equals(viewKey)) {
-                                newKeys.add(key);
-                            }
-                        }));
-        return newKeys;
+        return queries.stream().map(query -> {
+            long startTs = entityView.getStartTs() == 0 ? query.getStartTs() : entityView.getStartTs();
+            long endTs = entityView.getEndTs() == 0 ? query.getEndTs() : entityView.getEndTs();
+            return updateQuery(startTs, endTs, query);
+        }).collect(Collectors.toList());
     }
 
     @Override
@@ -205,9 +188,9 @@ public class BaseTimeseriesService implements TimeseriesService {
         }
     }
 
-    private static ReadTsKvQuery updateQuery(Long startTs, Long endTs, String viewKey, ReadTsKvQuery query) {
+    private ReadTsKvQuery updateQuery(Long startTs, Long endTs, ReadTsKvQuery query) {
         return startTs <= query.getStartTs() && endTs >= query.getEndTs() ? query :
-                new BaseReadTsKvQuery(viewKey, startTs, endTs, query.getInterval(), query.getLimit(), query.getAggregation());
+                new BaseReadTsKvQuery(query.getKey(), startTs, endTs, query.getInterval(), query.getLimit(), query.getAggregation());
     }
 
     private static void checkForNonEntityView(EntityId entityId) throws Exception {