Merge branch 'feature/swagger-alarm-controller' of https://github.com/ShvaykaD/thingsboard into feature/swagger
This commit is contained in:
commit
2fea8570b7
@ -15,8 +15,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.controller;
|
package org.thingsboard.server.controller;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@ -55,11 +58,25 @@ import java.util.List;
|
|||||||
public class AlarmController extends BaseController {
|
public class AlarmController extends BaseController {
|
||||||
|
|
||||||
public static final String ALARM_ID = "alarmId";
|
public static final String ALARM_ID = "alarmId";
|
||||||
|
private static final String ALARM_SECURITY_CHECK = "If the user has the authority of 'Tenant Administrator', the server checks that the alarm is owned by the same tenant. " +
|
||||||
|
"If the user has the authority of 'Customer User', the server checks that the alarm belongs to the customer. ";
|
||||||
|
private static final String ALARM_QUERY_SEARCH_STATUS_DESCRIPTION = "A string value representing one of the AlarmSearchStatus enumeration value";
|
||||||
|
private static final String ALARM_QUERY_SEARCH_STATUS_ALLOWABLE_VALUES = "ANY, ACTIVE, CLEARED, ACK, UNACK";
|
||||||
|
private static final String ALARM_QUERY_STATUS_DESCRIPTION = "A string value representing one of the AlarmStatus enumeration value";
|
||||||
|
private static final String ALARM_QUERY_STATUS_ALLOWABLE_VALUES = "ACTIVE_UNACK, ACTIVE_ACK, CLEARED_UNACK, CLEARED_ACK";
|
||||||
|
private static final String ALARM_QUERY_TEXT_SEARCH_DESCRIPTION = "The case insensitive 'startsWith' filter based on of next alarm fields: type, severity or status";
|
||||||
|
private static final String ALARM_QUERY_START_TIME_DESCRIPTION = "The start timestamp(milliseconds) of the search time range over the alarm object field: 'createdTime'.";
|
||||||
|
private static final String ALARM_QUERY_END_TIME_DESCRIPTION = "The end timestamp(milliseconds) of the search time range over the alarm object field: 'createdTime'.";
|
||||||
|
private static final String ALARM_QUERY_FETCH_ORIGINATOR_DESCRIPTION = "A boolean value to specify if the alarm originator name will be " +
|
||||||
|
"filled in the AlarmInfo object field: 'originatorName' or will returns as null.";
|
||||||
|
|
||||||
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
|
@ApiOperation(value = "Get Alarm (getAlarmById)",
|
||||||
|
notes = "Fetch the Alarm object based on the provided Alarm Id. " + ALARM_SECURITY_CHECK, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
|
||||||
@RequestMapping(value = "/alarm/{alarmId}", method = RequestMethod.GET)
|
@RequestMapping(value = "/alarm/{alarmId}", method = RequestMethod.GET)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public Alarm getAlarmById(@PathVariable(ALARM_ID) String strAlarmId) throws ThingsboardException {
|
public Alarm getAlarmById(@ApiParam(value = ALARM_ID_PARAM_DESCRIPTION)
|
||||||
|
@PathVariable(ALARM_ID) String strAlarmId) throws ThingsboardException {
|
||||||
checkParameter(ALARM_ID, strAlarmId);
|
checkParameter(ALARM_ID, strAlarmId);
|
||||||
try {
|
try {
|
||||||
AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
|
AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
|
||||||
@ -69,10 +86,14 @@ public class AlarmController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
|
@ApiOperation(value = "Get Alarm Info (getAlarmInfoById)",
|
||||||
|
notes = "Fetch the Alarm Info object based on the provided Alarm Id. " +
|
||||||
|
ALARM_SECURITY_CHECK + ALARM_INFO_DESCRIPTION, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
|
||||||
@RequestMapping(value = "/alarm/info/{alarmId}", method = RequestMethod.GET)
|
@RequestMapping(value = "/alarm/info/{alarmId}", method = RequestMethod.GET)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AlarmInfo getAlarmInfoById(@PathVariable(ALARM_ID) String strAlarmId) throws ThingsboardException {
|
public AlarmInfo getAlarmInfoById(@ApiParam(value = ALARM_ID_PARAM_DESCRIPTION)
|
||||||
|
@PathVariable(ALARM_ID) String strAlarmId) throws ThingsboardException {
|
||||||
checkParameter(ALARM_ID, strAlarmId);
|
checkParameter(ALARM_ID, strAlarmId);
|
||||||
try {
|
try {
|
||||||
AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
|
AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
|
||||||
@ -82,10 +103,14 @@ public class AlarmController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
|
@ApiOperation(value = "Create or update Alarm (saveAlarm)",
|
||||||
|
notes = "Creates or Updates the Alarm. Platform generates random Alarm Id during alarm creation. " +
|
||||||
|
"The Alarm Id will be present in the response. Specify the Alarm Id when you would like to update the Alarm. " +
|
||||||
|
"Referencing non-existing Alarm Id will cause an error.", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
|
||||||
@RequestMapping(value = "/alarm", method = RequestMethod.POST)
|
@RequestMapping(value = "/alarm", method = RequestMethod.POST)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public Alarm saveAlarm(@RequestBody Alarm alarm) throws ThingsboardException {
|
public Alarm saveAlarm(@ApiParam(value = "A JSON value representing the alarm.") @RequestBody Alarm alarm) throws ThingsboardException {
|
||||||
try {
|
try {
|
||||||
alarm.setTenantId(getCurrentUser().getTenantId());
|
alarm.setTenantId(getCurrentUser().getTenantId());
|
||||||
|
|
||||||
@ -106,10 +131,12 @@ public class AlarmController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
|
@ApiOperation(value = "Delete Alarm (deleteAlarm)",
|
||||||
|
notes = "Deletes the Alarm. Referencing non-existing Alarm Id will cause an error.", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
|
||||||
@RequestMapping(value = "/alarm/{alarmId}", method = RequestMethod.DELETE)
|
@RequestMapping(value = "/alarm/{alarmId}", method = RequestMethod.DELETE)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public Boolean deleteAlarm(@PathVariable(ALARM_ID) String strAlarmId) throws ThingsboardException {
|
public Boolean deleteAlarm(@ApiParam(value = ALARM_ID_PARAM_DESCRIPTION) @PathVariable(ALARM_ID) String strAlarmId) throws ThingsboardException {
|
||||||
checkParameter(ALARM_ID, strAlarmId);
|
checkParameter(ALARM_ID, strAlarmId);
|
||||||
try {
|
try {
|
||||||
AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
|
AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
|
||||||
@ -124,15 +151,17 @@ public class AlarmController extends BaseController {
|
|||||||
sendAlarmDeleteNotificationMsg(getTenantId(), alarmId, relatedEdgeIds, alarm);
|
sendAlarmDeleteNotificationMsg(getTenantId(), alarmId, relatedEdgeIds, alarm);
|
||||||
|
|
||||||
return alarmService.deleteAlarm(getTenantId(), alarmId);
|
return alarmService.deleteAlarm(getTenantId(), alarmId);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw handleException(e);
|
throw handleException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
|
@ApiOperation(value = "Acknowledge Alarm (ackAlarm)",
|
||||||
|
notes = "Acknowledge the Alarm. Referencing non-existing Alarm Id will cause an error.", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
|
||||||
@RequestMapping(value = "/alarm/{alarmId}/ack", method = RequestMethod.POST)
|
@RequestMapping(value = "/alarm/{alarmId}/ack", method = RequestMethod.POST)
|
||||||
@ResponseStatus(value = HttpStatus.OK)
|
@ResponseStatus(value = HttpStatus.OK)
|
||||||
public void ackAlarm(@PathVariable(ALARM_ID) String strAlarmId) throws ThingsboardException {
|
public void ackAlarm(@ApiParam(value = ALARM_ID_PARAM_DESCRIPTION) @PathVariable(ALARM_ID) String strAlarmId) throws ThingsboardException {
|
||||||
checkParameter(ALARM_ID, strAlarmId);
|
checkParameter(ALARM_ID, strAlarmId);
|
||||||
try {
|
try {
|
||||||
AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
|
AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
|
||||||
@ -149,10 +178,12 @@ public class AlarmController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
|
@ApiOperation(value = "Clear Alarm (clearAlarm)",
|
||||||
|
notes = "Clear the Alarm. Referencing non-existing Alarm Id will cause an error.", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
|
||||||
@RequestMapping(value = "/alarm/{alarmId}/clear", method = RequestMethod.POST)
|
@RequestMapping(value = "/alarm/{alarmId}/clear", method = RequestMethod.POST)
|
||||||
@ResponseStatus(value = HttpStatus.OK)
|
@ResponseStatus(value = HttpStatus.OK)
|
||||||
public void clearAlarm(@PathVariable(ALARM_ID) String strAlarmId) throws ThingsboardException {
|
public void clearAlarm(@ApiParam(value = ALARM_ID_PARAM_DESCRIPTION) @PathVariable(ALARM_ID) String strAlarmId) throws ThingsboardException {
|
||||||
checkParameter(ALARM_ID, strAlarmId);
|
checkParameter(ALARM_ID, strAlarmId);
|
||||||
try {
|
try {
|
||||||
AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
|
AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
|
||||||
@ -169,21 +200,36 @@ public class AlarmController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "Get Alarms (getAlarms)",
|
||||||
|
notes = "Returns a page of alarms for the selected entity. Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. " +
|
||||||
|
PAGE_DATA_PARAMETERS, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
|
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
|
||||||
@RequestMapping(value = "/alarm/{entityType}/{entityId}", method = RequestMethod.GET)
|
@RequestMapping(value = "/alarm/{entityType}/{entityId}", method = RequestMethod.GET)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public PageData<AlarmInfo> getAlarms(
|
public PageData<AlarmInfo> getAlarms(
|
||||||
|
@ApiParam(value = ENTITY_TYPE_DESCRIPTION)
|
||||||
@PathVariable("entityType") String strEntityType,
|
@PathVariable("entityType") String strEntityType,
|
||||||
|
@ApiParam(value = ENTITY_ID_DESCRIPTION)
|
||||||
@PathVariable("entityId") String strEntityId,
|
@PathVariable("entityId") String strEntityId,
|
||||||
|
@ApiParam(value = ALARM_QUERY_SEARCH_STATUS_DESCRIPTION, allowableValues = ALARM_QUERY_SEARCH_STATUS_ALLOWABLE_VALUES)
|
||||||
@RequestParam(required = false) String searchStatus,
|
@RequestParam(required = false) String searchStatus,
|
||||||
|
@ApiParam(value = ALARM_QUERY_STATUS_DESCRIPTION, allowableValues = ALARM_QUERY_STATUS_ALLOWABLE_VALUES)
|
||||||
@RequestParam(required = false) String status,
|
@RequestParam(required = false) String status,
|
||||||
|
@ApiParam(value = PAGE_SIZE_DESCRIPTION)
|
||||||
@RequestParam int pageSize,
|
@RequestParam int pageSize,
|
||||||
|
@ApiParam(value = PAGE_NUMBER_DESCRIPTION)
|
||||||
@RequestParam int page,
|
@RequestParam int page,
|
||||||
|
@ApiParam(value = ALARM_QUERY_TEXT_SEARCH_DESCRIPTION)
|
||||||
@RequestParam(required = false) String textSearch,
|
@RequestParam(required = false) String textSearch,
|
||||||
|
@ApiParam(value = SORT_PROPERTY_DESCRIPTION, allowableValues = SORT_PROPERTY_ALLOWABLE_VALUES)
|
||||||
@RequestParam(required = false) String sortProperty,
|
@RequestParam(required = false) String sortProperty,
|
||||||
|
@ApiParam(value = SORT_ORDER_DESCRIPTION, allowableValues = SORT_ORDER_ALLOWABLE_VALUES)
|
||||||
@RequestParam(required = false) String sortOrder,
|
@RequestParam(required = false) String sortOrder,
|
||||||
|
@ApiParam(value = ALARM_QUERY_START_TIME_DESCRIPTION)
|
||||||
@RequestParam(required = false) Long startTime,
|
@RequestParam(required = false) Long startTime,
|
||||||
|
@ApiParam(value = ALARM_QUERY_END_TIME_DESCRIPTION)
|
||||||
@RequestParam(required = false) Long endTime,
|
@RequestParam(required = false) Long endTime,
|
||||||
|
@ApiParam(value = ALARM_QUERY_FETCH_ORIGINATOR_DESCRIPTION)
|
||||||
@RequestParam(required = false) Boolean fetchOriginator
|
@RequestParam(required = false) Boolean fetchOriginator
|
||||||
) throws ThingsboardException {
|
) throws ThingsboardException {
|
||||||
checkParameter("EntityId", strEntityId);
|
checkParameter("EntityId", strEntityId);
|
||||||
@ -204,20 +250,35 @@ public class AlarmController extends BaseController {
|
|||||||
throw handleException(e);
|
throw handleException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ApiOperation(value = "Get All Alarms (getAllAlarms)",
|
||||||
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
|
notes = "Returns a page of alarms that belongs to the current user owner. " +
|
||||||
|
"If the user has the authority of 'Tenant Administrator', the server returns alarms that belongs to the tenant of current user. " +
|
||||||
|
"If the user has the authority of 'Customer User', the server returns alarms that belongs to the customer of current user. " +
|
||||||
|
"Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. " +
|
||||||
|
PAGE_DATA_PARAMETERS, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
|
||||||
@RequestMapping(value = "/alarms", method = RequestMethod.GET)
|
@RequestMapping(value = "/alarms", method = RequestMethod.GET)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public PageData<AlarmInfo> getAllAlarms(
|
public PageData<AlarmInfo> getAllAlarms(
|
||||||
|
@ApiParam(value = ALARM_QUERY_SEARCH_STATUS_DESCRIPTION, allowableValues = ALARM_QUERY_SEARCH_STATUS_ALLOWABLE_VALUES)
|
||||||
@RequestParam(required = false) String searchStatus,
|
@RequestParam(required = false) String searchStatus,
|
||||||
|
@ApiParam(value = ALARM_QUERY_STATUS_DESCRIPTION, allowableValues = ALARM_QUERY_STATUS_ALLOWABLE_VALUES)
|
||||||
@RequestParam(required = false) String status,
|
@RequestParam(required = false) String status,
|
||||||
|
@ApiParam(value = PAGE_SIZE_DESCRIPTION)
|
||||||
@RequestParam int pageSize,
|
@RequestParam int pageSize,
|
||||||
|
@ApiParam(value = PAGE_NUMBER_DESCRIPTION)
|
||||||
@RequestParam int page,
|
@RequestParam int page,
|
||||||
|
@ApiParam(value = ALARM_QUERY_TEXT_SEARCH_DESCRIPTION)
|
||||||
@RequestParam(required = false) String textSearch,
|
@RequestParam(required = false) String textSearch,
|
||||||
|
@ApiParam(value = SORT_PROPERTY_DESCRIPTION, allowableValues = SORT_PROPERTY_ALLOWABLE_VALUES)
|
||||||
@RequestParam(required = false) String sortProperty,
|
@RequestParam(required = false) String sortProperty,
|
||||||
|
@ApiParam(value = SORT_ORDER_DESCRIPTION, allowableValues = SORT_ORDER_ALLOWABLE_VALUES)
|
||||||
@RequestParam(required = false) String sortOrder,
|
@RequestParam(required = false) String sortOrder,
|
||||||
|
@ApiParam(value = ALARM_QUERY_START_TIME_DESCRIPTION)
|
||||||
@RequestParam(required = false) Long startTime,
|
@RequestParam(required = false) Long startTime,
|
||||||
|
@ApiParam(value = ALARM_QUERY_END_TIME_DESCRIPTION)
|
||||||
@RequestParam(required = false) Long endTime,
|
@RequestParam(required = false) Long endTime,
|
||||||
|
@ApiParam(value = ALARM_QUERY_FETCH_ORIGINATOR_DESCRIPTION)
|
||||||
@RequestParam(required = false) Boolean fetchOriginator
|
@RequestParam(required = false) Boolean fetchOriginator
|
||||||
) throws ThingsboardException {
|
) throws ThingsboardException {
|
||||||
AlarmSearchStatus alarmSearchStatus = StringUtils.isEmpty(searchStatus) ? null : AlarmSearchStatus.valueOf(searchStatus);
|
AlarmSearchStatus alarmSearchStatus = StringUtils.isEmpty(searchStatus) ? null : AlarmSearchStatus.valueOf(searchStatus);
|
||||||
@ -239,13 +300,19 @@ public class AlarmController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
|
@ApiOperation(value = "Get Highest Alarm Severity (getHighestAlarmSeverity)",
|
||||||
|
notes = "Returns highest AlarmSeverity object for the selected entity.", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
|
||||||
@RequestMapping(value = "/alarm/highestSeverity/{entityType}/{entityId}", method = RequestMethod.GET)
|
@RequestMapping(value = "/alarm/highestSeverity/{entityType}/{entityId}", method = RequestMethod.GET)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AlarmSeverity getHighestAlarmSeverity(
|
public AlarmSeverity getHighestAlarmSeverity(
|
||||||
|
@ApiParam(value = ENTITY_TYPE_DESCRIPTION)
|
||||||
@PathVariable("entityType") String strEntityType,
|
@PathVariable("entityType") String strEntityType,
|
||||||
|
@ApiParam(value = ENTITY_ID_DESCRIPTION)
|
||||||
@PathVariable("entityId") String strEntityId,
|
@PathVariable("entityId") String strEntityId,
|
||||||
|
@ApiParam(value = ALARM_QUERY_SEARCH_STATUS_DESCRIPTION, allowableValues = ALARM_QUERY_SEARCH_STATUS_ALLOWABLE_VALUES)
|
||||||
@RequestParam(required = false) String searchStatus,
|
@RequestParam(required = false) String searchStatus,
|
||||||
|
@ApiParam(value = ALARM_QUERY_STATUS_DESCRIPTION, allowableValues = ALARM_QUERY_STATUS_ALLOWABLE_VALUES)
|
||||||
@RequestParam(required = false) String status
|
@RequestParam(required = false) String status
|
||||||
) throws ThingsboardException {
|
) throws ThingsboardException {
|
||||||
checkParameter("EntityId", strEntityId);
|
checkParameter("EntityId", strEntityId);
|
||||||
|
|||||||
@ -168,7 +168,7 @@ public abstract class BaseController {
|
|||||||
public static final String EDGE_ID_PARAM_DESCRIPTION = "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'";
|
public static final String EDGE_ID_PARAM_DESCRIPTION = "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'";
|
||||||
public static final String CUSTOMER_ID_PARAM_DESCRIPTION = "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'";
|
public static final String CUSTOMER_ID_PARAM_DESCRIPTION = "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'";
|
||||||
public static final String ASSET_ID_PARAM_DESCRIPTION = "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'";
|
public static final String ASSET_ID_PARAM_DESCRIPTION = "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'";
|
||||||
|
public static final String ALARM_ID_PARAM_DESCRIPTION = "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'";
|
||||||
|
|
||||||
protected final String PAGE_SIZE_DESCRIPTION = "Maximum amount of entities in a one page";
|
protected final String PAGE_SIZE_DESCRIPTION = "Maximum amount of entities in a one page";
|
||||||
protected final String PAGE_NUMBER_DESCRIPTION = "Sequence number of page starting from 0";
|
protected final String PAGE_NUMBER_DESCRIPTION = "Sequence number of page starting from 0";
|
||||||
@ -188,11 +188,15 @@ public abstract class BaseController {
|
|||||||
protected final String SORT_ORDER_ALLOWABLE_VALUES = "ASC, DESC";
|
protected final String SORT_ORDER_ALLOWABLE_VALUES = "ASC, DESC";
|
||||||
protected final String DEVICE_INFO_DESCRIPTION = "Device Info is an extension of the default Device object that contains information about the assigned customer name and device profile name. ";
|
protected final String DEVICE_INFO_DESCRIPTION = "Device Info is an extension of the default Device object that contains information about the assigned customer name and device profile name. ";
|
||||||
protected final String ASSET_INFO_DESCRIPTION = "Asset Info is an extension of the default Asset object that contains information about the assigned customer name. ";
|
protected final String ASSET_INFO_DESCRIPTION = "Asset Info is an extension of the default Asset object that contains information about the assigned customer name. ";
|
||||||
|
protected final String ALARM_INFO_DESCRIPTION = "Alarm Info is an extension of the default Alarm object that contains information about alarm originator name.";
|
||||||
|
|
||||||
|
|
||||||
protected final String DEVICE_NAME_DESCRIPTION = "A string value representing the Device name.";
|
protected final String DEVICE_NAME_DESCRIPTION = "A string value representing the Device name.";
|
||||||
protected final String ASSET_NAME_DESCRIPTION = "A string value representing the Asset name.";
|
protected final String ASSET_NAME_DESCRIPTION = "A string value representing the Asset name.";
|
||||||
|
|
||||||
|
protected static final String ENTITY_TYPE_DESCRIPTION = "A string value representing the entity type. For example, 'DEVICE'";
|
||||||
|
protected static final String ENTITY_ID_DESCRIPTION = "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'";
|
||||||
|
|
||||||
public static final String INCORRECT_TENANT_ID = "Incorrect tenantId ";
|
public static final String INCORRECT_TENANT_ID = "Incorrect tenantId ";
|
||||||
protected static final String DEFAULT_DASHBOARD = "defaultDashboardId";
|
protected static final String DEFAULT_DASHBOARD = "defaultDashboardId";
|
||||||
protected static final String HOME_DASHBOARD = "homeDashboardId";
|
protected static final String HOME_DASHBOARD = "homeDashboardId";
|
||||||
|
|||||||
@ -17,6 +17,7 @@ package org.thingsboard.server.common.data.alarm;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -39,18 +40,35 @@ import java.util.List;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class Alarm extends BaseData<AlarmId> implements HasName, HasTenantId, HasCustomerId {
|
public class Alarm extends BaseData<AlarmId> implements HasName, HasTenantId, HasCustomerId {
|
||||||
|
|
||||||
|
@ApiModelProperty(position = 3, value = "JSON object with Tenant Id", readOnly = true)
|
||||||
private TenantId tenantId;
|
private TenantId tenantId;
|
||||||
|
|
||||||
|
@ApiModelProperty(position = 4, value = "JSON object with Customer Id", readOnly = true)
|
||||||
private CustomerId customerId;
|
private CustomerId customerId;
|
||||||
|
|
||||||
|
@ApiModelProperty(position = 6, required = true, value = "representing type of the Alarm", example = "High Temperature Alarm")
|
||||||
private String type;
|
private String type;
|
||||||
|
@ApiModelProperty(position = 7, required = true, value = "JSON object with alarm originator id")
|
||||||
private EntityId originator;
|
private EntityId originator;
|
||||||
|
@ApiModelProperty(position = 8, required = true, value = "Alarm severity", example = "CRITICAL")
|
||||||
private AlarmSeverity severity;
|
private AlarmSeverity severity;
|
||||||
|
@ApiModelProperty(position = 9, required = true, value = "Alarm status", example = "CLEARED_UNACK")
|
||||||
private AlarmStatus status;
|
private AlarmStatus status;
|
||||||
|
@ApiModelProperty(position = 10, value = "Timestamp of the alarm start time, in milliseconds", example = "1634058704565")
|
||||||
private long startTs;
|
private long startTs;
|
||||||
|
@ApiModelProperty(position = 11, value = "Timestamp of the alarm end time(last time update), in milliseconds", example = "1634111163522")
|
||||||
private long endTs;
|
private long endTs;
|
||||||
|
@ApiModelProperty(position = 12, value = "Timestamp of the alarm acknowledgement, in milliseconds", example = "1634115221948")
|
||||||
private long ackTs;
|
private long ackTs;
|
||||||
|
@ApiModelProperty(position = 13, value = "Timestamp of the alarm clearing, in milliseconds", example = "1634114528465")
|
||||||
private long clearTs;
|
private long clearTs;
|
||||||
|
@ApiModelProperty(position = 14, value = "JSON object with alarm details")
|
||||||
private transient JsonNode details;
|
private transient JsonNode details;
|
||||||
|
@ApiModelProperty(position = 15, value = "Propagation flag to specify if alarm should be propagated to parent entities of alarm originator", example = "true")
|
||||||
private boolean propagate;
|
private boolean propagate;
|
||||||
|
@ApiModelProperty(position = 16, value = "JSON array of relation types that should be used for propagation. " +
|
||||||
|
"By default, 'propagateRelationTypes' array is empty which means that the alarm will propagate based on any relation type to parent entities. " +
|
||||||
|
"This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will ignoned.")
|
||||||
private List<String> propagateRelationTypes;
|
private List<String> propagateRelationTypes;
|
||||||
|
|
||||||
public Alarm() {
|
public Alarm() {
|
||||||
@ -81,7 +99,25 @@ public class Alarm extends BaseData<AlarmId> implements HasName, HasTenantId, Ha
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
|
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
|
||||||
|
@ApiModelProperty(position = 5, required = true, value = "representing type of the Alarm", example = "High Temperature Alarm")
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiModelProperty(position = 1, value = "JSON object with the alarm Id. " +
|
||||||
|
"Specify this field to update the alarm. " +
|
||||||
|
"Referencing non-existing alarm Id will cause error. " +
|
||||||
|
"Omit this field to create new alarm." )
|
||||||
|
@Override
|
||||||
|
public AlarmId getId() {
|
||||||
|
return super.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ApiModelProperty(position = 2, value = "Timestamp of the alarm creation, in milliseconds", example = "1634058704567", readOnly = true)
|
||||||
|
@Override
|
||||||
|
public long getCreatedTime() {
|
||||||
|
return super.getCreatedTime();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,10 +15,13 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.common.data.alarm;
|
package org.thingsboard.server.common.data.alarm;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
public class AlarmInfo extends Alarm {
|
public class AlarmInfo extends Alarm {
|
||||||
|
|
||||||
private static final long serialVersionUID = 2807343093519543363L;
|
private static final long serialVersionUID = 2807343093519543363L;
|
||||||
|
|
||||||
|
@ApiModelProperty(position = 17, value = "Alarm originator name", example = "Thermostat")
|
||||||
private String originatorName;
|
private String originatorName;
|
||||||
|
|
||||||
public AlarmInfo() {
|
public AlarmInfo() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user