Merge branch 'develop/3.5' of github.com:AndriiLandiak/thingsboard into feature/x509-device-cert-impr
This commit is contained in:
		
						commit
						82c95f519d
					
				@ -72,8 +72,6 @@ WHERE cleared = FALSE
 | 
			
		||||
             ORDER BY l.created_time DESC, l.id
 | 
			
		||||
             LIMIT 1);
 | 
			
		||||
 | 
			
		||||
VACUUM FULL ANALYZE alarm;
 | 
			
		||||
 | 
			
		||||
-- ALARM STATUS REFACTORING END
 | 
			
		||||
 | 
			
		||||
-- ALARM COMMENTS START
 | 
			
		||||
 | 
			
		||||
@ -90,7 +90,7 @@ public class AlarmCommentController extends BaseController {
 | 
			
		||||
    public void deleteAlarmComment(@ApiParam(value = ALARM_ID_PARAM_DESCRIPTION) @PathVariable(ALARM_ID) String strAlarmId, @ApiParam(value = ALARM_COMMENT_ID_PARAM_DESCRIPTION) @PathVariable(ALARM_COMMENT_ID) String strCommentId) throws ThingsboardException {
 | 
			
		||||
        checkParameter(ALARM_ID, strAlarmId);
 | 
			
		||||
        AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
 | 
			
		||||
        Alarm alarm = checkAlarmId(alarmId, Operation.DELETE);
 | 
			
		||||
        Alarm alarm = checkAlarmId(alarmId, Operation.WRITE);
 | 
			
		||||
 | 
			
		||||
        AlarmCommentId alarmCommentId = new AlarmCommentId(toUUID(strCommentId));
 | 
			
		||||
        AlarmComment alarmComment = checkAlarmCommentId(alarmCommentId, alarmId);
 | 
			
		||||
@ -104,7 +104,7 @@ public class AlarmCommentController extends BaseController {
 | 
			
		||||
    @RequestMapping(value = "/alarm/{alarmId}/comment", method = RequestMethod.GET)
 | 
			
		||||
    @ResponseBody
 | 
			
		||||
    public PageData<AlarmCommentInfo> getAlarmComments(
 | 
			
		||||
            @ApiParam(value = ALARM_ID_PARAM_DESCRIPTION)
 | 
			
		||||
            @ApiParam(value = ALARM_ID_PARAM_DESCRIPTION, required = true)
 | 
			
		||||
            @PathVariable(ALARM_ID) String strAlarmId,
 | 
			
		||||
            @ApiParam(value = PAGE_SIZE_DESCRIPTION, required = true)
 | 
			
		||||
            @RequestParam int pageSize,
 | 
			
		||||
@ -117,10 +117,7 @@ public class AlarmCommentController extends BaseController {
 | 
			
		||||
    ) throws Exception {
 | 
			
		||||
        checkParameter(ALARM_ID, strAlarmId);
 | 
			
		||||
        AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
 | 
			
		||||
        Alarm alarm = alarmService.findAlarmByIdAsync(getCurrentUser().getTenantId(), alarmId).get();
 | 
			
		||||
        checkNotNull(alarm, "Alarm with id [" + alarmId + "] is not found");
 | 
			
		||||
        checkEntityId(alarm.getOriginator(), Operation.READ);
 | 
			
		||||
 | 
			
		||||
        Alarm alarm = checkAlarmId(alarmId, Operation.READ);
 | 
			
		||||
        PageLink pageLink = createPageLink(pageSize, page, null, sortProperty, sortOrder);
 | 
			
		||||
        return checkNotNull(alarmCommentService.findAlarmComments(alarm.getTenantId(), alarmId, pageLink));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -104,7 +104,7 @@ public class ControllerConstants {
 | 
			
		||||
    protected static final String ASSET_PROFILE_SORT_PROPERTY_ALLOWABLE_VALUES = "createdTime, name, description, isDefault";
 | 
			
		||||
    protected static final String ASSET_SORT_PROPERTY_ALLOWABLE_VALUES = "createdTime, name, type, label, customerTitle";
 | 
			
		||||
    protected static final String ALARM_SORT_PROPERTY_ALLOWABLE_VALUES = "createdTime, startTs, endTs, type, ackTs, clearTs, severity, status";
 | 
			
		||||
    protected static final String ALARM_COMMENT_SORT_PROPERTY_ALLOWABLE_VALUES = "createdTime";
 | 
			
		||||
    protected static final String ALARM_COMMENT_SORT_PROPERTY_ALLOWABLE_VALUES = "createdTime, id";
 | 
			
		||||
    protected static final String EVENT_SORT_PROPERTY_ALLOWABLE_VALUES = "ts, id";
 | 
			
		||||
    protected static final String EDGE_SORT_PROPERTY_ALLOWABLE_VALUES = "createdTime, name, type, label, customerTitle";
 | 
			
		||||
    protected static final String RULE_CHAIN_SORT_PROPERTY_ALLOWABLE_VALUES = "createdTime, name, root";
 | 
			
		||||
 | 
			
		||||
@ -17,11 +17,14 @@ package org.thingsboard.server.service.entitiy.alarm;
 | 
			
		||||
 | 
			
		||||
import lombok.AllArgsConstructor;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityType;
 | 
			
		||||
import org.thingsboard.server.common.data.User;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.Alarm;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmComment;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmCommentType;
 | 
			
		||||
import org.thingsboard.server.common.data.audit.ActionType;
 | 
			
		||||
import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
 | 
			
		||||
import org.thingsboard.server.common.data.exception.ThingsboardException;
 | 
			
		||||
import org.thingsboard.server.common.data.id.UserId;
 | 
			
		||||
import org.thingsboard.server.service.entitiy.AbstractTbEntityService;
 | 
			
		||||
@ -45,8 +48,17 @@ public class DefaultTbAlarmCommentService extends AbstractTbEntityService implem
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteAlarmComment(Alarm alarm, AlarmComment alarmComment, User user) {
 | 
			
		||||
        alarmCommentService.deleteAlarmComment(alarm.getTenantId(), alarmComment.getId());
 | 
			
		||||
        notificationEntityService.notifyAlarmComment(alarm, alarmComment, ActionType.DELETED_COMMENT, user);
 | 
			
		||||
    public void deleteAlarmComment(Alarm alarm, AlarmComment alarmComment, User user) throws ThingsboardException {
 | 
			
		||||
        if (alarmComment.getType() == AlarmCommentType.OTHER) {
 | 
			
		||||
            alarmComment.setType(AlarmCommentType.SYSTEM);
 | 
			
		||||
            alarmComment.setUserId(null);
 | 
			
		||||
            alarmComment.setComment(JacksonUtil.newObjectNode().put("text",
 | 
			
		||||
                    String.format("User %s deleted his comment",
 | 
			
		||||
                            (user.getFirstName() == null || user.getLastName() == null) ? user.getName() : user.getFirstName() + " " + user.getLastName())));
 | 
			
		||||
            AlarmComment savedAlarmComment = checkNotNull(alarmCommentService.saveAlarmComment(alarm.getTenantId(), alarmComment));
 | 
			
		||||
            notificationEntityService.notifyAlarmComment(alarm, savedAlarmComment, ActionType.DELETED_COMMENT, user);
 | 
			
		||||
        } else {
 | 
			
		||||
            throw new ThingsboardException("System comment could not be deleted", ThingsboardErrorCode.BAD_REQUEST_PARAMS);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -23,5 +23,5 @@ import org.thingsboard.server.common.data.exception.ThingsboardException;
 | 
			
		||||
public interface TbAlarmCommentService {
 | 
			
		||||
    AlarmComment saveAlarmComment(Alarm alarm, AlarmComment alarmComment, User user) throws ThingsboardException;
 | 
			
		||||
 | 
			
		||||
    void deleteAlarmComment(Alarm alarm, AlarmComment alarmComment, User user);
 | 
			
		||||
    void deleteAlarmComment(Alarm alarm, AlarmComment alarmComment, User user) throws ThingsboardException;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -684,6 +684,11 @@ public class SqlDatabaseUpgradeService implements DatabaseEntitiesUpgradeService
 | 
			
		||||
                        schemaUpdateFile = Paths.get(installScripts.getDataDir(), "upgrade", "3.4.4", SCHEMA_UPDATE_SQL);
 | 
			
		||||
                        loadSql(schemaUpdateFile, conn);
 | 
			
		||||
 | 
			
		||||
                        try {
 | 
			
		||||
                            conn.createStatement().execute("VACUUM FULL ANALYZE alarm;"); //NOSONAR, ignoring because method used to execute thingsboard database upgrade script
 | 
			
		||||
                        } catch (Exception e) {
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        try {
 | 
			
		||||
                            conn.createStatement().execute("ALTER TABLE asset_profile ADD COLUMN default_edge_rule_chain_id uuid"); //NOSONAR, ignoring because method used to execute thingsboard database upgrade script
 | 
			
		||||
                        } catch (Exception e) {
 | 
			
		||||
 | 
			
		||||
@ -202,7 +202,13 @@ public abstract class BaseAlarmCommentControllerTest extends AbstractControllerT
 | 
			
		||||
        doDelete("/api/alarm/" + alarm.getId() + "/comment/" + alarmComment.getId())
 | 
			
		||||
                .andExpect(status().isOk());
 | 
			
		||||
 | 
			
		||||
        testLogEntityAction(alarm, alarm.getId(), tenantId, customerId, customerUserId, CUSTOMER_USER_EMAIL, ActionType.DELETED_COMMENT, 1, alarmComment);
 | 
			
		||||
        AlarmComment expectedAlarmComment = AlarmComment.builder()
 | 
			
		||||
                .alarmId(alarm.getId())
 | 
			
		||||
                .type(AlarmCommentType.SYSTEM)
 | 
			
		||||
                .comment(JacksonUtil.newObjectNode().put("text", String.format("User %s deleted his comment",
 | 
			
		||||
                        CUSTOMER_USER_EMAIL)))
 | 
			
		||||
                .build();
 | 
			
		||||
        testLogEntityAction(alarm, alarm.getId(), tenantId, customerId, customerUserId, CUSTOMER_USER_EMAIL, ActionType.DELETED_COMMENT, 1, expectedAlarmComment);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
@ -215,7 +221,13 @@ public abstract class BaseAlarmCommentControllerTest extends AbstractControllerT
 | 
			
		||||
        doDelete("/api/alarm/" + alarm.getId() + "/comment/" + alarmComment.getId())
 | 
			
		||||
                .andExpect(status().isOk());
 | 
			
		||||
 | 
			
		||||
        testLogEntityAction(alarm, alarm.getId(), tenantId, customerId, tenantAdminUserId, TENANT_ADMIN_EMAIL, ActionType.DELETED_COMMENT, 1, alarmComment);
 | 
			
		||||
        AlarmComment expectedAlarmComment = AlarmComment.builder()
 | 
			
		||||
                .alarmId(alarm.getId())
 | 
			
		||||
                .type(AlarmCommentType.SYSTEM)
 | 
			
		||||
                .comment(JacksonUtil.newObjectNode().put("text", String.format("User %s deleted his comment",
 | 
			
		||||
                        TENANT_ADMIN_EMAIL)))
 | 
			
		||||
                .build();
 | 
			
		||||
        testLogEntityAction(alarm, alarm.getId(), tenantId, customerId, tenantAdminUserId, TENANT_ADMIN_EMAIL, ActionType.DELETED_COMMENT, 1, expectedAlarmComment);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
 | 
			
		||||
@ -28,9 +28,11 @@ import org.thingsboard.server.cluster.TbClusterService;
 | 
			
		||||
import org.thingsboard.server.common.data.User;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.Alarm;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmComment;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmCommentType;
 | 
			
		||||
import org.thingsboard.server.common.data.exception.ThingsboardException;
 | 
			
		||||
import org.thingsboard.server.common.data.id.AlarmCommentId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.AlarmId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.UserId;
 | 
			
		||||
import org.thingsboard.server.dao.alarm.AlarmCommentService;
 | 
			
		||||
import org.thingsboard.server.dao.alarm.AlarmService;
 | 
			
		||||
import org.thingsboard.server.dao.customer.CustomerService;
 | 
			
		||||
@ -41,6 +43,7 @@ import org.thingsboard.server.service.telemetry.AlarmSubscriptionService;
 | 
			
		||||
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
 | 
			
		||||
import static org.mockito.ArgumentMatchers.any;
 | 
			
		||||
import static org.mockito.ArgumentMatchers.eq;
 | 
			
		||||
import static org.mockito.Mockito.doNothing;
 | 
			
		||||
@ -84,13 +87,28 @@ public class DefaultTbAlarmCommentServiceTest {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testDelete() {
 | 
			
		||||
    public void testDelete() throws ThingsboardException {
 | 
			
		||||
        var alarmId = new AlarmId(UUID.randomUUID());
 | 
			
		||||
        var alarmCommentId = new AlarmCommentId(UUID.randomUUID());
 | 
			
		||||
        var alarmComment = new AlarmComment();
 | 
			
		||||
        alarmComment.setAlarmId(alarmId);
 | 
			
		||||
        alarmComment.setUserId(new UserId(UUID.randomUUID()));
 | 
			
		||||
        alarmComment.setType(AlarmCommentType.OTHER);
 | 
			
		||||
 | 
			
		||||
        doNothing().when(alarmCommentService).deleteAlarmComment(Mockito.any(), eq(alarmCommentId));
 | 
			
		||||
        service.deleteAlarmComment(new Alarm(alarmId), new AlarmComment(alarmCommentId), new User());
 | 
			
		||||
        when(alarmCommentService.saveAlarmComment(Mockito.any(), eq(alarmComment))).thenReturn(alarmComment);
 | 
			
		||||
        service.deleteAlarmComment(new Alarm(alarmId), alarmComment, new User());
 | 
			
		||||
 | 
			
		||||
        verify(notificationEntityService, times(1)).notifyAlarmComment(any(), any(), any(), any());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testShouldNotDeleteSystemComment() {
 | 
			
		||||
        var alarmId = new AlarmId(UUID.randomUUID());
 | 
			
		||||
        var alarmComment = new AlarmComment();
 | 
			
		||||
        alarmComment.setAlarmId(alarmId);
 | 
			
		||||
        alarmComment.setType(AlarmCommentType.SYSTEM);
 | 
			
		||||
 | 
			
		||||
        assertThatThrownBy(() -> service.deleteAlarmComment(new Alarm(alarmId), alarmComment, new User()))
 | 
			
		||||
                .isInstanceOf(ThingsboardException.class)
 | 
			
		||||
                .hasMessageContaining("System comment could not be deleted");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -16,6 +16,7 @@
 | 
			
		||||
package org.thingsboard.server.dao.alarm;
 | 
			
		||||
 | 
			
		||||
import com.google.common.util.concurrent.ListenableFuture;
 | 
			
		||||
import org.thingsboard.server.common.data.User;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmComment;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmCommentInfo;
 | 
			
		||||
import org.thingsboard.server.common.data.id.AlarmCommentId;
 | 
			
		||||
@ -27,7 +28,7 @@ import org.thingsboard.server.common.data.page.PageLink;
 | 
			
		||||
public interface AlarmCommentService {
 | 
			
		||||
    AlarmComment createOrUpdateAlarmComment(TenantId tenantId, AlarmComment alarmComment);
 | 
			
		||||
 | 
			
		||||
    void deleteAlarmComment(TenantId tenantId, AlarmCommentId alarmCommentId);
 | 
			
		||||
    AlarmComment saveAlarmComment(TenantId tenantId, AlarmComment alarmComment);
 | 
			
		||||
 | 
			
		||||
    PageData<AlarmCommentInfo> findAlarmComments(TenantId tenantId, AlarmId alarmId, PageLink pageLink);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -22,12 +22,16 @@ import com.google.common.util.concurrent.ListenableFuture;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.server.common.data.User;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmComment;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmCommentInfo;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmCommentType;
 | 
			
		||||
import org.thingsboard.server.common.data.id.AlarmCommentId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.AlarmId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.CustomerId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.UserId;
 | 
			
		||||
import org.thingsboard.server.common.data.page.PageData;
 | 
			
		||||
import org.thingsboard.server.common.data.page.PageLink;
 | 
			
		||||
import org.thingsboard.server.dao.entity.AbstractEntityService;
 | 
			
		||||
@ -39,7 +43,7 @@ import static org.thingsboard.server.dao.service.Validator.validateId;
 | 
			
		||||
 | 
			
		||||
@Service
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class BaseAlarmCommentService extends AbstractEntityService implements AlarmCommentService{
 | 
			
		||||
public class BaseAlarmCommentService extends AbstractEntityService implements AlarmCommentService {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private AlarmCommentDao alarmCommentDao;
 | 
			
		||||
@ -58,9 +62,10 @@ public class BaseAlarmCommentService extends AbstractEntityService implements Al
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteAlarmComment(TenantId tenantId, AlarmCommentId alarmCommentId) {
 | 
			
		||||
        log.debug("Deleting Alarm Comment with id: {}", alarmCommentId);
 | 
			
		||||
        alarmCommentDao.deleteAlarmComment(tenantId, alarmCommentId);
 | 
			
		||||
    public AlarmComment saveAlarmComment(TenantId tenantId, AlarmComment alarmComment) {
 | 
			
		||||
        log.debug("Deleting Alarm Comment: {}", alarmComment);
 | 
			
		||||
        alarmCommentDataValidator.validate(alarmComment, c -> tenantId);
 | 
			
		||||
        return alarmCommentDao.save(tenantId, alarmComment);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 | 
			
		||||
@ -27,6 +27,7 @@ import org.thingsboard.server.common.data.User;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.Alarm;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmComment;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmCommentInfo;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmCommentType;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
 | 
			
		||||
import org.thingsboard.server.common.data.id.AssetId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.UserId;
 | 
			
		||||
@ -79,7 +80,7 @@ public abstract class BaseAlarmCommentServiceTest extends AbstractServiceTest {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testSaveAndFetchAlarmComment() throws ExecutionException, InterruptedException {
 | 
			
		||||
    public void testCreateAndFetchAlarmComment() throws ExecutionException, InterruptedException {
 | 
			
		||||
        AlarmComment alarmComment = AlarmComment.builder().alarmId(alarm.getId())
 | 
			
		||||
                .userId(user.getId())
 | 
			
		||||
                .type(OTHER)
 | 
			
		||||
@ -142,7 +143,7 @@ public abstract class BaseAlarmCommentServiceTest extends AbstractServiceTest {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testDeleteAlarmComment() throws ExecutionException, InterruptedException {
 | 
			
		||||
    public void testSaveAlarmComment() throws ExecutionException, InterruptedException {
 | 
			
		||||
        UserId userId = new UserId(UUID.randomUUID());
 | 
			
		||||
        AlarmComment alarmComment = AlarmComment.builder().alarmId(alarm.getId())
 | 
			
		||||
                .userId(userId)
 | 
			
		||||
@ -152,13 +153,12 @@ public abstract class BaseAlarmCommentServiceTest extends AbstractServiceTest {
 | 
			
		||||
 | 
			
		||||
        AlarmComment createdComment = alarmCommentService.createOrUpdateAlarmComment(tenantId, alarmComment);
 | 
			
		||||
 | 
			
		||||
        Assert.assertNotNull(createdComment);
 | 
			
		||||
        Assert.assertNotNull(createdComment.getId());
 | 
			
		||||
 | 
			
		||||
        alarmCommentService.deleteAlarmComment(tenantId, createdComment.getId());
 | 
			
		||||
        createdComment.setType(AlarmCommentType.SYSTEM);
 | 
			
		||||
        createdComment.setUserId(null);
 | 
			
		||||
        alarmCommentService.saveAlarmComment(tenantId, createdComment);
 | 
			
		||||
 | 
			
		||||
        AlarmComment fetched = alarmCommentService.findAlarmCommentByIdAsync(tenantId, createdComment.getId()).get();
 | 
			
		||||
 | 
			
		||||
        Assert.assertNull("Alarm comment was returned when it was expected to be null", fetched);
 | 
			
		||||
        Assert.assertNull(fetched.getUserId());
 | 
			
		||||
        Assert.assertEquals(AlarmCommentType.SYSTEM, fetched.getType());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -64,6 +64,8 @@ import org.thingsboard.server.common.data.TenantProfile;
 | 
			
		||||
import org.thingsboard.server.common.data.UpdateMessage;
 | 
			
		||||
import org.thingsboard.server.common.data.User;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.Alarm;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmComment;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmCommentInfo;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmInfo;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmSearchStatus;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
 | 
			
		||||
@ -82,6 +84,7 @@ import org.thingsboard.server.common.data.edge.EdgeInfo;
 | 
			
		||||
import org.thingsboard.server.common.data.edge.EdgeInstallInstructions;
 | 
			
		||||
import org.thingsboard.server.common.data.edge.EdgeSearchQuery;
 | 
			
		||||
import org.thingsboard.server.common.data.entityview.EntityViewSearchQuery;
 | 
			
		||||
import org.thingsboard.server.common.data.id.AlarmCommentId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.AlarmId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.AssetId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.AssetProfileId;
 | 
			
		||||
@ -490,6 +493,29 @@ public class RestClient implements Closeable {
 | 
			
		||||
        return restTemplate.postForEntity(baseURL + "/api/alarm", alarm, Alarm.class).getBody();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public AlarmComment saveAlarmComment(AlarmId alarmId, AlarmComment alarmComment) {
 | 
			
		||||
        return restTemplate.postForEntity(baseURL + "/api/alarm/{alarmId}/comment", alarmComment, AlarmComment.class, alarmId.getId()).getBody();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void deleteAlarmComment(AlarmId alarmId, AlarmCommentId alarmCommentId) {
 | 
			
		||||
        restTemplate.delete(baseURL + "/api/alarm/{alarmId}/comment/{alarmCommentId}",
 | 
			
		||||
                alarmId.getId(), alarmCommentId.getId());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public PageData<AlarmCommentInfo> getAlarmComments(AlarmId alarmId, PageLink pageLink) {
 | 
			
		||||
        String urlSecondPart = "/api/alarm/{alarmId}/comment";
 | 
			
		||||
        Map<String, String> params = new HashMap<>();
 | 
			
		||||
        params.put("alarmId", alarmId.getId().toString());
 | 
			
		||||
 | 
			
		||||
        return restTemplate.exchange(
 | 
			
		||||
                baseURL + urlSecondPart + "&" + getUrlParams(pageLink),
 | 
			
		||||
                HttpMethod.GET,
 | 
			
		||||
                HttpEntity.EMPTY,
 | 
			
		||||
                new ParameterizedTypeReference<PageData<AlarmCommentInfo>>() {
 | 
			
		||||
                },
 | 
			
		||||
                params).getBody();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Optional<Asset> getAssetById(AssetId assetId) {
 | 
			
		||||
        try {
 | 
			
		||||
            ResponseEntity<Asset> asset = restTemplate.getForEntity(baseURL + "/api/asset/{assetId}", Asset.class, assetId.getId());
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user