Changed method for removing relations from all to removing only COMMON relations
This commit is contained in:
parent
d33d968aa9
commit
dc483ee0a2
@ -129,7 +129,7 @@ public class EntityRelationController extends BaseController {
|
||||
checkParameter("entityType", strType);
|
||||
EntityId entityId = EntityIdFactory.getByTypeAndId(strType, strId);
|
||||
checkEntityId(entityId, Operation.WRITE);
|
||||
tbEntityRelationService.deleteRelations(getTenantId(), getCurrentUser().getCustomerId(), entityId, getCurrentUser());
|
||||
tbEntityRelationService.deleteCommonRelations(getTenantId(), getCurrentUser().getCustomerId(), entityId, getCurrentUser());
|
||||
}
|
||||
|
||||
@ApiOperation(value = "Get Relation (getRelation)",
|
||||
|
||||
@ -72,9 +72,9 @@ public class DefaultTbEntityRelationService extends AbstractTbEntityService impl
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteRelations(TenantId tenantId, CustomerId customerId, EntityId entityId, User user) throws ThingsboardException {
|
||||
public void deleteCommonRelations(TenantId tenantId, CustomerId customerId, EntityId entityId, User user) throws ThingsboardException {
|
||||
try {
|
||||
relationService.deleteEntityRelations(tenantId, entityId);
|
||||
relationService.deleteEntityCommonRelations(tenantId, entityId);
|
||||
notificationEntityService.logEntityAction(tenantId, entityId, null, customerId, ActionType.RELATIONS_DELETED, user);
|
||||
} catch (Exception e) {
|
||||
notificationEntityService.logEntityAction(tenantId, entityId, null, customerId,
|
||||
|
||||
@ -28,6 +28,6 @@ public interface TbEntityRelationService {
|
||||
|
||||
void delete(TenantId tenantId, CustomerId customerId, EntityRelation entity, User user) throws ThingsboardException;
|
||||
|
||||
void deleteRelations(TenantId tenantId, CustomerId customerId, EntityId entityId, User user) throws ThingsboardException;
|
||||
void deleteCommonRelations(TenantId tenantId, CustomerId customerId, EntityId entityId, User user) throws ThingsboardException;
|
||||
|
||||
}
|
||||
|
||||
@ -53,6 +53,8 @@ public interface RelationService {
|
||||
|
||||
void deleteEntityRelations(TenantId tenantId, EntityId entity);
|
||||
|
||||
void deleteEntityCommonRelations(TenantId tenantId, EntityId entity);
|
||||
|
||||
List<EntityRelation> findByFrom(TenantId tenantId, EntityId from, RelationTypeGroup typeGroup);
|
||||
|
||||
ListenableFuture<List<EntityRelation>> findByFromAsync(TenantId tenantId, EntityId from, RelationTypeGroup typeGroup);
|
||||
|
||||
@ -220,13 +220,31 @@ public class BaseRelationService implements RelationService {
|
||||
return future;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void deleteEntityCommonRelations(TenantId tenantId, EntityId entityId) {
|
||||
deleteEntityRelations(tenantId, entityId, RelationTypeGroup.COMMON);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void deleteEntityRelations(TenantId tenantId, EntityId entityId) {
|
||||
deleteEntityRelations(tenantId, entityId, null);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void deleteEntityRelations(TenantId tenantId, EntityId entityId, RelationTypeGroup relationTypeGroup) {
|
||||
log.trace("Executing deleteEntityRelations [{}]", entityId);
|
||||
validate(entityId);
|
||||
List<EntityRelation> inboundRelations = new ArrayList<>(relationDao.findAllByTo(tenantId, entityId));
|
||||
List<EntityRelation> outboundRelations = new ArrayList<>(relationDao.findAllByFrom(tenantId, entityId));
|
||||
List<EntityRelation> inboundRelations;
|
||||
List<EntityRelation> outboundRelations;
|
||||
if (relationTypeGroup == null) {
|
||||
inboundRelations = relationDao.findAllByTo(tenantId, entityId);
|
||||
outboundRelations = relationDao.findAllByFrom(tenantId, entityId);
|
||||
} else {
|
||||
inboundRelations = relationDao.findAllByFrom(tenantId, entityId, relationTypeGroup);
|
||||
outboundRelations = relationDao.findAllByTo(tenantId, entityId, relationTypeGroup);
|
||||
}
|
||||
|
||||
if (!inboundRelations.isEmpty()) {
|
||||
try {
|
||||
|
||||
@ -130,6 +130,24 @@ public abstract class BaseRelationServiceTest extends AbstractServiceTest {
|
||||
Assert.assertFalse(relationService.checkRelation(SYSTEM_TENANT_ID, childId, subChildId, EntityRelation.CONTAINS_TYPE, RelationTypeGroup.COMMON));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteEntityCommonRelations() {
|
||||
AssetId parentId = new AssetId(Uuids.timeBased());
|
||||
AssetId childId = new AssetId(Uuids.timeBased());
|
||||
AssetId subChildId = new AssetId(Uuids.timeBased());
|
||||
|
||||
EntityRelation relationA = new EntityRelation(parentId, childId, EntityRelation.CONTAINS_TYPE);
|
||||
EntityRelation relationB = new EntityRelation(childId, subChildId, EntityRelation.CONTAINS_TYPE);
|
||||
|
||||
saveRelation(relationA);
|
||||
saveRelation(relationB);
|
||||
|
||||
relationService.deleteEntityCommonRelations(SYSTEM_TENANT_ID, childId);
|
||||
|
||||
Assert.assertFalse(relationService.checkRelation(SYSTEM_TENANT_ID, parentId, childId, EntityRelation.CONTAINS_TYPE, RelationTypeGroup.COMMON));
|
||||
Assert.assertFalse(relationService.checkRelation(SYSTEM_TENANT_ID, childId, subChildId, EntityRelation.CONTAINS_TYPE, RelationTypeGroup.COMMON));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindFrom() throws ExecutionException, InterruptedException {
|
||||
AssetId parentA = new AssetId(Uuids.timeBased());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user