Edge Rule Chain CRUD: revert metadata validatino
This commit is contained in:
parent
e372587926
commit
b29b192efc
@ -24,6 +24,7 @@ import org.thingsboard.server.common.data.id.TenantId;
|
|||||||
import org.thingsboard.server.common.data.rule.RuleChain;
|
import org.thingsboard.server.common.data.rule.RuleChain;
|
||||||
import org.thingsboard.server.common.data.rule.RuleChainMetaData;
|
import org.thingsboard.server.common.data.rule.RuleChainMetaData;
|
||||||
import org.thingsboard.server.common.data.rule.RuleChainType;
|
import org.thingsboard.server.common.data.rule.RuleChainType;
|
||||||
|
import org.thingsboard.server.common.data.rule.RuleNode;
|
||||||
import org.thingsboard.server.dao.service.DataValidator;
|
import org.thingsboard.server.dao.service.DataValidator;
|
||||||
import org.thingsboard.server.gen.edge.v1.RuleChainMetadataUpdateMsg;
|
import org.thingsboard.server.gen.edge.v1.RuleChainMetadataUpdateMsg;
|
||||||
import org.thingsboard.server.gen.edge.v1.RuleChainUpdateMsg;
|
import org.thingsboard.server.gen.edge.v1.RuleChainUpdateMsg;
|
||||||
@ -70,7 +71,12 @@ public class BaseRuleChainProcessor extends BaseEdgeProcessor {
|
|||||||
throw new RuntimeException("[{" + tenantId + "}] ruleChainMetadataUpdateMsg {" + ruleChainMetadataUpdateMsg + "} cannot be converted to rule chain metadata");
|
throw new RuntimeException("[{" + tenantId + "}] ruleChainMetadataUpdateMsg {" + ruleChainMetadataUpdateMsg + "} cannot be converted to rule chain metadata");
|
||||||
}
|
}
|
||||||
if (!ruleChainMetadata.getNodes().isEmpty()) {
|
if (!ruleChainMetadata.getNodes().isEmpty()) {
|
||||||
edgeCtx.getRuleChainService().saveRuleChainMetaData(tenantId, ruleChainMetadata, Function.identity(), true, false);
|
ruleChainMetadata.setVersion(null);
|
||||||
|
for (RuleNode ruleNode : ruleChainMetadata.getNodes()) {
|
||||||
|
ruleNode.setRuleChainId(null);
|
||||||
|
ruleNode.setId(null);
|
||||||
|
}
|
||||||
|
edgeCtx.getRuleChainService().saveRuleChainMetaData(tenantId, ruleChainMetadata, Function.identity(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,8 +54,6 @@ public interface RuleChainService extends EntityDaoService {
|
|||||||
|
|
||||||
RuleChainUpdateResult saveRuleChainMetaData(TenantId tenantId, RuleChainMetaData ruleChainMetaData, Function<RuleNode, RuleNode> ruleNodeUpdater, boolean publishSaveEvent);
|
RuleChainUpdateResult saveRuleChainMetaData(TenantId tenantId, RuleChainMetaData ruleChainMetaData, Function<RuleNode, RuleNode> ruleNodeUpdater, boolean publishSaveEvent);
|
||||||
|
|
||||||
RuleChainUpdateResult saveRuleChainMetaData(TenantId tenantId, RuleChainMetaData ruleChainMetaData, Function<RuleNode, RuleNode> ruleNodeUpdater, boolean publishSaveEvent, boolean doValidate);
|
|
||||||
|
|
||||||
RuleChainMetaData loadRuleChainMetaData(TenantId tenantId, RuleChainId ruleChainId);
|
RuleChainMetaData loadRuleChainMetaData(TenantId tenantId, RuleChainId ruleChainId);
|
||||||
|
|
||||||
RuleChain findRuleChainById(TenantId tenantId, RuleChainId ruleChainId);
|
RuleChain findRuleChainById(TenantId tenantId, RuleChainId ruleChainId);
|
||||||
|
|||||||
@ -174,25 +174,18 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
|
|||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public RuleChainUpdateResult saveRuleChainMetaData(TenantId tenantId, RuleChainMetaData ruleChainMetaData, Function<RuleNode, RuleNode> ruleNodeUpdater) {
|
public RuleChainUpdateResult saveRuleChainMetaData(TenantId tenantId, RuleChainMetaData ruleChainMetaData, Function<RuleNode, RuleNode> ruleNodeUpdater) {
|
||||||
return saveRuleChainMetaData(tenantId, ruleChainMetaData, ruleNodeUpdater, true, true);
|
return saveRuleChainMetaData(tenantId, ruleChainMetaData, ruleNodeUpdater, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public RuleChainUpdateResult saveRuleChainMetaData(TenantId tenantId, RuleChainMetaData ruleChainMetaData, Function<RuleNode, RuleNode> ruleNodeUpdater,
|
public RuleChainUpdateResult saveRuleChainMetaData(TenantId tenantId, RuleChainMetaData ruleChainMetaData, Function<RuleNode, RuleNode> ruleNodeUpdater,
|
||||||
boolean publishSaveEvent) {
|
boolean publishSaveEvent) {
|
||||||
return saveRuleChainMetaData(tenantId, ruleChainMetaData, ruleNodeUpdater, publishSaveEvent, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
@Override
|
|
||||||
public RuleChainUpdateResult saveRuleChainMetaData(TenantId tenantId, RuleChainMetaData ruleChainMetaData, Function<RuleNode, RuleNode> ruleNodeUpdater,
|
|
||||||
boolean publishSaveEvent, boolean doValidate) {
|
|
||||||
Validator.validateId(ruleChainMetaData.getRuleChainId(), "Incorrect rule chain id.");
|
Validator.validateId(ruleChainMetaData.getRuleChainId(), "Incorrect rule chain id.");
|
||||||
RuleChain ruleChain = findRuleChainById(tenantId, ruleChainMetaData.getRuleChainId());
|
RuleChain ruleChain = findRuleChainById(tenantId, ruleChainMetaData.getRuleChainId());
|
||||||
if (ruleChain == null) {
|
if (ruleChain == null) {
|
||||||
return RuleChainUpdateResult.failed();
|
return RuleChainUpdateResult.failed();
|
||||||
} else if (doValidate && ruleChainMetaData.getVersion() != null && !ruleChainMetaData.getVersion().equals(ruleChain.getVersion())) {
|
} else if (ruleChainMetaData.getVersion() != null && !ruleChainMetaData.getVersion().equals(ruleChain.getVersion())) {
|
||||||
throw new EntityVersionMismatchException(EntityType.RULE_CHAIN, null);
|
throw new EntityVersionMismatchException(EntityType.RULE_CHAIN, null);
|
||||||
}
|
}
|
||||||
RuleChainDataValidator.validateMetaDataFieldsAndConnections(ruleChainMetaData);
|
RuleChainDataValidator.validateMetaDataFieldsAndConnections(ruleChainMetaData);
|
||||||
@ -206,14 +199,9 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
|
|||||||
if (nodes != null) {
|
if (nodes != null) {
|
||||||
for (RuleNode node : nodes) {
|
for (RuleNode node : nodes) {
|
||||||
setSingletonMode(node);
|
setSingletonMode(node);
|
||||||
if (doValidate) {
|
if (node.getId() != null) {
|
||||||
if (node.getId() != null) {
|
|
||||||
ruleNodeIndexMap.put(node.getId(), nodes.indexOf(node));
|
|
||||||
} else {
|
|
||||||
toAddOrUpdate.add(node);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ruleNodeIndexMap.put(node.getId(), nodes.indexOf(node));
|
ruleNodeIndexMap.put(node.getId(), nodes.indexOf(node));
|
||||||
|
} else {
|
||||||
toAddOrUpdate.add(node);
|
toAddOrUpdate.add(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -226,10 +214,8 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
|
|||||||
Integer index = ruleNodeIndexMap.get(existingNode.getId());
|
Integer index = ruleNodeIndexMap.get(existingNode.getId());
|
||||||
RuleNode newRuleNode = null;
|
RuleNode newRuleNode = null;
|
||||||
if (index != null) {
|
if (index != null) {
|
||||||
if (doValidate) {
|
newRuleNode = ruleChainMetaData.getNodes().get(index);
|
||||||
newRuleNode = ruleChainMetaData.getNodes().get(index);
|
toAddOrUpdate.add(newRuleNode);
|
||||||
toAddOrUpdate.add(newRuleNode);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
updatedRuleNodes.add(new RuleNodeUpdateResult(existingNode, null));
|
updatedRuleNodes.add(new RuleNodeUpdateResult(existingNode, null));
|
||||||
toDelete.add(existingNode);
|
toDelete.add(existingNode);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user