Browse Source

Improvement of the save alarm procedure

pull/8145/head
Andrii Shvaika 4 years ago
parent
commit
b9cf5c7836
  1. 4
      application/src/main/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmService.java
  2. 17
      application/src/main/java/org/thingsboard/server/service/telemetry/DefaultAlarmSubscriptionService.java
  3. 8
      common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmCreateOrUpdateActiveRequest.java
  4. 3
      common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmModificationRequest.java
  5. 8
      common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmUpdateRequest.java

4
application/src/main/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmService.java

@ -49,9 +49,9 @@ public class DefaultTbAlarmService extends AbstractTbEntityService implements Tb
try { try {
AlarmApiCallResult result; AlarmApiCallResult result;
if (alarm.getId() == null) { if (alarm.getId() == null) {
result = alarmSubscriptionService.createAlarm(AlarmCreateOrUpdateActiveRequest.fromAlarm(alarm)); result = alarmSubscriptionService.createAlarm(AlarmCreateOrUpdateActiveRequest.fromAlarm(alarm, user.getId()));
} else { } else {
result = alarmSubscriptionService.updateAlarm(AlarmUpdateRequest.fromAlarm(alarm)); result = alarmSubscriptionService.updateAlarm(AlarmUpdateRequest.fromAlarm(alarm, user.getId()));
} }
if (!result.isSuccessful()) { if (!result.isSuccessful()) {
throw new ThingsboardException(ThingsboardErrorCode.ITEM_NOT_FOUND); throw new ThingsboardException(ThingsboardErrorCode.ITEM_NOT_FOUND);

17
application/src/main/java/org/thingsboard/server/service/telemetry/DefaultAlarmSubscriptionService.java

@ -29,6 +29,7 @@ import org.thingsboard.server.common.data.alarm.Alarm;
import org.thingsboard.server.common.data.alarm.AlarmComment; import org.thingsboard.server.common.data.alarm.AlarmComment;
import org.thingsboard.server.common.data.alarm.AlarmCommentType; import org.thingsboard.server.common.data.alarm.AlarmCommentType;
import org.thingsboard.server.common.data.alarm.AlarmInfo; import org.thingsboard.server.common.data.alarm.AlarmInfo;
import org.thingsboard.server.common.data.alarm.AlarmModificationRequest;
import org.thingsboard.server.common.data.alarm.AlarmQuery; import org.thingsboard.server.common.data.alarm.AlarmQuery;
import org.thingsboard.server.common.data.alarm.AlarmSearchStatus; import org.thingsboard.server.common.data.alarm.AlarmSearchStatus;
import org.thingsboard.server.common.data.alarm.AlarmSeverity; import org.thingsboard.server.common.data.alarm.AlarmSeverity;
@ -103,7 +104,7 @@ public class DefaultAlarmSubscriptionService extends AbstractSubscriptionService
if (result.isCreated()) { if (result.isCreated()) {
apiUsageClient.report(request.getTenantId(), null, ApiUsageRecordKey.CREATED_ALARMS_COUNT); apiUsageClient.report(request.getTenantId(), null, ApiUsageRecordKey.CREATED_ALARMS_COUNT);
} }
return withWsCallback(result); return withWsCallback(request, result);
} }
@Override @Override
@ -298,17 +299,23 @@ public class DefaultAlarmSubscriptionService extends AbstractSubscriptionService
} }
private AlarmApiCallResult withWsCallback(AlarmApiCallResult result) { private AlarmApiCallResult withWsCallback(AlarmApiCallResult result) {
return withWsCallback(null, result);
}
private AlarmApiCallResult withWsCallback(AlarmModificationRequest request, AlarmApiCallResult result) {
if (result.isSuccessful() && result.isModified()) { if (result.isSuccessful() && result.isModified()) {
Futures.addCallback(Futures.immediateFuture(result), new AlarmUpdateCallback(), wsCallBackExecutor); Futures.addCallback(Futures.immediateFuture(result), new AlarmUpdateCallback(), wsCallBackExecutor);
if (result.isSeverityChanged()) { if (result.isSeverityChanged()) {
AlarmInfo alarm = result.getAlarm(); AlarmInfo alarm = result.getAlarm();
AlarmComment alarmComment = AlarmComment.builder() AlarmComment.AlarmCommentBuilder alarmComment = AlarmComment.builder()
.alarmId(alarm.getId()) .alarmId(alarm.getId())
.type(AlarmCommentType.SYSTEM) .type(AlarmCommentType.SYSTEM)
.comment(JacksonUtil.newObjectNode().put("text", .comment(JacksonUtil.newObjectNode().put("text",
String.format("Alarm severity was updated from %s to %s", result.getOldSeverity(), alarm.getSeverity()))) String.format("Alarm severity was updated from %s to %s", result.getOldSeverity(), alarm.getSeverity())));
.build(); if (request != null && request.getUserId() != null) {
alarmCommentService.createOrUpdateAlarmComment(alarm.getTenantId(), alarmComment); alarmComment.userId(request.getUserId());
}
alarmCommentService.createOrUpdateAlarmComment(alarm.getTenantId(), alarmComment.build());
} }
} }
return result; return result;

8
common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmCreateOrUpdateActiveRequest.java

@ -22,6 +22,7 @@ import lombok.Data;
import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.validation.Length; import org.thingsboard.server.common.data.validation.Length;
import org.thingsboard.server.common.data.validation.NoXss; import org.thingsboard.server.common.data.validation.NoXss;
@ -58,7 +59,13 @@ public class AlarmCreateOrUpdateActiveRequest implements AlarmModificationReques
@ApiModelProperty(position = 9, value = "JSON object with propagation details") @ApiModelProperty(position = 9, value = "JSON object with propagation details")
private AlarmPropagationInfo propagation; private AlarmPropagationInfo propagation;
private UserId userId;
public static AlarmCreateOrUpdateActiveRequest fromAlarm(Alarm a) { public static AlarmCreateOrUpdateActiveRequest fromAlarm(Alarm a) {
return fromAlarm(a, null);
}
public static AlarmCreateOrUpdateActiveRequest fromAlarm(Alarm a, UserId userId) {
return AlarmCreateOrUpdateActiveRequest.builder() return AlarmCreateOrUpdateActiveRequest.builder()
.tenantId(a.getTenantId()) .tenantId(a.getTenantId())
.customerId(a.getCustomerId()) .customerId(a.getCustomerId())
@ -73,6 +80,7 @@ public class AlarmCreateOrUpdateActiveRequest implements AlarmModificationReques
.propagateToOwner(a.isPropagateToOwner()) .propagateToOwner(a.isPropagateToOwner())
.propagateToTenant(a.isPropagateToTenant()) .propagateToTenant(a.isPropagateToTenant())
.propagateRelationTypes(a.getPropagateRelationTypes()).build()) .propagateRelationTypes(a.getPropagateRelationTypes()).build())
.userId(userId)
.build(); .build();
} }

