Remove NotificationOriginatorType, use EntityType; refactor NotificationInfo
This commit is contained in:
parent
38c9d5dcd8
commit
7524dd9258
@ -52,14 +52,13 @@ CREATE TABLE IF NOT EXISTS notification_request (
|
|||||||
template_id UUID NOT NULL,
|
template_id UUID NOT NULL,
|
||||||
info VARCHAR(1000),
|
info VARCHAR(1000),
|
||||||
additional_config VARCHAR(1000),
|
additional_config VARCHAR(1000),
|
||||||
originator_type VARCHAR(32) NOT NULL,
|
|
||||||
originator_entity_id UUID,
|
originator_entity_id UUID,
|
||||||
originator_entity_type VARCHAR(32),
|
originator_entity_type VARCHAR(32),
|
||||||
rule_id UUID NULL,
|
rule_id UUID NULL,
|
||||||
status VARCHAR(32),
|
status VARCHAR(32),
|
||||||
stats VARCHAR(10000)
|
stats VARCHAR(10000)
|
||||||
);
|
);
|
||||||
CREATE INDEX IF NOT EXISTS idx_notification_request_tenant_id_originator_type_created_time ON notification_request(tenant_id, originator_type, created_time DESC);
|
CREATE INDEX IF NOT EXISTS idx_notification_request_tenant_id_originator_type_created_time ON notification_request(tenant_id, originator_entity_type, created_time DESC);
|
||||||
CREATE INDEX IF NOT EXISTS idx_notification_request_rule_id_originator_entity_id ON notification_request(rule_id, originator_entity_id);
|
CREATE INDEX IF NOT EXISTS idx_notification_request_rule_id_originator_entity_id ON notification_request(rule_id, originator_entity_id);
|
||||||
CREATE INDEX IF NOT EXISTS idx_notification_request_status ON notification_request(status);
|
CREATE INDEX IF NOT EXISTS idx_notification_request_status ON notification_request(status);
|
||||||
|
|
||||||
@ -72,7 +71,6 @@ CREATE TABLE IF NOT EXISTS notification (
|
|||||||
subject VARCHAR(255),
|
subject VARCHAR(255),
|
||||||
text VARCHAR(1000) NOT NULL,
|
text VARCHAR(1000) NOT NULL,
|
||||||
info VARCHAR(1000),
|
info VARCHAR(1000),
|
||||||
originator_type VARCHAR(32) NOT NULL,
|
|
||||||
status VARCHAR(32)
|
status VARCHAR(32)
|
||||||
) PARTITION BY RANGE (created_time);
|
) PARTITION BY RANGE (created_time);
|
||||||
CREATE INDEX IF NOT EXISTS idx_notification_id_recipient_id ON notification(id, recipient_id);
|
CREATE INDEX IF NOT EXISTS idx_notification_id_recipient_id ON notification(id, recipient_id);
|
||||||
|
|||||||
@ -35,7 +35,6 @@ import org.thingsboard.server.common.data.id.NotificationId;
|
|||||||
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.notification.Notification;
|
import org.thingsboard.server.common.data.notification.Notification;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.settings.NotificationSettings;
|
import org.thingsboard.server.common.data.notification.settings.NotificationSettings;
|
||||||
import org.thingsboard.server.common.data.page.PageData;
|
import org.thingsboard.server.common.data.page.PageData;
|
||||||
@ -102,9 +101,8 @@ public class NotificationController extends BaseController {
|
|||||||
notificationRequest.setTenantId(user.getTenantId());
|
notificationRequest.setTenantId(user.getTenantId());
|
||||||
checkEntity(notificationRequest.getId(), notificationRequest, Resource.NOTIFICATION_REQUEST);
|
checkEntity(notificationRequest.getId(), notificationRequest, Resource.NOTIFICATION_REQUEST);
|
||||||
|
|
||||||
notificationRequest.setOriginatorType(NotificationOriginatorType.ADMIN);
|
|
||||||
notificationRequest.setOriginatorEntityId(user.getId());
|
notificationRequest.setOriginatorEntityId(user.getId());
|
||||||
if (notificationRequest.getInfo() != null && notificationRequest.getInfo().getOriginatorType() != null) {
|
if (notificationRequest.getInfo() != null && notificationRequest.getInfo().getOriginatorType() != EntityType.USER) {
|
||||||
throw new IllegalArgumentException("Unsupported notification info type");
|
throw new IllegalArgumentException("Unsupported notification info type");
|
||||||
}
|
}
|
||||||
notificationRequest.setRuleId(null);
|
notificationRequest.setRuleId(null);
|
||||||
@ -130,7 +128,7 @@ public class NotificationController extends BaseController {
|
|||||||
@RequestParam(required = false) String sortOrder,
|
@RequestParam(required = false) String sortOrder,
|
||||||
@AuthenticationPrincipal SecurityUser user) throws ThingsboardException {
|
@AuthenticationPrincipal SecurityUser user) throws ThingsboardException {
|
||||||
PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder);
|
PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder);
|
||||||
return notificationRequestService.findNotificationRequestsByTenantIdAndOriginatorType(user.getTenantId(), NotificationOriginatorType.ADMIN, pageLink);
|
return notificationRequestService.findNotificationRequestsByTenantIdAndOriginatorType(user.getTenantId(), EntityType.USER, pageLink);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping("/notification/request/{id}")
|
@DeleteMapping("/notification/request/{id}")
|
||||||
|
|||||||
@ -33,7 +33,6 @@ import org.thingsboard.server.common.data.id.UserId;
|
|||||||
import org.thingsboard.server.common.data.notification.AlreadySentException;
|
import org.thingsboard.server.common.data.notification.AlreadySentException;
|
||||||
import org.thingsboard.server.common.data.notification.Notification;
|
import org.thingsboard.server.common.data.notification.Notification;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationDeliveryMethod;
|
import org.thingsboard.server.common.data.notification.NotificationDeliveryMethod;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
|
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
||||||
@ -218,7 +217,6 @@ public class DefaultNotificationCenter extends AbstractSubscriptionService imple
|
|||||||
.subject(template.getSubject())
|
.subject(template.getSubject())
|
||||||
.text(text)
|
.text(text)
|
||||||
.info(request.getInfo())
|
.info(request.getInfo())
|
||||||
.originatorType(request.getOriginatorType())
|
|
||||||
.status(NotificationStatus.SENT)
|
.status(NotificationStatus.SENT)
|
||||||
.build();
|
.build();
|
||||||
try {
|
try {
|
||||||
@ -242,7 +240,6 @@ public class DefaultNotificationCenter extends AbstractSubscriptionService imple
|
|||||||
.type(NotificationType.GENERAL)
|
.type(NotificationType.GENERAL)
|
||||||
.subject(subject)
|
.subject(subject)
|
||||||
.text(text)
|
.text(text)
|
||||||
.originatorType(NotificationOriginatorType.SYSTEM)
|
|
||||||
.status(NotificationStatus.SENT)
|
.status(NotificationStatus.SENT)
|
||||||
.build();
|
.build();
|
||||||
notification = notificationService.saveNotification(TenantId.SYS_TENANT_ID, notification);
|
notification = notificationService.saveNotification(TenantId.SYS_TENANT_ID, notification);
|
||||||
|
|||||||
@ -30,9 +30,8 @@ import org.thingsboard.server.common.data.id.NotificationRequestId;
|
|||||||
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationTargetId;
|
import org.thingsboard.server.common.data.id.NotificationTargetId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.notification.AlarmOriginatedNotificationInfo;
|
import org.thingsboard.server.common.data.notification.info.AlarmOriginatedNotificationInfo;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationInfo;
|
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
|
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
||||||
@ -137,7 +136,6 @@ public class DefaultNotificationRuleProcessingService implements NotificationRul
|
|||||||
.additionalConfig(config)
|
.additionalConfig(config)
|
||||||
.info(notificationInfo)
|
.info(notificationInfo)
|
||||||
.ruleId(notificationRule.getId())
|
.ruleId(notificationRule.getId())
|
||||||
.originatorType(NotificationOriginatorType.ALARM)
|
|
||||||
.originatorEntityId(alarm.getId())
|
.originatorEntityId(alarm.getId())
|
||||||
.build();
|
.build();
|
||||||
notificationCenter.processNotificationRequest(tenantId, notificationRequest);
|
notificationCenter.processNotificationRequest(tenantId, notificationRequest);
|
||||||
|
|||||||
@ -22,11 +22,11 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.thingsboard.server.common.data.User;
|
import org.thingsboard.server.common.data.User;
|
||||||
import org.thingsboard.server.common.data.id.CustomerId;
|
import org.thingsboard.server.common.data.id.CustomerId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.notification.AlarmOriginatedNotificationInfo;
|
import org.thingsboard.server.common.data.notification.info.AlarmOriginatedNotificationInfo;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationDeliveryMethod;
|
import org.thingsboard.server.common.data.notification.NotificationDeliveryMethod;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
||||||
|
import org.thingsboard.server.common.data.notification.info.RuleNodeOriginatedNotificationInfo;
|
||||||
import org.thingsboard.server.common.data.notification.settings.NotificationDeliveryMethodConfig;
|
import org.thingsboard.server.common.data.notification.settings.NotificationDeliveryMethodConfig;
|
||||||
import org.thingsboard.server.common.data.notification.settings.NotificationSettings;
|
import org.thingsboard.server.common.data.notification.settings.NotificationSettings;
|
||||||
import org.thingsboard.server.common.data.notification.template.DeliveryMethodNotificationTemplate;
|
import org.thingsboard.server.common.data.notification.template.DeliveryMethodNotificationTemplate;
|
||||||
@ -96,9 +96,11 @@ public class NotificationProcessingContext {
|
|||||||
|
|
||||||
public CustomerId getCustomerId() {
|
public CustomerId getCustomerId() {
|
||||||
CustomerId customerId;
|
CustomerId customerId;
|
||||||
if (request.getOriginatorType() == NotificationOriginatorType.ALARM) {
|
switch (request.getOriginatorEntityId().getEntityType()) {
|
||||||
|
case ALARM:
|
||||||
customerId = ((AlarmOriginatedNotificationInfo) request.getInfo()).getCustomerId();
|
customerId = ((AlarmOriginatedNotificationInfo) request.getInfo()).getCustomerId();
|
||||||
} else {
|
break;
|
||||||
|
default:
|
||||||
customerId = null;
|
customerId = null;
|
||||||
}
|
}
|
||||||
return customerId;
|
return customerId;
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import lombok.Builder;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationInfo;
|
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
|||||||
@ -28,10 +28,11 @@ import org.thingsboard.server.common.data.id.NotificationTargetId;
|
|||||||
import org.thingsboard.server.common.data.id.UserId;
|
import org.thingsboard.server.common.data.id.UserId;
|
||||||
import org.thingsboard.server.common.data.notification.Notification;
|
import org.thingsboard.server.common.data.notification.Notification;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationDeliveryMethod;
|
import org.thingsboard.server.common.data.notification.NotificationDeliveryMethod;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationInfo;
|
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
|
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationType;
|
import org.thingsboard.server.common.data.notification.NotificationType;
|
||||||
|
import org.thingsboard.server.common.data.notification.info.UserOriginatedNotificationInfo;
|
||||||
import org.thingsboard.server.common.data.notification.targets.NotificationTarget;
|
import org.thingsboard.server.common.data.notification.targets.NotificationTarget;
|
||||||
import org.thingsboard.server.common.data.notification.targets.UserListNotificationTargetConfig;
|
import org.thingsboard.server.common.data.notification.targets.UserListNotificationTargetConfig;
|
||||||
import org.thingsboard.server.common.data.notification.template.DeliveryMethodNotificationTemplate;
|
import org.thingsboard.server.common.data.notification.template.DeliveryMethodNotificationTemplate;
|
||||||
@ -96,7 +97,7 @@ public abstract class AbstractNotificationApiTest extends AbstractControllerTest
|
|||||||
NotificationTemplate notificationTemplate = createNotificationTemplate(DEFAULT_NOTIFICATION_TYPE, DEFAULT_NOTIFICATION_SUBJECT, text, deliveryMethods);
|
NotificationTemplate notificationTemplate = createNotificationTemplate(DEFAULT_NOTIFICATION_TYPE, DEFAULT_NOTIFICATION_SUBJECT, text, deliveryMethods);
|
||||||
NotificationRequestConfig config = new NotificationRequestConfig();
|
NotificationRequestConfig config = new NotificationRequestConfig();
|
||||||
config.setSendingDelayInSec(delayInSec);
|
config.setSendingDelayInSec(delayInSec);
|
||||||
NotificationInfo notificationInfo = new NotificationInfo();
|
UserOriginatedNotificationInfo notificationInfo = new UserOriginatedNotificationInfo();
|
||||||
notificationInfo.setDescription("The text: " + text);
|
notificationInfo.setDescription("The text: " + text);
|
||||||
NotificationRequest notificationRequest = NotificationRequest.builder()
|
NotificationRequest notificationRequest = NotificationRequest.builder()
|
||||||
.tenantId(tenantId)
|
.tenantId(tenantId)
|
||||||
|
|||||||
@ -27,10 +27,10 @@ import org.thingsboard.server.common.data.User;
|
|||||||
import org.thingsboard.server.common.data.id.NotificationTargetId;
|
import org.thingsboard.server.common.data.id.NotificationTargetId;
|
||||||
import org.thingsboard.server.common.data.notification.Notification;
|
import org.thingsboard.server.common.data.notification.Notification;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationDeliveryMethod;
|
import org.thingsboard.server.common.data.notification.NotificationDeliveryMethod;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationInfo;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
||||||
|
import org.thingsboard.server.common.data.notification.info.UserOriginatedNotificationInfo;
|
||||||
import org.thingsboard.server.common.data.notification.targets.AllUsersNotificationTargetConfig;
|
import org.thingsboard.server.common.data.notification.targets.AllUsersNotificationTargetConfig;
|
||||||
import org.thingsboard.server.common.data.notification.targets.NotificationTarget;
|
import org.thingsboard.server.common.data.notification.targets.NotificationTarget;
|
||||||
import org.thingsboard.server.common.data.page.PageData;
|
import org.thingsboard.server.common.data.page.PageData;
|
||||||
@ -250,7 +250,7 @@ public class NotificationApiTest extends AbstractNotificationApiTest {
|
|||||||
assertThat(initialNotification.getInfo()).isNotNull().isEqualTo(notificationRequest.getInfo());
|
assertThat(initialNotification.getInfo()).isNotNull().isEqualTo(notificationRequest.getInfo());
|
||||||
|
|
||||||
wsClient.registerWaitForUpdate();
|
wsClient.registerWaitForUpdate();
|
||||||
NotificationInfo newNotificationInfo = new NotificationInfo();
|
UserOriginatedNotificationInfo newNotificationInfo = new UserOriginatedNotificationInfo();
|
||||||
newNotificationInfo.setDescription("New description");
|
newNotificationInfo.setDescription("New description");
|
||||||
notificationRequest.setInfo(newNotificationInfo);
|
notificationRequest.setInfo(newNotificationInfo);
|
||||||
notificationCenter.updateNotificationRequest(tenantId, notificationRequest);
|
notificationCenter.updateNotificationRequest(tenantId, notificationRequest);
|
||||||
|
|||||||
@ -37,7 +37,7 @@ import org.thingsboard.server.common.data.device.profile.AlarmRule;
|
|||||||
import org.thingsboard.server.common.data.device.profile.DeviceProfileAlarm;
|
import org.thingsboard.server.common.data.device.profile.DeviceProfileAlarm;
|
||||||
import org.thingsboard.server.common.data.device.profile.SimpleAlarmConditionSpec;
|
import org.thingsboard.server.common.data.device.profile.SimpleAlarmConditionSpec;
|
||||||
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
||||||
import org.thingsboard.server.common.data.notification.AlarmOriginatedNotificationInfo;
|
import org.thingsboard.server.common.data.notification.info.AlarmOriginatedNotificationInfo;
|
||||||
import org.thingsboard.server.common.data.notification.Notification;
|
import org.thingsboard.server.common.data.notification.Notification;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationDeliveryMethod;
|
import org.thingsboard.server.common.data.notification.NotificationDeliveryMethod;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationType;
|
import org.thingsboard.server.common.data.notification.NotificationType;
|
||||||
|
|||||||
@ -15,11 +15,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.dao.notification;
|
package org.thingsboard.server.dao.notification;
|
||||||
|
|
||||||
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.id.EntityId;
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
||||||
@ -34,7 +34,7 @@ public interface NotificationRequestService {
|
|||||||
|
|
||||||
NotificationRequest findNotificationRequestById(TenantId tenantId, NotificationRequestId id);
|
NotificationRequest findNotificationRequestById(TenantId tenantId, NotificationRequestId id);
|
||||||
|
|
||||||
PageData<NotificationRequest> findNotificationRequestsByTenantIdAndOriginatorType(TenantId tenantId, NotificationOriginatorType originatorType, PageLink pageLink);
|
PageData<NotificationRequest> findNotificationRequestsByTenantIdAndOriginatorType(TenantId tenantId, EntityType originatorType, PageLink pageLink);
|
||||||
|
|
||||||
List<NotificationRequestId> findNotificationRequestsIdsByStatusAndRuleId(TenantId tenantId, NotificationRequestStatus requestStatus, NotificationRuleId ruleId);
|
List<NotificationRequestId> findNotificationRequestsIdsByStatusAndRuleId(TenantId tenantId, NotificationRequestStatus requestStatus, NotificationRuleId ruleId);
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import org.thingsboard.server.common.data.BaseData;
|
|||||||
import org.thingsboard.server.common.data.id.NotificationId;
|
import org.thingsboard.server.common.data.id.NotificationId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
||||||
import org.thingsboard.server.common.data.id.UserId;
|
import org.thingsboard.server.common.data.id.UserId;
|
||||||
|
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@ -40,7 +41,6 @@ public class Notification extends BaseData<NotificationId> {
|
|||||||
private String text;
|
private String text;
|
||||||
private NotificationInfo info;
|
private NotificationInfo info;
|
||||||
|
|
||||||
private NotificationOriginatorType originatorType;
|
|
||||||
private NotificationStatus status;
|
private NotificationStatus status;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,6 +31,7 @@ import org.thingsboard.server.common.data.id.NotificationTargetId;
|
|||||||
import org.thingsboard.server.common.data.id.NotificationTemplateId;
|
import org.thingsboard.server.common.data.id.NotificationTemplateId;
|
||||||
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.id.UserId;
|
||||||
|
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
@ -56,7 +57,6 @@ public class NotificationRequest extends BaseData<NotificationRequestId> impleme
|
|||||||
@Valid
|
@Valid
|
||||||
private NotificationRequestConfig additionalConfig;
|
private NotificationRequestConfig additionalConfig;
|
||||||
|
|
||||||
private NotificationOriginatorType originatorType;
|
|
||||||
private EntityId originatorEntityId;
|
private EntityId originatorEntityId;
|
||||||
private NotificationRuleId ruleId;
|
private NotificationRuleId ruleId;
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ public class NotificationRequest extends BaseData<NotificationRequestId> impleme
|
|||||||
|
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public UserId getSenderId() {
|
public UserId getSenderId() {
|
||||||
return originatorType == NotificationOriginatorType.ADMIN ? (UserId) originatorEntityId : null;
|
return originatorEntityId instanceof UserId ? (UserId) originatorEntityId : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,13 +13,13 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.thingsboard.server.common.data.notification;
|
package org.thingsboard.server.common.data.notification.info;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
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.alarm.AlarmStatus;
|
||||||
import org.thingsboard.server.common.data.id.AlarmId;
|
import org.thingsboard.server.common.data.id.AlarmId;
|
||||||
@ -29,11 +29,10 @@ import org.thingsboard.server.common.data.id.EntityId;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
public class AlarmOriginatedNotificationInfo extends NotificationInfo {
|
public class AlarmOriginatedNotificationInfo implements NotificationInfo {
|
||||||
|
|
||||||
private AlarmId alarmId;
|
private AlarmId alarmId;
|
||||||
private String alarmType;
|
private String alarmType;
|
||||||
@ -43,8 +42,8 @@ public class AlarmOriginatedNotificationInfo extends NotificationInfo {
|
|||||||
private CustomerId customerId;
|
private CustomerId customerId;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NotificationOriginatorType getOriginatorType() {
|
public EntityType getOriginatorType() {
|
||||||
return NotificationOriginatorType.ALARM;
|
return EntityType.ALARM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -13,39 +13,29 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.thingsboard.server.common.data.notification;
|
package org.thingsboard.server.common.data.notification.info;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
||||||
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
|
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
|
||||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||||
import lombok.Data;
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.id.DashboardId;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "originatorType", defaultImpl = NotificationInfo.class)
|
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "originatorType")
|
||||||
@JsonSubTypes({
|
@JsonSubTypes({
|
||||||
|
@Type(name = "USER", value = UserOriginatedNotificationInfo.class),
|
||||||
@Type(name = "ALARM", value = AlarmOriginatedNotificationInfo.class),
|
@Type(name = "ALARM", value = AlarmOriginatedNotificationInfo.class),
|
||||||
@Type(name = "RULE_NODE", value = RuleNodeOriginatedNotificationInfo.class)
|
@Type(name = "RULE_NODE", value = RuleNodeOriginatedNotificationInfo.class)
|
||||||
})
|
})
|
||||||
public class NotificationInfo {
|
public interface NotificationInfo {
|
||||||
|
|
||||||
private String description;
|
EntityType getOriginatorType();
|
||||||
private DashboardId dashboardId;
|
|
||||||
|
|
||||||
public NotificationOriginatorType getOriginatorType() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public Map<String, String> getTemplateData() {
|
Map<String, String> getTemplateData();
|
||||||
return Collections.emptyMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -13,24 +13,23 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.thingsboard.server.common.data.notification;
|
package org.thingsboard.server.common.data.notification.info;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.id.EntityId;
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
public class RuleNodeOriginatedNotificationInfo implements NotificationInfo {
|
||||||
public class RuleNodeOriginatedNotificationInfo extends NotificationInfo {
|
|
||||||
|
|
||||||
private EntityId msgOriginator;
|
private EntityId msgOriginator;
|
||||||
private Map<String, String> msgMetadata;
|
private Map<String, String> msgMetadata;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NotificationOriginatorType getOriginatorType() {
|
public EntityType getOriginatorType() {
|
||||||
return NotificationOriginatorType.RULE_NODE;
|
return EntityType.RULE_NODE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -13,11 +13,29 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.thingsboard.server.common.data.notification;
|
package org.thingsboard.server.common.data.notification.info;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
|
import org.thingsboard.server.common.data.id.DashboardId;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserOriginatedNotificationInfo implements NotificationInfo {
|
||||||
|
|
||||||
|
private String description;
|
||||||
|
private DashboardId dashboardId;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EntityType getOriginatorType() {
|
||||||
|
return EntityType.USER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, String> getTemplateData() {
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
public enum NotificationOriginatorType {
|
|
||||||
ADMIN,
|
|
||||||
ALARM,
|
|
||||||
RULE_NODE,
|
|
||||||
SYSTEM
|
|
||||||
}
|
}
|
||||||
@ -659,14 +659,12 @@ public class ModelConstants {
|
|||||||
public static final String NOTIFICATION_TYPE_PROPERTY = "type";
|
public static final String NOTIFICATION_TYPE_PROPERTY = "type";
|
||||||
public static final String NOTIFICATION_SUBJECT_PROPERTY = "subject";
|
public static final String NOTIFICATION_SUBJECT_PROPERTY = "subject";
|
||||||
public static final String NOTIFICATION_TEXT_PROPERTY = "text";
|
public static final String NOTIFICATION_TEXT_PROPERTY = "text";
|
||||||
public static final String NOTIFICATION_ORIGINATOR_TYPE_PROPERTY = "originator_type";
|
|
||||||
public static final String NOTIFICATION_STATUS_PROPERTY = "status";
|
public static final String NOTIFICATION_STATUS_PROPERTY = "status";
|
||||||
|
|
||||||
public static final String NOTIFICATION_REQUEST_TABLE_NAME = "notification_request";
|
public static final String NOTIFICATION_REQUEST_TABLE_NAME = "notification_request";
|
||||||
public static final String NOTIFICATION_REQUEST_TARGETS_PROPERTY = "targets";
|
public static final String NOTIFICATION_REQUEST_TARGETS_PROPERTY = "targets";
|
||||||
public static final String NOTIFICATION_REQUEST_TEMPLATE_ID_PROPERTY = "template_id";
|
public static final String NOTIFICATION_REQUEST_TEMPLATE_ID_PROPERTY = "template_id";
|
||||||
public static final String NOTIFICATION_REQUEST_INFO_PROPERTY = "info";
|
public static final String NOTIFICATION_REQUEST_INFO_PROPERTY = "info";
|
||||||
public static final String NOTIFICATION_REQUEST_ORIGINATOR_TYPE_PROPERTY = "originator_type";
|
|
||||||
public static final String NOTIFICATION_REQUEST_ORIGINATOR_ENTITY_ID_PROPERTY = "originator_entity_id";
|
public static final String NOTIFICATION_REQUEST_ORIGINATOR_ENTITY_ID_PROPERTY = "originator_entity_id";
|
||||||
public static final String NOTIFICATION_REQUEST_ORIGINATOR_ENTITY_TYPE_PROPERTY = "originator_entity_type";
|
public static final String NOTIFICATION_REQUEST_ORIGINATOR_ENTITY_TYPE_PROPERTY = "originator_entity_type";
|
||||||
public static final String NOTIFICATION_REQUEST_ADDITIONAL_CONFIG_PROPERTY = "additional_config";
|
public static final String NOTIFICATION_REQUEST_ADDITIONAL_CONFIG_PROPERTY = "additional_config";
|
||||||
|
|||||||
@ -25,8 +25,7 @@ import org.thingsboard.server.common.data.id.NotificationId;
|
|||||||
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
||||||
import org.thingsboard.server.common.data.id.UserId;
|
import org.thingsboard.server.common.data.id.UserId;
|
||||||
import org.thingsboard.server.common.data.notification.Notification;
|
import org.thingsboard.server.common.data.notification.Notification;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationInfo;
|
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationStatus;
|
import org.thingsboard.server.common.data.notification.NotificationStatus;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationType;
|
import org.thingsboard.server.common.data.notification.NotificationType;
|
||||||
import org.thingsboard.server.dao.model.BaseSqlEntity;
|
import org.thingsboard.server.dao.model.BaseSqlEntity;
|
||||||
@ -67,10 +66,6 @@ public class NotificationEntity extends BaseSqlEntity<Notification> {
|
|||||||
@Formula("(SELECT r.info FROM notification_request r WHERE r.id = request_id)")
|
@Formula("(SELECT r.info FROM notification_request r WHERE r.id = request_id)")
|
||||||
private JsonNode info;
|
private JsonNode info;
|
||||||
|
|
||||||
@Enumerated(EnumType.STRING)
|
|
||||||
@Column(name = ModelConstants.NOTIFICATION_ORIGINATOR_TYPE_PROPERTY)
|
|
||||||
private NotificationOriginatorType originatorType;
|
|
||||||
|
|
||||||
@Enumerated(EnumType.STRING)
|
@Enumerated(EnumType.STRING)
|
||||||
@Column(name = ModelConstants.NOTIFICATION_STATUS_PROPERTY)
|
@Column(name = ModelConstants.NOTIFICATION_STATUS_PROPERTY)
|
||||||
private NotificationStatus status;
|
private NotificationStatus status;
|
||||||
@ -86,7 +81,6 @@ public class NotificationEntity extends BaseSqlEntity<Notification> {
|
|||||||
setSubject(notification.getSubject());
|
setSubject(notification.getSubject());
|
||||||
setText(notification.getText());
|
setText(notification.getText());
|
||||||
setInfo(toJson(notification.getInfo()));
|
setInfo(toJson(notification.getInfo()));
|
||||||
setOriginatorType(notification.getOriginatorType());
|
|
||||||
setStatus(notification.getStatus());
|
setStatus(notification.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +95,6 @@ public class NotificationEntity extends BaseSqlEntity<Notification> {
|
|||||||
notification.setSubject(subject);
|
notification.setSubject(subject);
|
||||||
notification.setText(text);
|
notification.setText(text);
|
||||||
notification.setInfo(fromJson(info, NotificationInfo.class));
|
notification.setInfo(fromJson(info, NotificationInfo.class));
|
||||||
notification.setOriginatorType(originatorType);
|
|
||||||
notification.setStatus(status);
|
notification.setStatus(status);
|
||||||
return notification;
|
return notification;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,8 +26,7 @@ import org.thingsboard.server.common.data.id.NotificationRequestId;
|
|||||||
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationTargetId;
|
import org.thingsboard.server.common.data.id.NotificationTargetId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationTemplateId;
|
import org.thingsboard.server.common.data.id.NotificationTemplateId;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationInfo;
|
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
|
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
||||||
@ -67,10 +66,6 @@ public class NotificationRequestEntity extends BaseSqlEntity<NotificationRequest
|
|||||||
@Column(name = ModelConstants.NOTIFICATION_REQUEST_ADDITIONAL_CONFIG_PROPERTY)
|
@Column(name = ModelConstants.NOTIFICATION_REQUEST_ADDITIONAL_CONFIG_PROPERTY)
|
||||||
private JsonNode additionalConfig;
|
private JsonNode additionalConfig;
|
||||||
|
|
||||||
@Enumerated(EnumType.STRING)
|
|
||||||
@Column(name = ModelConstants.NOTIFICATION_REQUEST_ORIGINATOR_TYPE_PROPERTY, nullable = false)
|
|
||||||
private NotificationOriginatorType originatorType;
|
|
||||||
|
|
||||||
@Column(name = ModelConstants.NOTIFICATION_REQUEST_ORIGINATOR_ENTITY_ID_PROPERTY)
|
@Column(name = ModelConstants.NOTIFICATION_REQUEST_ORIGINATOR_ENTITY_ID_PROPERTY)
|
||||||
private UUID originatorEntityId;
|
private UUID originatorEntityId;
|
||||||
|
|
||||||
@ -99,7 +94,6 @@ public class NotificationRequestEntity extends BaseSqlEntity<NotificationRequest
|
|||||||
setTemplateId(getUuid(notificationRequest.getTemplateId()));
|
setTemplateId(getUuid(notificationRequest.getTemplateId()));
|
||||||
setInfo(toJson(notificationRequest.getInfo()));
|
setInfo(toJson(notificationRequest.getInfo()));
|
||||||
setAdditionalConfig(toJson(notificationRequest.getAdditionalConfig()));
|
setAdditionalConfig(toJson(notificationRequest.getAdditionalConfig()));
|
||||||
setOriginatorType(notificationRequest.getOriginatorType());
|
|
||||||
if (notificationRequest.getOriginatorEntityId() != null) {
|
if (notificationRequest.getOriginatorEntityId() != null) {
|
||||||
setOriginatorEntityId(notificationRequest.getOriginatorEntityId().getId());
|
setOriginatorEntityId(notificationRequest.getOriginatorEntityId().getId());
|
||||||
setOriginatorEntityType(notificationRequest.getOriginatorEntityId().getEntityType());
|
setOriginatorEntityType(notificationRequest.getOriginatorEntityId().getEntityType());
|
||||||
@ -119,7 +113,6 @@ public class NotificationRequestEntity extends BaseSqlEntity<NotificationRequest
|
|||||||
notificationRequest.setTemplateId(getEntityId(templateId, NotificationTemplateId::new));
|
notificationRequest.setTemplateId(getEntityId(templateId, NotificationTemplateId::new));
|
||||||
notificationRequest.setInfo(fromJson(info, NotificationInfo.class));
|
notificationRequest.setInfo(fromJson(info, NotificationInfo.class));
|
||||||
notificationRequest.setAdditionalConfig(fromJson(additionalConfig, NotificationRequestConfig.class));
|
notificationRequest.setAdditionalConfig(fromJson(additionalConfig, NotificationRequestConfig.class));
|
||||||
notificationRequest.setOriginatorType(originatorType);
|
|
||||||
if (originatorEntityId != null) {
|
if (originatorEntityId != null) {
|
||||||
notificationRequest.setOriginatorEntityId(EntityIdFactory.getByTypeAndUuid(originatorEntityType, originatorEntityId));
|
notificationRequest.setOriginatorEntityId(EntityIdFactory.getByTypeAndUuid(originatorEntityType, originatorEntityId));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,11 +18,11 @@ package org.thingsboard.server.dao.notification;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.id.EntityId;
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
||||||
@ -53,7 +53,7 @@ public class DefaultNotificationRequestService implements NotificationRequestSer
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageData<NotificationRequest> findNotificationRequestsByTenantIdAndOriginatorType(TenantId tenantId, NotificationOriginatorType originatorType, PageLink pageLink) {
|
public PageData<NotificationRequest> findNotificationRequestsByTenantIdAndOriginatorType(TenantId tenantId, EntityType originatorType, PageLink pageLink) {
|
||||||
return notificationRequestDao.findByTenantIdAndOriginatorTypeAndPageLink(tenantId, originatorType, pageLink);
|
return notificationRequestDao.findByTenantIdAndOriginatorTypeAndPageLink(tenantId, originatorType, pageLink);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -15,13 +15,13 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.dao.notification;
|
package org.thingsboard.server.dao.notification;
|
||||||
|
|
||||||
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.id.EntityId;
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
import org.thingsboard.server.common.data.id.NotificationRequestId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
import org.thingsboard.server.common.data.id.NotificationRuleId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationTargetId;
|
import org.thingsboard.server.common.data.id.NotificationTargetId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationTemplateId;
|
import org.thingsboard.server.common.data.id.NotificationTemplateId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
||||||
@ -33,7 +33,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface NotificationRequestDao extends Dao<NotificationRequest> {
|
public interface NotificationRequestDao extends Dao<NotificationRequest> {
|
||||||
|
|
||||||
PageData<NotificationRequest> findByTenantIdAndOriginatorTypeAndPageLink(TenantId tenantId, NotificationOriginatorType originatorType, PageLink pageLink);
|
PageData<NotificationRequest> findByTenantIdAndOriginatorTypeAndPageLink(TenantId tenantId, EntityType originatorType, PageLink pageLink);
|
||||||
|
|
||||||
List<NotificationRequestId> findIdsByRuleId(TenantId tenantId, NotificationRequestStatus requestStatus, NotificationRuleId ruleId);
|
List<NotificationRequestId> findIdsByRuleId(TenantId tenantId, NotificationRequestStatus requestStatus, NotificationRuleId ruleId);
|
||||||
|
|
||||||
|
|||||||
@ -26,7 +26,6 @@ import org.thingsboard.server.common.data.id.NotificationRuleId;
|
|||||||
import org.thingsboard.server.common.data.id.NotificationTargetId;
|
import org.thingsboard.server.common.data.id.NotificationTargetId;
|
||||||
import org.thingsboard.server.common.data.id.NotificationTemplateId;
|
import org.thingsboard.server.common.data.id.NotificationTemplateId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
||||||
@ -52,8 +51,8 @@ public class JpaNotificationRequestDao extends JpaAbstractDao<NotificationReques
|
|||||||
private final NotificationRequestRepository notificationRequestRepository;
|
private final NotificationRequestRepository notificationRequestRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageData<NotificationRequest> findByTenantIdAndOriginatorTypeAndPageLink(TenantId tenantId, NotificationOriginatorType originatorType, PageLink pageLink) {
|
public PageData<NotificationRequest> findByTenantIdAndOriginatorTypeAndPageLink(TenantId tenantId, EntityType originatorType, PageLink pageLink) {
|
||||||
return DaoUtil.toPageData(notificationRequestRepository.findByTenantIdAndOriginatorType(getId(tenantId, true), originatorType, DaoUtil.toPageable(pageLink)));
|
return DaoUtil.toPageData(notificationRequestRepository.findByTenantIdAndOriginatorEntityType(getId(tenantId, true), originatorType, DaoUtil.toPageable(pageLink)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -25,7 +25,6 @@ import org.springframework.data.repository.query.Param;
|
|||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.thingsboard.server.common.data.EntityType;
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
|
||||||
import org.thingsboard.server.dao.model.sql.NotificationRequestEntity;
|
import org.thingsboard.server.dao.model.sql.NotificationRequestEntity;
|
||||||
|
|
||||||
@ -35,7 +34,7 @@ import java.util.UUID;
|
|||||||
@Repository
|
@Repository
|
||||||
public interface NotificationRequestRepository extends JpaRepository<NotificationRequestEntity, UUID> {
|
public interface NotificationRequestRepository extends JpaRepository<NotificationRequestEntity, UUID> {
|
||||||
|
|
||||||
Page<NotificationRequestEntity> findByTenantIdAndOriginatorType(UUID tenantId, NotificationOriginatorType originatorType, Pageable pageable);
|
Page<NotificationRequestEntity> findByTenantIdAndOriginatorEntityType(UUID tenantId, EntityType originatorType, Pageable pageable);
|
||||||
|
|
||||||
@Query("SELECT r.id FROM NotificationRequestEntity r WHERE r.status = :status AND r.ruleId = :ruleId")
|
@Query("SELECT r.id FROM NotificationRequestEntity r WHERE r.status = :status AND r.ruleId = :ruleId")
|
||||||
List<UUID> findAllIdsByStatusAndRuleId(@Param("status") NotificationRequestStatus status,
|
List<UUID> findAllIdsByStatusAndRuleId(@Param("status") NotificationRequestStatus status,
|
||||||
|
|||||||
@ -86,7 +86,7 @@ CREATE INDEX IF NOT EXISTS idx_notification_template_tenant_id_created_time ON n
|
|||||||
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_notification_rule_tenant_id_created_time ON notification_rule(tenant_id, created_time DESC);
|
CREATE INDEX IF NOT EXISTS idx_notification_rule_tenant_id_created_time ON notification_rule(tenant_id, created_time DESC);
|
||||||
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_notification_request_tenant_id_originator_type_created_time ON notification_request(tenant_id, originator_type, created_time DESC);
|
CREATE INDEX IF NOT EXISTS idx_notification_request_tenant_id_originator_type_created_time ON notification_request(tenant_id, originator_entity_type, created_time DESC);
|
||||||
CREATE INDEX IF NOT EXISTS idx_notification_request_rule_id_originator_entity_id ON notification_request(rule_id, originator_entity_id);
|
CREATE INDEX IF NOT EXISTS idx_notification_request_rule_id_originator_entity_id ON notification_request(rule_id, originator_entity_id);
|
||||||
CREATE INDEX IF NOT EXISTS idx_notification_request_status ON notification_request(status);
|
CREATE INDEX IF NOT EXISTS idx_notification_request_status ON notification_request(status);
|
||||||
|
|
||||||
|
|||||||
@ -815,7 +815,6 @@ CREATE TABLE IF NOT EXISTS notification_request (
|
|||||||
template_id UUID NOT NULL,
|
template_id UUID NOT NULL,
|
||||||
info VARCHAR(1000),
|
info VARCHAR(1000),
|
||||||
additional_config VARCHAR(1000),
|
additional_config VARCHAR(1000),
|
||||||
originator_type VARCHAR(32) NOT NULL,
|
|
||||||
originator_entity_id UUID,
|
originator_entity_id UUID,
|
||||||
originator_entity_type VARCHAR(32),
|
originator_entity_type VARCHAR(32),
|
||||||
rule_id UUID NULL,
|
rule_id UUID NULL,
|
||||||
@ -832,6 +831,5 @@ CREATE TABLE IF NOT EXISTS notification (
|
|||||||
subject VARCHAR(255),
|
subject VARCHAR(255),
|
||||||
text VARCHAR(1000) NOT NULL,
|
text VARCHAR(1000) NOT NULL,
|
||||||
info VARCHAR(1000),
|
info VARCHAR(1000),
|
||||||
originator_type VARCHAR(32) NOT NULL,
|
|
||||||
status VARCHAR(32)
|
status VARCHAR(32)
|
||||||
) PARTITION BY RANGE (created_time);
|
) PARTITION BY RANGE (created_time);
|
||||||
|
|||||||
@ -22,10 +22,9 @@ import org.thingsboard.rule.engine.api.TbNode;
|
|||||||
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
|
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
|
||||||
import org.thingsboard.rule.engine.api.TbNodeException;
|
import org.thingsboard.rule.engine.api.TbNodeException;
|
||||||
import org.thingsboard.rule.engine.api.util.TbNodeUtils;
|
import org.thingsboard.rule.engine.api.util.TbNodeUtils;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
|
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
import org.thingsboard.server.common.data.notification.NotificationRequest;
|
||||||
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
|
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
|
||||||
import org.thingsboard.server.common.data.notification.RuleNodeOriginatedNotificationInfo;
|
import org.thingsboard.server.common.data.notification.info.RuleNodeOriginatedNotificationInfo;
|
||||||
import org.thingsboard.server.common.data.plugin.ComponentType;
|
import org.thingsboard.server.common.data.plugin.ComponentType;
|
||||||
import org.thingsboard.server.common.msg.TbMsg;
|
import org.thingsboard.server.common.msg.TbMsg;
|
||||||
import org.thingsboard.server.common.msg.TbMsgMetaData;
|
import org.thingsboard.server.common.msg.TbMsgMetaData;
|
||||||
@ -61,7 +60,6 @@ public class TbNotificationNode implements TbNode {
|
|||||||
.templateId(config.getTemplateId())
|
.templateId(config.getTemplateId())
|
||||||
.info(notificationInfo)
|
.info(notificationInfo)
|
||||||
.additionalConfig(new NotificationRequestConfig())
|
.additionalConfig(new NotificationRequestConfig())
|
||||||
.originatorType(NotificationOriginatorType.RULE_NODE)
|
|
||||||
.originatorEntityId(ctx.getSelfId())
|
.originatorEntityId(ctx.getSelfId())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user