Merge branch 'master' into develop/2.3

This commit is contained in:
Igor Kulikov 2019-01-18 13:19:08 +02:00
commit 0dea447dfe

View File

@ -20,6 +20,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.thingsboard.server.common.data.BaseData;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.id.EntityId;
@ -274,14 +275,43 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
public List<RuleNode> getRuleChainNodes(TenantId tenantId, RuleChainId ruleChainId) {
Validator.validateId(ruleChainId, "Incorrect rule chain id for search request.");
List<EntityRelation> relations = getRuleChainToNodeRelations(tenantId, ruleChainId);
List<RuleNode> ruleNodes = relations.stream().map(relation -> ruleNodeDao.findById(tenantId, relation.getTo().getId())).collect(Collectors.toList());
List<RuleNode> ruleNodes = new ArrayList<>();
for (EntityRelation relation : relations) {
RuleNode ruleNode = ruleNodeDao.findById(tenantId, relation.getTo().getId());
if (ruleNode != null) {
ruleNodes.add(ruleNode);
} else {
relationService.deleteRelation(tenantId, relation);
}
}
return ruleNodes;
}
@Override
public List<EntityRelation> getRuleNodeRelations(TenantId tenantId, RuleNodeId ruleNodeId) {
Validator.validateId(ruleNodeId, "Incorrect rule node id for search request.");
return relationService.findByFrom(tenantId, ruleNodeId, RelationTypeGroup.RULE_NODE);
List<EntityRelation> relations = relationService.findByFrom(tenantId, ruleNodeId, RelationTypeGroup.RULE_NODE);
List<EntityRelation> validRelations = new ArrayList<>();
for (EntityRelation relation : relations) {
boolean valid = true;
EntityType toType = relation.getTo().getEntityType();
if (toType == EntityType.RULE_NODE || toType == EntityType.RULE_CHAIN) {
BaseData entity;
if (relation.getTo().getEntityType() == EntityType.RULE_NODE) {
entity = ruleNodeDao.findById(tenantId, relation.getTo().getId());
} else {
entity = ruleChainDao.findById(tenantId, relation.getTo().getId());
}
if (entity == null) {
relationService.deleteRelation(tenantId, relation);
valid = false;
}
}
if (valid) {
validRelations.add(relation);
}
}
return validRelations;
}
@Override