Remove NotificationOriginatorType, use EntityType; refactor NotificationInfo

This commit is contained in:
ViacheslavKlimov 2023-01-11 15:18:22 +02:00
parent 38c9d5dcd8
commit 7524dd9258
26 changed files with 77 additions and 99 deletions

View File

@ -52,14 +52,13 @@ CREATE TABLE IF NOT EXISTS notification_request (
template_id UUID NOT NULL,
info VARCHAR(1000),
additional_config VARCHAR(1000),
originator_type VARCHAR(32) NOT NULL,
originator_entity_id UUID,
originator_entity_type VARCHAR(32),
rule_id UUID NULL,
status VARCHAR(32),
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_status ON notification_request(status);
@ -72,7 +71,6 @@ CREATE TABLE IF NOT EXISTS notification (
subject VARCHAR(255),
text VARCHAR(1000) NOT NULL,
info VARCHAR(1000),
originator_type VARCHAR(32) NOT NULL,
status VARCHAR(32)
) PARTITION BY RANGE (created_time);
CREATE INDEX IF NOT EXISTS idx_notification_id_recipient_id ON notification(id, recipient_id);

View File

@ -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.TenantId;
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.settings.NotificationSettings;
import org.thingsboard.server.common.data.page.PageData;
@ -102,9 +101,8 @@ public class NotificationController extends BaseController {
notificationRequest.setTenantId(user.getTenantId());
checkEntity(notificationRequest.getId(), notificationRequest, Resource.NOTIFICATION_REQUEST);
notificationRequest.setOriginatorType(NotificationOriginatorType.ADMIN);
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");
}
notificationRequest.setRuleId(null);
@ -130,7 +128,7 @@ public class NotificationController extends BaseController {
@RequestParam(required = false) String sortOrder,
@AuthenticationPrincipal SecurityUser user) throws ThingsboardException {
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}")

View File

@ -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.Notification;
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.NotificationRequestConfig;
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
@ -218,7 +217,6 @@ public class DefaultNotificationCenter extends AbstractSubscriptionService imple
.subject(template.getSubject())
.text(text)
.info(request.getInfo())
.originatorType(request.getOriginatorType())
.status(NotificationStatus.SENT)
.build();
try {
@ -242,7 +240,6 @@ public class DefaultNotificationCenter extends AbstractSubscriptionService imple
.type(NotificationType.GENERAL)
.subject(subject)
.text(text)
.originatorType(NotificationOriginatorType.SYSTEM)
.status(NotificationStatus.SENT)
.build();
notification = notificationService.saveNotification(TenantId.SYS_TENANT_ID, notification);

View File

@ -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.NotificationTargetId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.notification.AlarmOriginatedNotificationInfo;
import org.thingsboard.server.common.data.notification.NotificationInfo;
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
import org.thingsboard.server.common.data.notification.info.AlarmOriginatedNotificationInfo;
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
import org.thingsboard.server.common.data.notification.NotificationRequest;
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
@ -137,7 +136,6 @@ public class DefaultNotificationRuleProcessingService implements NotificationRul
.additionalConfig(config)
.info(notificationInfo)
.ruleId(notificationRule.getId())
.originatorType(NotificationOriginatorType.ALARM)
.originatorEntityId(alarm.getId())
.build();
notificationCenter.processNotificationRequest(tenantId, notificationRequest);

View File

@ -22,11 +22,11 @@ import org.apache.commons.lang3.StringUtils;
import org.thingsboard.server.common.data.User;
import org.thingsboard.server.common.data.id.CustomerId;
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.NotificationOriginatorType;
import org.thingsboard.server.common.data.notification.NotificationRequest;
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.NotificationSettings;
import org.thingsboard.server.common.data.notification.template.DeliveryMethodNotificationTemplate;
@ -96,9 +96,11 @@ public class NotificationProcessingContext {
public CustomerId getCustomerId() {
CustomerId customerId;
if (request.getOriginatorType() == NotificationOriginatorType.ALARM) {
switch (request.getOriginatorEntityId().getEntityType()) {
case ALARM:
customerId = ((AlarmOriginatedNotificationInfo) request.getInfo()).getCustomerId();
} else {
break;
default:
customerId = null;
}
return customerId;

View File

@ -20,7 +20,7 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
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
@NoArgsConstructor

View File

@ -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.notification.Notification;
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.NotificationRequestConfig;
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.UserListNotificationTargetConfig;
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);
NotificationRequestConfig config = new NotificationRequestConfig();
config.setSendingDelayInSec(delayInSec);
NotificationInfo notificationInfo = new NotificationInfo();
UserOriginatedNotificationInfo notificationInfo = new UserOriginatedNotificationInfo();
notificationInfo.setDescription("The text: " + text);
NotificationRequest notificationRequest = NotificationRequest.builder()
.tenantId(tenantId)

View File

@ -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.notification.Notification;
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.NotificationRequestStats;
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.NotificationTarget;
import org.thingsboard.server.common.data.page.PageData;
@ -250,7 +250,7 @@ public class NotificationApiTest extends AbstractNotificationApiTest {
assertThat(initialNotification.getInfo()).isNotNull().isEqualTo(notificationRequest.getInfo());
wsClient.registerWaitForUpdate();
NotificationInfo newNotificationInfo = new NotificationInfo();
UserOriginatedNotificationInfo newNotificationInfo = new UserOriginatedNotificationInfo();
newNotificationInfo.setDescription("New description");
notificationRequest.setInfo(newNotificationInfo);
notificationCenter.updateNotificationRequest(tenantId, notificationRequest);

View File

@ -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.SimpleAlarmConditionSpec;
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.NotificationDeliveryMethod;
import org.thingsboard.server.common.data.notification.NotificationType;

View File

@ -15,11 +15,11 @@
*/
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.NotificationRequestId;
import org.thingsboard.server.common.data.id.NotificationRuleId;
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.NotificationRequestStats;
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
@ -34,7 +34,7 @@ public interface NotificationRequestService {
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);

View File

@ -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.NotificationRequestId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
@Data
@AllArgsConstructor
@ -40,7 +41,6 @@ public class Notification extends BaseData<NotificationId> {
private String text;
private NotificationInfo info;
private NotificationOriginatorType originatorType;
private NotificationStatus status;
}

View File

@ -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.TenantId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
@ -56,7 +57,6 @@ public class NotificationRequest extends BaseData<NotificationRequestId> impleme
@Valid
private NotificationRequestConfig additionalConfig;
private NotificationOriginatorType originatorType;
private EntityId originatorEntityId;
private NotificationRuleId ruleId;
@ -72,7 +72,7 @@ public class NotificationRequest extends BaseData<NotificationRequestId> impleme
@JsonIgnore
public UserId getSenderId() {
return originatorType == NotificationOriginatorType.ADMIN ? (UserId) originatorEntityId : null;
return originatorEntityId instanceof UserId ? (UserId) originatorEntityId : null;
}
}

View File

@ -13,13 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.common.data.notification;
package org.thingsboard.server.common.data.notification.info;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
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.AlarmStatus;
import org.thingsboard.server.common.data.id.AlarmId;
@ -29,11 +29,10 @@ import org.thingsboard.server.common.data.id.EntityId;
import java.util.Map;
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AlarmOriginatedNotificationInfo extends NotificationInfo {
public class AlarmOriginatedNotificationInfo implements NotificationInfo {
private AlarmId alarmId;
private String alarmType;
@ -43,8 +42,8 @@ public class AlarmOriginatedNotificationInfo extends NotificationInfo {
private CustomerId customerId;
@Override
public NotificationOriginatorType getOriginatorType() {
return NotificationOriginatorType.ALARM;
public EntityType getOriginatorType() {
return EntityType.ALARM;
}
@Override

View File

@ -13,39 +13,29 @@
* See the License for the specific language governing permissions and
* 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.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import lombok.Data;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.EntityType;
import java.util.Collections;
import java.util.Map;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "originatorType", defaultImpl = NotificationInfo.class)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "originatorType")
@JsonSubTypes({
@Type(name = "USER", value = UserOriginatedNotificationInfo.class),
@Type(name = "ALARM", value = AlarmOriginatedNotificationInfo.class),
@Type(name = "RULE_NODE", value = RuleNodeOriginatedNotificationInfo.class)
})
public class NotificationInfo {
public interface NotificationInfo {
private String description;
private DashboardId dashboardId;
public NotificationOriginatorType getOriginatorType() {
return null;
}
EntityType getOriginatorType();
@JsonIgnore
public Map<String, String> getTemplateData() {
return Collections.emptyMap();
}
Map<String, String> getTemplateData();
}

View File

@ -13,24 +13,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.common.data.notification;
package org.thingsboard.server.common.data.notification.info;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.id.EntityId;
import java.util.Map;
@Data
@EqualsAndHashCode(callSuper = true)
public class RuleNodeOriginatedNotificationInfo extends NotificationInfo {
public class RuleNodeOriginatedNotificationInfo implements NotificationInfo {
private EntityId msgOriginator;
private Map<String, String> msgMetadata;
@Override
public NotificationOriginatorType getOriginatorType() {
return NotificationOriginatorType.RULE_NODE;
public EntityType getOriginatorType() {
return EntityType.RULE_NODE;
}
@Override

View File

@ -13,11 +13,29 @@
* See the License for the specific language governing permissions and
* 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
}

View File

@ -659,14 +659,12 @@ public class ModelConstants {
public static final String NOTIFICATION_TYPE_PROPERTY = "type";
public static final String NOTIFICATION_SUBJECT_PROPERTY = "subject";
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_REQUEST_TABLE_NAME = "notification_request";
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_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_TYPE_PROPERTY = "originator_entity_type";
public static final String NOTIFICATION_REQUEST_ADDITIONAL_CONFIG_PROPERTY = "additional_config";

View File

@ -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.UserId;
import org.thingsboard.server.common.data.notification.Notification;
import org.thingsboard.server.common.data.notification.NotificationInfo;
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
import org.thingsboard.server.common.data.notification.NotificationStatus;
import org.thingsboard.server.common.data.notification.NotificationType;
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)")
private JsonNode info;
@Enumerated(EnumType.STRING)
@Column(name = ModelConstants.NOTIFICATION_ORIGINATOR_TYPE_PROPERTY)
private NotificationOriginatorType originatorType;
@Enumerated(EnumType.STRING)
@Column(name = ModelConstants.NOTIFICATION_STATUS_PROPERTY)
private NotificationStatus status;
@ -86,7 +81,6 @@ public class NotificationEntity extends BaseSqlEntity<Notification> {
setSubject(notification.getSubject());
setText(notification.getText());
setInfo(toJson(notification.getInfo()));
setOriginatorType(notification.getOriginatorType());
setStatus(notification.getStatus());
}
@ -101,7 +95,6 @@ public class NotificationEntity extends BaseSqlEntity<Notification> {
notification.setSubject(subject);
notification.setText(text);
notification.setInfo(fromJson(info, NotificationInfo.class));
notification.setOriginatorType(originatorType);
notification.setStatus(status);
return notification;
}

View File

@ -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.NotificationTargetId;
import org.thingsboard.server.common.data.id.NotificationTemplateId;
import org.thingsboard.server.common.data.notification.NotificationInfo;
import org.thingsboard.server.common.data.notification.NotificationOriginatorType;
import org.thingsboard.server.common.data.notification.info.NotificationInfo;
import org.thingsboard.server.common.data.notification.NotificationRequest;
import org.thingsboard.server.common.data.notification.NotificationRequestConfig;
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)
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)
private UUID originatorEntityId;
@ -99,7 +94,6 @@ public class NotificationRequestEntity extends BaseSqlEntity<NotificationRequest
setTemplateId(getUuid(notificationRequest.getTemplateId()));
setInfo(toJson(notificationRequest.getInfo()));
setAdditionalConfig(toJson(notificationRequest.getAdditionalConfig()));
setOriginatorType(notificationRequest.getOriginatorType());
if (notificationRequest.getOriginatorEntityId() != null) {
setOriginatorEntityId(notificationRequest.getOriginatorEntityId().getId());
setOriginatorEntityType(notificationRequest.getOriginatorEntityId().getEntityType());
@ -119,7 +113,6 @@ public class NotificationRequestEntity extends BaseSqlEntity<NotificationRequest
notificationRequest.setTemplateId(getEntityId(templateId, NotificationTemplateId::new));
notificationRequest.setInfo(fromJson(info, NotificationInfo.class));
notificationRequest.setAdditionalConfig(fromJson(additionalConfig, NotificationRequestConfig.class));
notificationRequest.setOriginatorType(originatorType);
if (originatorEntityId != null) {
notificationRequest.setOriginatorEntityId(EntityIdFactory.getByTypeAndUuid(originatorEntityType, originatorEntityId));
}

View File

@ -18,11 +18,11 @@ package org.thingsboard.server.dao.notification;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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.NotificationRequestId;
import org.thingsboard.server.common.data.id.NotificationRuleId;
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.NotificationRequestStats;
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
@ -53,7 +53,7 @@ public class DefaultNotificationRequestService implements NotificationRequestSer
}
@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);
}

View File

@ -15,13 +15,13 @@
*/
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.NotificationRequestId;
import org.thingsboard.server.common.data.id.NotificationRuleId;
import org.thingsboard.server.common.data.id.NotificationTargetId;
import org.thingsboard.server.common.data.id.NotificationTemplateId;
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.NotificationRequestStats;
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
@ -33,7 +33,7 @@ import java.util.List;
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);

View File

@ -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.NotificationTemplateId;
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.NotificationRequestStats;
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
@ -52,8 +51,8 @@ public class JpaNotificationRequestDao extends JpaAbstractDao<NotificationReques
private final NotificationRequestRepository notificationRequestRepository;
@Override
public PageData<NotificationRequest> findByTenantIdAndOriginatorTypeAndPageLink(TenantId tenantId, NotificationOriginatorType originatorType, PageLink pageLink) {
return DaoUtil.toPageData(notificationRequestRepository.findByTenantIdAndOriginatorType(getId(tenantId, true), originatorType, DaoUtil.toPageable(pageLink)));
public PageData<NotificationRequest> findByTenantIdAndOriginatorTypeAndPageLink(TenantId tenantId, EntityType originatorType, PageLink pageLink) {
return DaoUtil.toPageData(notificationRequestRepository.findByTenantIdAndOriginatorEntityType(getId(tenantId, true), originatorType, DaoUtil.toPageable(pageLink)));
}
@Override

View File

@ -25,7 +25,6 @@ import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
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.dao.model.sql.NotificationRequestEntity;
@ -35,7 +34,7 @@ import java.util.UUID;
@Repository
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")
List<UUID> findAllIdsByStatusAndRuleId(@Param("status") NotificationRequestStatus status,

View File

@ -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_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_status ON notification_request(status);

View File

@ -815,7 +815,6 @@ CREATE TABLE IF NOT EXISTS notification_request (
template_id UUID NOT NULL,
info VARCHAR(1000),
additional_config VARCHAR(1000),
originator_type VARCHAR(32) NOT NULL,
originator_entity_id UUID,
originator_entity_type VARCHAR(32),
rule_id UUID NULL,
@ -832,6 +831,5 @@ CREATE TABLE IF NOT EXISTS notification (
subject VARCHAR(255),
text VARCHAR(1000) NOT NULL,
info VARCHAR(1000),
originator_type VARCHAR(32) NOT NULL,
status VARCHAR(32)
) PARTITION BY RANGE (created_time);

View File

@ -22,10 +22,9 @@ import org.thingsboard.rule.engine.api.TbNode;
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
import org.thingsboard.rule.engine.api.TbNodeException;
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.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.msg.TbMsg;
import org.thingsboard.server.common.msg.TbMsgMetaData;
@ -61,7 +60,6 @@ public class TbNotificationNode implements TbNode {
.templateId(config.getTemplateId())
.info(notificationInfo)
.additionalConfig(new NotificationRequestConfig())
.originatorType(NotificationOriginatorType.RULE_NODE)
.originatorEntityId(ctx.getSelfId())
.build();