Browse Source

Code review fixes

pull/1078/merge
Volodymyr Babak 8 years ago
parent
commit
09e90b3089
  1. 12
      application/src/main/java/org/thingsboard/server/service/telemetry/DefaultTelemetrySubscriptionService.java
  2. 2
      application/src/main/java/org/thingsboard/server/service/telemetry/sub/Subscription.java
  3. 2
      application/src/test/java/org/thingsboard/server/controller/ControllerSqlTestSuite.java
  4. 2
      common/data/src/main/java/org/thingsboard/server/common/data/EntityView.java
  5. 2
      common/data/src/main/java/org/thingsboard/server/common/data/kv/BaseReadTsKvQuery.java
  6. 18
      dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewServiceImpl.java
  7. 55
      dao/src/main/java/org/thingsboard/server/dao/timeseries/BaseTimeseriesService.java

12
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);

2
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) {

2
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 {

2
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");

2
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);
}
}

18
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,

55
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 {

Loading…
Cancel
Save