Browse Source

refactoring

pull/15377/head
dashevchenko 6 months ago
parent
commit
8594ea3e63
  1. 4
      application/src/main/java/org/thingsboard/server/controller/AlarmCommentController.java
  2. 17
      application/src/test/java/org/thingsboard/server/controller/AlarmCommentControllerTest.java
  3. 14
      dao/src/main/java/org/thingsboard/server/dao/service/validator/AlarmCommentDataValidator.java

4
application/src/main/java/org/thingsboard/server/controller/AlarmCommentController.java

@ -79,9 +79,7 @@ public class AlarmCommentController extends BaseController {
AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
Alarm alarm = checkAlarmInfoId(alarmId, Operation.WRITE);
alarmComment.setAlarmId(alarmId);
if (alarmComment.getType() == AlarmCommentType.SYSTEM) {
throw new ThingsboardException("You can`t create or update SYSTEM comments", ThingsboardErrorCode.BAD_REQUEST_PARAMS);
}
alarmComment.setType(AlarmCommentType.OTHER);
return tbAlarmCommentService.saveAlarmComment(alarm, alarmComment, getCurrentUser());
}

17
application/src/test/java/org/thingsboard/server/controller/AlarmCommentControllerTest.java

@ -366,26 +366,29 @@ public class AlarmCommentControllerTest extends AbstractControllerTest {
.type(AlarmCommentType.SYSTEM)
.comment(JacksonUtil.newObjectNode().set("text", new TextNode("Acknowledged by tenant admin")))
.build();
doPost("/api/alarm/" + alarm.getId() + "/comment", alarmComment).andExpect(status().isBadRequest());
AlarmComment created = doPost("/api/alarm/" + alarm.getId() + "/comment", alarmComment, AlarmComment.class);
assertThat(created.getType()).isEqualTo(AlarmCommentType.OTHER);
// acknowledge alarm to create system comment
doPost("/api/alarm/" + alarm.getId() + "/ack").andExpect(status().isOk());
Optional<AlarmCommentInfo> systemCommentOpt = doGetTyped(
"/api/alarm/" + alarm.getId() + "/comment" + "?page=0&pageSize=1", new TypeReference<PageData<AlarmCommentInfo>>() {
"/api/alarm/" + alarm.getId() + "/comment" + "?page=0&pageSize=10", new TypeReference<PageData<AlarmCommentInfo>>() {
}
).getData().stream().filter(alarmCommentInfo -> alarmCommentInfo.getType().equals(AlarmCommentType.SYSTEM)).findFirst();
assertThat(systemCommentOpt).isPresent();
AlarmCommentInfo systemComment = systemCommentOpt.get();
systemComment.setComment(JacksonUtil.newObjectNode().set("text", new TextNode("New system comment")));
// system comment can't be updated with other type
systemComment.setType(AlarmCommentType.OTHER);
doPost("/api/alarm/" + alarm.getId() + "/comment", systemComment).andExpect(status().isBadRequest())
.andExpect(statusReason(containsString("You can`t create or update SYSTEM comments")));
.andExpect(statusReason(containsString("System alarm comment can't be updated!")));
// type of comment could not be changed
systemComment.setType(AlarmCommentType.OTHER);
// system comment can't be updated with other text
systemComment.setType(AlarmCommentType.SYSTEM);
systemComment.setComment(JacksonUtil.newObjectNode().set("text", new TextNode("New system comment")));
doPost("/api/alarm/" + alarm.getId() + "/comment", systemComment).andExpect(status().isBadRequest())
.andExpect(statusReason(containsString("System alarm comment type can't be updated!")));
.andExpect(statusReason(containsString("System alarm comment can't be updated!")));
}
private AlarmComment createAlarmComment(AlarmId alarmId, String text) {

14
dao/src/main/java/org/thingsboard/server/dao/service/validator/AlarmCommentDataValidator.java

@ -21,7 +21,7 @@ import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.alarm.AlarmComment;
import org.thingsboard.server.common.data.alarm.AlarmCommentType;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.alarm.AlarmCommentService;
import org.thingsboard.server.dao.alarm.AlarmCommentDao;
import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.dao.service.DataValidator;
@ -29,8 +29,7 @@ import org.thingsboard.server.dao.service.DataValidator;
@AllArgsConstructor
public class AlarmCommentDataValidator extends DataValidator<AlarmComment> {
@Autowired
AlarmCommentService alarmCommentService;
private final AlarmCommentDao alarmCommentDao;
@Override
protected void validateDataImpl(TenantId tenantId, AlarmComment alarmComment) {
@ -46,9 +45,12 @@ public class AlarmCommentDataValidator extends DataValidator<AlarmComment> {
protected AlarmComment validateUpdate(TenantId tenantId, AlarmComment alarmComment) {
AlarmComment oldAlarmComment = null;
if (alarmComment.getId() != null) {
oldAlarmComment = alarmCommentService.findAlarmCommentById(tenantId, alarmComment.getId());
if (oldAlarmComment.getType() == AlarmCommentType.SYSTEM && alarmComment.getType() != AlarmCommentType.SYSTEM) {
throw new DataValidationException("System alarm comment type can't be updated!");
oldAlarmComment = alarmCommentDao.findAlarmCommentById(tenantId, alarmComment.getId().getId());
if (oldAlarmComment == null) {
throw new DataValidationException("Can't update non existing alarm comment!");
}
if (oldAlarmComment.getType() == AlarmCommentType.SYSTEM) {
throw new DataValidationException("System alarm comment can't be updated!");
}
}
return oldAlarmComment;

Loading…
Cancel
Save