Alarm Query to fetch onloy assigned alarms
This commit is contained in:
parent
74fca60cd2
commit
c392df2b8f
@ -29,6 +29,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
import org.springframework.web.context.request.async.DeferredResult;
|
import org.springframework.web.context.request.async.DeferredResult;
|
||||||
import org.thingsboard.server.common.data.exception.ThingsboardException;
|
import org.thingsboard.server.common.data.exception.ThingsboardException;
|
||||||
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.page.PageData;
|
import org.thingsboard.server.common.data.page.PageData;
|
||||||
import org.thingsboard.server.common.data.query.AlarmData;
|
import org.thingsboard.server.common.data.query.AlarmData;
|
||||||
import org.thingsboard.server.common.data.query.AlarmDataQuery;
|
import org.thingsboard.server.common.data.query.AlarmDataQuery;
|
||||||
@ -38,6 +39,7 @@ import org.thingsboard.server.common.data.query.EntityDataPageLink;
|
|||||||
import org.thingsboard.server.common.data.query.EntityDataQuery;
|
import org.thingsboard.server.common.data.query.EntityDataQuery;
|
||||||
import org.thingsboard.server.queue.util.TbCoreComponent;
|
import org.thingsboard.server.queue.util.TbCoreComponent;
|
||||||
import org.thingsboard.server.service.query.EntityQueryService;
|
import org.thingsboard.server.service.query.EntityQueryService;
|
||||||
|
import org.thingsboard.server.service.security.permission.Operation;
|
||||||
|
|
||||||
import static org.thingsboard.server.controller.ControllerConstants.ALARM_DATA_QUERY_DESCRIPTION;
|
import static org.thingsboard.server.controller.ControllerConstants.ALARM_DATA_QUERY_DESCRIPTION;
|
||||||
import static org.thingsboard.server.controller.ControllerConstants.ENTITY_COUNT_QUERY_DESCRIPTION;
|
import static org.thingsboard.server.controller.ControllerConstants.ENTITY_COUNT_QUERY_DESCRIPTION;
|
||||||
@ -61,11 +63,7 @@ public class EntityQueryController extends BaseController {
|
|||||||
@ApiParam(value = "A JSON value representing the entity count query. See API call notes above for more details.")
|
@ApiParam(value = "A JSON value representing the entity count query. See API call notes above for more details.")
|
||||||
@RequestBody EntityCountQuery query) throws ThingsboardException {
|
@RequestBody EntityCountQuery query) throws ThingsboardException {
|
||||||
checkNotNull(query);
|
checkNotNull(query);
|
||||||
try {
|
return this.entityQueryService.countEntitiesByQuery(getCurrentUser(), query);
|
||||||
return this.entityQueryService.countEntitiesByQuery(getCurrentUser(), query);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw handleException(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "Find Entity Data by Query", notes = ENTITY_DATA_QUERY_DESCRIPTION)
|
@ApiOperation(value = "Find Entity Data by Query", notes = ENTITY_DATA_QUERY_DESCRIPTION)
|
||||||
@ -76,11 +74,7 @@ public class EntityQueryController extends BaseController {
|
|||||||
@ApiParam(value = "A JSON value representing the entity data query. See API call notes above for more details.")
|
@ApiParam(value = "A JSON value representing the entity data query. See API call notes above for more details.")
|
||||||
@RequestBody EntityDataQuery query) throws ThingsboardException {
|
@RequestBody EntityDataQuery query) throws ThingsboardException {
|
||||||
checkNotNull(query);
|
checkNotNull(query);
|
||||||
try {
|
return this.entityQueryService.findEntityDataByQuery(getCurrentUser(), query);
|
||||||
return this.entityQueryService.findEntityDataByQuery(getCurrentUser(), query);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw handleException(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "Find Alarms by Query", notes = ALARM_DATA_QUERY_DESCRIPTION)
|
@ApiOperation(value = "Find Alarms by Query", notes = ALARM_DATA_QUERY_DESCRIPTION)
|
||||||
@ -91,11 +85,12 @@ public class EntityQueryController extends BaseController {
|
|||||||
@ApiParam(value = "A JSON value representing the alarm data query. See API call notes above for more details.")
|
@ApiParam(value = "A JSON value representing the alarm data query. See API call notes above for more details.")
|
||||||
@RequestBody AlarmDataQuery query) throws ThingsboardException {
|
@RequestBody AlarmDataQuery query) throws ThingsboardException {
|
||||||
checkNotNull(query);
|
checkNotNull(query);
|
||||||
try {
|
checkNotNull(query.getPageLink());
|
||||||
return this.entityQueryService.findAlarmDataByQuery(getCurrentUser(), query);
|
UserId assigneeId = query.getPageLink().getAssigneeId();
|
||||||
} catch (Exception e) {
|
if (assigneeId != null) {
|
||||||
throw handleException(e);
|
checkUserId(assigneeId, Operation.READ);
|
||||||
}
|
}
|
||||||
|
return this.entityQueryService.findAlarmDataByQuery(getCurrentUser(), query);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "Find Entity Keys by Query",
|
@ApiOperation(value = "Find Entity Keys by Query",
|
||||||
@ -112,15 +107,11 @@ public class EntityQueryController extends BaseController {
|
|||||||
@RequestParam("attributes") boolean isAttributes) throws ThingsboardException {
|
@RequestParam("attributes") boolean isAttributes) throws ThingsboardException {
|
||||||
TenantId tenantId = getTenantId();
|
TenantId tenantId = getTenantId();
|
||||||
checkNotNull(query);
|
checkNotNull(query);
|
||||||
try {
|
EntityDataPageLink pageLink = query.getPageLink();
|
||||||
EntityDataPageLink pageLink = query.getPageLink();
|
if (pageLink.getPageSize() > MAX_PAGE_SIZE) {
|
||||||
if (pageLink.getPageSize() > MAX_PAGE_SIZE) {
|
pageLink.setPageSize(MAX_PAGE_SIZE);
|
||||||
pageLink.setPageSize(MAX_PAGE_SIZE);
|
|
||||||
}
|
|
||||||
return entityQueryService.getKeysByQuery(getCurrentUser(), tenantId, query, isTimeseries, isAttributes);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw handleException(e);
|
|
||||||
}
|
}
|
||||||
|
return entityQueryService.getKeysByQuery(getCurrentUser(), tenantId, query, isTimeseries, isAttributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,11 +20,13 @@ import io.swagger.annotations.ApiModelProperty;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import lombok.ToString;
|
||||||
import org.thingsboard.server.common.data.User;
|
import org.thingsboard.server.common.data.User;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
@ApiModel
|
@ApiModel
|
||||||
public class AlarmInfo extends Alarm {
|
public class AlarmInfo extends Alarm {
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.common.data.query;
|
package org.thingsboard.server.common.data.query;
|
||||||
|
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.thingsboard.server.common.data.alarm.Alarm;
|
import org.thingsboard.server.common.data.alarm.Alarm;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmInfo;
|
import org.thingsboard.server.common.data.alarm.AlarmInfo;
|
||||||
@ -24,8 +25,11 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class AlarmData extends AlarmInfo {
|
public class AlarmData extends AlarmInfo {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -7042457913823369638L;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final EntityId entityId;
|
private final EntityId entityId;
|
||||||
@Getter
|
@Getter
|
||||||
|
|||||||
@ -19,11 +19,10 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
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;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
import org.thingsboard.server.common.data.id.UserId;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -41,6 +40,7 @@ public class AlarmDataPageLink extends EntityDataPageLink {
|
|||||||
private List<AlarmSearchStatus> statusList;
|
private List<AlarmSearchStatus> statusList;
|
||||||
private List<AlarmSeverity> severityList;
|
private List<AlarmSeverity> severityList;
|
||||||
private boolean searchPropagatedAlarms;
|
private boolean searchPropagatedAlarms;
|
||||||
|
private UserId assigneeId;
|
||||||
|
|
||||||
public AlarmDataPageLink() {
|
public AlarmDataPageLink() {
|
||||||
super();
|
super();
|
||||||
@ -49,7 +49,8 @@ public class AlarmDataPageLink extends EntityDataPageLink {
|
|||||||
public AlarmDataPageLink(int pageSize, int page, String textSearch, EntityDataSortOrder sortOrder, boolean dynamic,
|
public AlarmDataPageLink(int pageSize, int page, String textSearch, EntityDataSortOrder sortOrder, boolean dynamic,
|
||||||
boolean searchPropagatedAlarms,
|
boolean searchPropagatedAlarms,
|
||||||
long startTs, long endTs, long timeWindow,
|
long startTs, long endTs, long timeWindow,
|
||||||
List<String> typeList, List<AlarmSearchStatus> statusList, List<AlarmSeverity> severityList) {
|
List<String> typeList, List<AlarmSearchStatus> statusList, List<AlarmSeverity> severityList,
|
||||||
|
UserId assigneeId) {
|
||||||
super(pageSize, page, textSearch, sortOrder, dynamic);
|
super(pageSize, page, textSearch, sortOrder, dynamic);
|
||||||
this.searchPropagatedAlarms = searchPropagatedAlarms;
|
this.searchPropagatedAlarms = searchPropagatedAlarms;
|
||||||
this.startTs = startTs;
|
this.startTs = startTs;
|
||||||
@ -58,6 +59,7 @@ public class AlarmDataPageLink extends EntityDataPageLink {
|
|||||||
this.typeList = typeList;
|
this.typeList = typeList;
|
||||||
this.statusList = statusList;
|
this.statusList = statusList;
|
||||||
this.severityList = severityList;
|
this.severityList = severityList;
|
||||||
|
this.assigneeId = assigneeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
@ -65,7 +67,8 @@ public class AlarmDataPageLink extends EntityDataPageLink {
|
|||||||
return new AlarmDataPageLink(this.getPageSize(), this.getPage() + 1, this.getTextSearch(), this.getSortOrder(), this.isDynamic(),
|
return new AlarmDataPageLink(this.getPageSize(), this.getPage() + 1, this.getTextSearch(), this.getSortOrder(), this.isDynamic(),
|
||||||
this.searchPropagatedAlarms,
|
this.searchPropagatedAlarms,
|
||||||
this.startTs, this.endTs, this.timeWindow,
|
this.startTs, this.endTs, this.timeWindow,
|
||||||
this.typeList, this.statusList, this.severityList
|
this.typeList, this.statusList, this.severityList,
|
||||||
|
this.assigneeId
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -122,7 +122,7 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
|
|||||||
if (alarm.getEndTs() == 0L) {
|
if (alarm.getEndTs() == 0L) {
|
||||||
alarm.setEndTs(alarm.getStartTs());
|
alarm.setEndTs(alarm.getStartTs());
|
||||||
}
|
}
|
||||||
alarm.setCustomerId(entityService.fetchEntityCustomerId(alarm.getTenantId(), alarm.getOriginator()).get());
|
alarm.setCustomerId(entityService.fetchEntityCustomerId(alarm.getTenantId(), alarm.getOriginator()).orElse(null));
|
||||||
if (alarm.getId() == null) {
|
if (alarm.getId() == null) {
|
||||||
Alarm existing = alarmDao.findLatestByOriginatorAndType(alarm.getTenantId(), alarm.getOriginator(), alarm.getType());
|
Alarm existing = alarmDao.findLatestByOriginatorAndType(alarm.getTenantId(), alarm.getOriginator(), alarm.getType());
|
||||||
if (existing == null || existing.getStatus().isCleared()) {
|
if (existing == null || existing.getStatus().isCleared()) {
|
||||||
@ -362,7 +362,7 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
|
|||||||
alarmInfo.setOriginatorName(
|
alarmInfo.setOriginatorName(
|
||||||
entityService.fetchEntityName(tenantId, alarmInfo.getOriginator()).orElse("Deleted"));
|
entityService.fetchEntityName(tenantId, alarmInfo.getOriginator()).orElse("Deleted"));
|
||||||
alarmInfo.setOriginatorLabel(
|
alarmInfo.setOriginatorLabel(
|
||||||
entityService.fetchEntityLabel(tenantId, alarmInfo.getOriginator()).orElse(null));
|
entityService.fetchEntityLabel(tenantId, alarmInfo.getOriginator()).orElse(alarmInfo.getOriginatorName()));
|
||||||
alarmFutures.add(Futures.immediateFuture(alarmInfo));
|
alarmFutures.add(Futures.immediateFuture(alarmInfo));
|
||||||
}
|
}
|
||||||
return Futures.transform(Futures.successfulAsList(alarmFutures),
|
return Futures.transform(Futures.successfulAsList(alarmFutures),
|
||||||
@ -466,7 +466,7 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
|
|||||||
String assigneeEmail = null;
|
String assigneeEmail = null;
|
||||||
|
|
||||||
originatorName = entityService.fetchEntityName(tenantId, alarm.getOriginator()).orElse("Deleted");
|
originatorName = entityService.fetchEntityName(tenantId, alarm.getOriginator()).orElse("Deleted");
|
||||||
originatorLabel = entityService.fetchEntityLabel(tenantId, alarm.getOriginator()).orElse(null);
|
originatorLabel = entityService.fetchEntityLabel(tenantId, alarm.getOriginator()).orElse(originatorName);
|
||||||
|
|
||||||
if (alarm.getAssigneeId() != null) {
|
if (alarm.getAssigneeId() != null) {
|
||||||
User assignedUser = userService.findUserById(tenantId, alarm.getAssigneeId());
|
User assignedUser = userService.findUserById(tenantId, alarm.getAssigneeId());
|
||||||
|
|||||||
@ -151,7 +151,7 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository {
|
|||||||
SELECT_ASSIGNEE_INFO + ", ";
|
SELECT_ASSIGNEE_INFO + ", ";
|
||||||
|
|
||||||
private static final String JOIN_ENTITY_ALARMS = "inner join entity_alarm ea on a.id = ea.alarm_id ";
|
private static final String JOIN_ENTITY_ALARMS = "inner join entity_alarm ea on a.id = ea.alarm_id ";
|
||||||
private static final String LEFT_JOIN_TB_USERS = "left join tb_user tbu on a.assignee_id = tbu.id ";
|
private static final String LEFT_JOIN_TB_USERS = "left join tb_user tbu on tbu.id = a.assignee_id ";
|
||||||
|
|
||||||
protected final NamedParameterJdbcTemplate jdbcTemplate;
|
protected final NamedParameterJdbcTemplate jdbcTemplate;
|
||||||
private final TransactionTemplate transactionTemplate;
|
private final TransactionTemplate transactionTemplate;
|
||||||
@ -281,6 +281,11 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pageLink.getAssigneeId() != null){
|
||||||
|
ctx.addUuidParameter("assigneeId", pageLink.getAssigneeId().getId());
|
||||||
|
wherePart.append(" a.assignee_id = :assigneeId");
|
||||||
|
}
|
||||||
|
|
||||||
String mainQuery = String.format("%s%s", selectPart, fromPart);
|
String mainQuery = String.format("%s%s", selectPart, fromPart);
|
||||||
if (textSearchQuery.isEmpty()) {
|
if (textSearchQuery.isEmpty()) {
|
||||||
mainQuery = String.format("%s%s%s", mainQuery, joinPart, wherePart);
|
mainQuery = String.format("%s%s%s", mainQuery, joinPart, wherePart);
|
||||||
|
|||||||
@ -35,6 +35,7 @@ import org.thingsboard.server.common.data.asset.Asset;
|
|||||||
import org.thingsboard.server.common.data.id.AssetId;
|
import org.thingsboard.server.common.data.id.AssetId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.page.PageData;
|
import org.thingsboard.server.common.data.page.PageData;
|
||||||
|
import org.thingsboard.server.common.data.page.PageLink;
|
||||||
import org.thingsboard.server.common.data.page.SortOrder;
|
import org.thingsboard.server.common.data.page.SortOrder;
|
||||||
import org.thingsboard.server.common.data.page.TimePageLink;
|
import org.thingsboard.server.common.data.page.TimePageLink;
|
||||||
import org.thingsboard.server.common.data.query.AlarmData;
|
import org.thingsboard.server.common.data.query.AlarmData;
|
||||||
@ -238,7 +239,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
.startTs(ts).build();
|
.startTs(ts).build();
|
||||||
|
|
||||||
AlarmOperationResult result = alarmService.createOrUpdateAlarm(alarm);
|
AlarmOperationResult result = alarmService.createOrUpdateAlarm(alarm);
|
||||||
Alarm created = new Alarm(result.getAlarmInfo());
|
AlarmInfo created = result.getAlarmInfo();
|
||||||
|
|
||||||
User tenantUser = new User();
|
User tenantUser = new User();
|
||||||
tenantUser.setTenantId(tenantId);
|
tenantUser.setTenantId(tenantId);
|
||||||
@ -262,6 +263,32 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
Assert.assertNotNull(alarms.getData());
|
Assert.assertNotNull(alarms.getData());
|
||||||
Assert.assertEquals(1, alarms.getData().size());
|
Assert.assertEquals(1, alarms.getData().size());
|
||||||
Assert.assertEquals(created, alarms.getData().get(0));
|
Assert.assertEquals(created, alarms.getData().get(0));
|
||||||
|
|
||||||
|
AlarmDataPageLink pageLink = new AlarmDataPageLink();
|
||||||
|
pageLink.setPage(0);
|
||||||
|
pageLink.setPageSize(10);
|
||||||
|
pageLink.setAssigneeId(tenantUser.getId());
|
||||||
|
|
||||||
|
PageData<AlarmData> assignedAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(created.getOriginator()));
|
||||||
|
Assert.assertNotNull(assignedAlarms.getData());
|
||||||
|
Assert.assertEquals(1, assignedAlarms.getData().size());
|
||||||
|
Assert.assertEquals(created, new AlarmInfo(assignedAlarms.getData().get(0)));
|
||||||
|
|
||||||
|
User tenantUser2 = new User();
|
||||||
|
tenantUser2.setTenantId(tenantId);
|
||||||
|
tenantUser2.setAuthority(Authority.TENANT_ADMIN);
|
||||||
|
tenantUser2.setEmail(2 + TEST_TENANT_EMAIL);
|
||||||
|
tenantUser2.setFirstName(TEST_TENANT_FIRST_NAME);
|
||||||
|
tenantUser2.setLastName(TEST_TENANT_LAST_NAME);
|
||||||
|
tenantUser2 = userService.saveUser(tenantUser2);
|
||||||
|
|
||||||
|
Assert.assertNotNull(tenantUser2);
|
||||||
|
pageLink.setAssigneeId(tenantUser2.getId());
|
||||||
|
|
||||||
|
PageData<AlarmData> assignedToNonExistingUserAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(created.getOriginator()));
|
||||||
|
Assert.assertNotNull(assignedToNonExistingUserAlarms.getData());
|
||||||
|
Assert.assertTrue(assignedToNonExistingUserAlarms.getData().isEmpty());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -301,7 +328,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
.severity(AlarmSeverity.CRITICAL).status(AlarmStatus.ACTIVE_UNACK)
|
.severity(AlarmSeverity.CRITICAL).status(AlarmStatus.ACTIVE_UNACK)
|
||||||
.startTs(ts).build();
|
.startTs(ts).build();
|
||||||
result = alarmService.createOrUpdateAlarm(deviceAlarm);
|
result = alarmService.createOrUpdateAlarm(deviceAlarm);
|
||||||
deviceAlarm = new Alarm(result.getAlarmInfo());
|
deviceAlarm = result.getAlarmInfo();
|
||||||
|
|
||||||
AlarmDataPageLink pageLink = new AlarmDataPageLink();
|
AlarmDataPageLink pageLink = new AlarmDataPageLink();
|
||||||
pageLink.setPage(0);
|
pageLink.setPage(0);
|
||||||
@ -319,7 +346,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
|
|
||||||
PageData<AlarmData> customerAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(customerDevice.getId()));
|
PageData<AlarmData> customerAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(customerDevice.getId()));
|
||||||
Assert.assertEquals(1, customerAlarms.getData().size());
|
Assert.assertEquals(1, customerAlarms.getData().size());
|
||||||
Assert.assertEquals(deviceAlarm, customerAlarms.getData().get(0));
|
Assert.assertEquals(deviceAlarm, new AlarmInfo(customerAlarms.getData().get(0)));
|
||||||
|
|
||||||
PageData<AlarmInfo> alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder()
|
PageData<AlarmInfo> alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder()
|
||||||
.affectedEntityId(tenantDevice.getId())
|
.affectedEntityId(tenantDevice.getId())
|
||||||
@ -393,7 +420,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
//TEST that propagated alarms are visible on the asset level.
|
//TEST that propagated alarms are visible on the asset level.
|
||||||
PageData<AlarmData> customerAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(customerAsset.getId()));
|
PageData<AlarmData> customerAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(customerAsset.getId()));
|
||||||
Assert.assertEquals(1, customerAlarms.getData().size());
|
Assert.assertEquals(1, customerAlarms.getData().size());
|
||||||
Assert.assertEquals(customerAlarm, customerAlarms.getData().get(0));
|
Assert.assertEquals(customerAlarm, new Alarm(customerAlarms.getData().get(0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -444,12 +471,12 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
//TEST that propagated alarms are visible on the asset level.
|
//TEST that propagated alarms are visible on the asset level.
|
||||||
PageData<AlarmData> tenantAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(tenantId));
|
PageData<AlarmData> tenantAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(tenantId));
|
||||||
Assert.assertEquals(1, tenantAlarms.getData().size());
|
Assert.assertEquals(1, tenantAlarms.getData().size());
|
||||||
Assert.assertEquals(tenantAlarm, tenantAlarms.getData().get(0));
|
Assert.assertEquals(tenantAlarm, new Alarm(tenantAlarms.getData().get(0)));
|
||||||
|
|
||||||
//TEST that propagated alarms are visible on the asset level.
|
//TEST that propagated alarms are visible on the asset level.
|
||||||
PageData<AlarmData> customerAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(customer.getId()));
|
PageData<AlarmData> customerAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(customer.getId()));
|
||||||
Assert.assertEquals(1, customerAlarms.getData().size());
|
Assert.assertEquals(1, customerAlarms.getData().size());
|
||||||
Assert.assertEquals(customerAlarm, customerAlarms.getData().get(0));
|
Assert.assertEquals(customerAlarm, new Alarm(customerAlarms.getData().get(0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private AlarmDataQuery toQuery(AlarmDataPageLink pageLink) {
|
private AlarmDataQuery toQuery(AlarmDataPageLink pageLink) {
|
||||||
@ -537,7 +564,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
.startTs(ts).build();
|
.startTs(ts).build();
|
||||||
|
|
||||||
AlarmOperationResult result = alarmService.createOrUpdateAlarm(alarm);
|
AlarmOperationResult result = alarmService.createOrUpdateAlarm(alarm);
|
||||||
Alarm created = new Alarm(result.getAlarmInfo());
|
AlarmInfo created = result.getAlarmInfo();
|
||||||
|
|
||||||
AlarmDataPageLink pageLink = new AlarmDataPageLink();
|
AlarmDataPageLink pageLink = new AlarmDataPageLink();
|
||||||
pageLink.setPage(0);
|
pageLink.setPage(0);
|
||||||
@ -554,7 +581,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
|
|
||||||
Assert.assertNotNull(alarms.getData());
|
Assert.assertNotNull(alarms.getData());
|
||||||
Assert.assertEquals(1, alarms.getData().size());
|
Assert.assertEquals(1, alarms.getData().size());
|
||||||
Assert.assertEquals(created, new Alarm(alarms.getData().get(0)));
|
Assert.assertEquals(created, new AlarmInfo(alarms.getData().get(0)));
|
||||||
|
|
||||||
pageLink.setPage(0);
|
pageLink.setPage(0);
|
||||||
pageLink.setPageSize(10);
|
pageLink.setPageSize(10);
|
||||||
@ -569,18 +596,18 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(childId));
|
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(childId));
|
||||||
Assert.assertNotNull(alarms.getData());
|
Assert.assertNotNull(alarms.getData());
|
||||||
Assert.assertEquals(1, alarms.getData().size());
|
Assert.assertEquals(1, alarms.getData().size());
|
||||||
Assert.assertEquals(created, new Alarm(alarms.getData().get(0)));
|
Assert.assertEquals(created, new AlarmInfo(alarms.getData().get(0)));
|
||||||
|
|
||||||
pageLink.setSearchPropagatedAlarms(true);
|
pageLink.setSearchPropagatedAlarms(true);
|
||||||
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(childId));
|
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(childId));
|
||||||
Assert.assertNotNull(alarms.getData());
|
Assert.assertNotNull(alarms.getData());
|
||||||
Assert.assertEquals(1, alarms.getData().size());
|
Assert.assertEquals(1, alarms.getData().size());
|
||||||
Assert.assertEquals(created, new Alarm(alarms.getData().get(0)));
|
Assert.assertEquals(created, new AlarmInfo(alarms.getData().get(0)));
|
||||||
|
|
||||||
// Check child relation
|
// Check child relation
|
||||||
created.setPropagate(true);
|
created.setPropagate(true);
|
||||||
result = alarmService.createOrUpdateAlarm(created);
|
result = alarmService.createOrUpdateAlarm(created);
|
||||||
created = new Alarm(result.getAlarmInfo());
|
created = result.getAlarmInfo();
|
||||||
|
|
||||||
// Check child relation
|
// Check child relation
|
||||||
pageLink.setPage(0);
|
pageLink.setPage(0);
|
||||||
@ -596,7 +623,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(childId));
|
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(childId));
|
||||||
Assert.assertNotNull(alarms.getData());
|
Assert.assertNotNull(alarms.getData());
|
||||||
Assert.assertEquals(1, alarms.getData().size());
|
Assert.assertEquals(1, alarms.getData().size());
|
||||||
Assert.assertEquals(created, new Alarm(alarms.getData().get(0)));
|
Assert.assertEquals(created, new AlarmInfo(alarms.getData().get(0)));
|
||||||
|
|
||||||
// Check parent relation
|
// Check parent relation
|
||||||
pageLink.setPage(0);
|
pageLink.setPage(0);
|
||||||
@ -612,10 +639,11 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(parentId));
|
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(parentId));
|
||||||
Assert.assertNotNull(alarms.getData());
|
Assert.assertNotNull(alarms.getData());
|
||||||
Assert.assertEquals(1, alarms.getData().size());
|
Assert.assertEquals(1, alarms.getData().size());
|
||||||
Assert.assertEquals(created, new Alarm(alarms.getData().get(0)));
|
Assert.assertEquals(created, new AlarmInfo(alarms.getData().get(0)));
|
||||||
|
|
||||||
PageData<AlarmInfo> alarmsInfoData = alarmService.findAlarms(tenantId, AlarmQuery.builder()
|
PageData<AlarmInfo> alarmsInfoData = alarmService.findAlarms(tenantId, AlarmQuery.builder()
|
||||||
.affectedEntityId(childId)
|
.affectedEntityId(childId)
|
||||||
|
.fetchOriginator(true)
|
||||||
.status(AlarmStatus.ACTIVE_UNACK).pageLink(
|
.status(AlarmStatus.ACTIVE_UNACK).pageLink(
|
||||||
new TimePageLink(10, 0, "",
|
new TimePageLink(10, 0, "",
|
||||||
new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis())
|
new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis())
|
||||||
@ -626,6 +654,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
|
|
||||||
alarmsInfoData = alarmService.findAlarms(tenantId, AlarmQuery.builder()
|
alarmsInfoData = alarmService.findAlarms(tenantId, AlarmQuery.builder()
|
||||||
.affectedEntityId(parentId)
|
.affectedEntityId(parentId)
|
||||||
|
.fetchOriginator(true)
|
||||||
.status(AlarmStatus.ACTIVE_UNACK).pageLink(
|
.status(AlarmStatus.ACTIVE_UNACK).pageLink(
|
||||||
new TimePageLink(10, 0, "",
|
new TimePageLink(10, 0, "",
|
||||||
new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis())
|
new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis())
|
||||||
@ -636,6 +665,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
|
|
||||||
alarmsInfoData = alarmService.findAlarms(tenantId, AlarmQuery.builder()
|
alarmsInfoData = alarmService.findAlarms(tenantId, AlarmQuery.builder()
|
||||||
.affectedEntityId(parentId2)
|
.affectedEntityId(parentId2)
|
||||||
|
.fetchOriginator(true)
|
||||||
.status(AlarmStatus.ACTIVE_UNACK).pageLink(
|
.status(AlarmStatus.ACTIVE_UNACK).pageLink(
|
||||||
new TimePageLink(10, 0, "",
|
new TimePageLink(10, 0, "",
|
||||||
new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis())
|
new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis())
|
||||||
@ -657,10 +687,9 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(parentId));
|
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(parentId));
|
||||||
Assert.assertNotNull(alarms.getData());
|
Assert.assertNotNull(alarms.getData());
|
||||||
Assert.assertEquals(1, alarms.getData().size());
|
Assert.assertEquals(1, alarms.getData().size());
|
||||||
Assert.assertEquals(created, new Alarm(alarms.getData().get(0)));
|
Assert.assertEquals(created, new AlarmInfo(alarms.getData().get(0)));
|
||||||
|
|
||||||
alarmService.ackAlarm(tenantId, created.getId(), System.currentTimeMillis()).get();
|
created = alarmService.ackAlarm(tenantId, created.getId(), System.currentTimeMillis()).get().getAlarmInfo();
|
||||||
created = alarmService.findAlarmByIdAsync(tenantId, created.getId()).get();
|
|
||||||
|
|
||||||
pageLink.setPage(0);
|
pageLink.setPage(0);
|
||||||
pageLink.setPageSize(10);
|
pageLink.setPageSize(10);
|
||||||
@ -675,7 +704,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(childId));
|
alarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(childId));
|
||||||
Assert.assertNotNull(alarms.getData());
|
Assert.assertNotNull(alarms.getData());
|
||||||
Assert.assertEquals(1, alarms.getData().size());
|
Assert.assertEquals(1, alarms.getData().size());
|
||||||
Assert.assertEquals(created, new Alarm(alarms.getData().get(0)));
|
Assert.assertEquals(created, new AlarmInfo(alarms.getData().get(0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user