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,
|
||||
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);
|
||||
|
||||
@ -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}")
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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
|
||||
@ -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();
|
||||
|
||||
}
|
||||
@ -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
|
||||
@ -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
|
||||
}
|
||||
@ -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";
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user