|
|
|
@ -66,19 +66,33 @@ public class DefaultTbEntityViewService extends AbstractTbEntityService implemen |
|
|
|
@Override |
|
|
|
public EntityView save(EntityView entityView, EntityView existingEntityView, SecurityUser user) throws ThingsboardException { |
|
|
|
ActionType actionType = entityView.getId() == null ? ActionType.ADDED : ActionType.UPDATED; |
|
|
|
try { |
|
|
|
EntityView savedEntityView = checkNotNull(entityViewService.saveEntityView(entityView)); |
|
|
|
this.updateEntityViewAttributes(user, savedEntityView, existingEntityView); |
|
|
|
notificationEntityService.notifyCreateOrUpdateEntity(savedEntityView.getTenantId(), savedEntityView.getId(), savedEntityView, |
|
|
|
null, actionType, user); |
|
|
|
return savedEntityView; |
|
|
|
} catch (Exception e) { |
|
|
|
notificationEntityService.notifyEntity(user.getTenantId(), emptyId(EntityType.ENTITY_VIEW), entityView, null, actionType, user, e); |
|
|
|
throw handleException(e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateEntityViewAttributes(SecurityUser user, EntityView savedEntityView, EntityView oldEntityView) throws ThingsboardException { |
|
|
|
try { |
|
|
|
List<ListenableFuture<?>> futures = new ArrayList<>(); |
|
|
|
if (existingEntityView != null) { |
|
|
|
if (existingEntityView.getKeys() != null && existingEntityView.getKeys().getAttributes() != null) { |
|
|
|
futures.add(deleteAttributesFromEntityView(existingEntityView, DataConstants.CLIENT_SCOPE, existingEntityView.getKeys().getAttributes().getCs(), user)); |
|
|
|
futures.add(deleteAttributesFromEntityView(existingEntityView, DataConstants.SERVER_SCOPE, existingEntityView.getKeys().getAttributes().getCs(), user)); |
|
|
|
futures.add(deleteAttributesFromEntityView(existingEntityView, DataConstants.SHARED_SCOPE, existingEntityView.getKeys().getAttributes().getCs(), user)); |
|
|
|
|
|
|
|
if (oldEntityView != null) { |
|
|
|
if (oldEntityView.getKeys() != null && oldEntityView.getKeys().getAttributes() != null) { |
|
|
|
futures.add(deleteAttributesFromEntityView(oldEntityView, DataConstants.CLIENT_SCOPE, oldEntityView.getKeys().getAttributes().getCs(), user)); |
|
|
|
futures.add(deleteAttributesFromEntityView(oldEntityView, DataConstants.SERVER_SCOPE, oldEntityView.getKeys().getAttributes().getSs(), user)); |
|
|
|
futures.add(deleteAttributesFromEntityView(oldEntityView, DataConstants.SHARED_SCOPE, oldEntityView.getKeys().getAttributes().getSh(), user)); |
|
|
|
} |
|
|
|
List<String> tsKeys = existingEntityView.getKeys() != null && existingEntityView.getKeys().getTimeseries() != null ? |
|
|
|
existingEntityView.getKeys().getTimeseries() : Collections.emptyList(); |
|
|
|
futures.add(deleteLatestFromEntityView(existingEntityView, tsKeys, user)); |
|
|
|
List<String> tsKeys = oldEntityView.getKeys() != null && oldEntityView.getKeys().getTimeseries() != null ? |
|
|
|
oldEntityView.getKeys().getTimeseries() : Collections.emptyList(); |
|
|
|
futures.add(deleteLatestFromEntityView(oldEntityView, tsKeys, user)); |
|
|
|
} |
|
|
|
EntityView savedEntityView = checkNotNull(entityViewService.saveEntityView(entityView)); |
|
|
|
if (savedEntityView.getKeys() != null) { |
|
|
|
if (savedEntityView.getKeys().getAttributes() != null) { |
|
|
|
futures.add(copyAttributesFromEntityToEntityView(savedEntityView, DataConstants.CLIENT_SCOPE, savedEntityView.getKeys().getAttributes().getCs(), user)); |
|
|
|
@ -94,13 +108,7 @@ public class DefaultTbEntityViewService extends AbstractTbEntityService implemen |
|
|
|
throw new RuntimeException("Failed to copy attributes to entity view", e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
notificationEntityService.notifyCreateOrUpdateEntity(savedEntityView.getTenantId(), savedEntityView.getId(), savedEntityView, |
|
|
|
null, actionType, user); |
|
|
|
|
|
|
|
return savedEntityView; |
|
|
|
} catch (Exception e) { |
|
|
|
notificationEntityService.notifyEntity(user.getTenantId(), emptyId(EntityType.ENTITY_VIEW), entityView, null, actionType, user, e); |
|
|
|
throw handleException(e); |
|
|
|
} |
|
|
|
} |
|
|
|
|