3
common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmModificationRequest.java

@ -16,6 +16,7 @@
package org.thingsboard.server.common.data.alarm; package org.thingsboard.server.common.data.alarm;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.UserId;
public interface AlarmModificationRequest { public interface AlarmModificationRequest {
@ -28,4 +29,6 @@ public interface AlarmModificationRequest {
void setStartTs(long startTs); void setStartTs(long startTs);
void setEndTs(long endTs); void setEndTs(long endTs);
UserId getUserId();
} }

8
common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmUpdateRequest.java

@ -21,6 +21,7 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import org.thingsboard.server.common.data.id.AlarmId; import org.thingsboard.server.common.data.id.AlarmId;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.validation.NoXss; import org.thingsboard.server.common.data.validation.NoXss;
import javax.validation.Valid; import javax.validation.Valid;
@ -53,7 +54,13 @@ public class AlarmUpdateRequest implements AlarmModificationRequest {
@ApiModelProperty(position = 7, value = "JSON object with propagation details") @ApiModelProperty(position = 7, value = "JSON object with propagation details")
private AlarmPropagationInfo propagation; private AlarmPropagationInfo propagation;
private UserId userId;
public static AlarmUpdateRequest fromAlarm(Alarm a) { public static AlarmUpdateRequest fromAlarm(Alarm a) {
return fromAlarm(a, null);
}
public static AlarmUpdateRequest fromAlarm(Alarm a, UserId userId) {
return AlarmUpdateRequest.builder() return AlarmUpdateRequest.builder()
.tenantId(a.getTenantId()) .tenantId(a.getTenantId())
.alarmId(a.getId()) .alarmId(a.getId())
@ -66,6 +73,7 @@ public class AlarmUpdateRequest implements AlarmModificationRequest {
.propagateToOwner(a.isPropagateToOwner()) .propagateToOwner(a.isPropagateToOwner())
.propagateToTenant(a.isPropagateToTenant()) .propagateToTenant(a.isPropagateToTenant())
.propagateRelationTypes(a.getPropagateRelationTypes()).build()) .propagateRelationTypes(a.getPropagateRelationTypes()).build())
.userId(userId)
.build(); .build();
} }
} }

Loading…
Cancel
Save