remove old notification
This commit is contained in:
parent
5b18809da0
commit
26ab1fb612
|
@ -1,174 +0,0 @@
|
||||||
package eu.eudat.data.old;
|
|
||||||
|
|
||||||
import eu.eudat.commons.enums.old.notification.ActiveStatus;
|
|
||||||
import eu.eudat.commons.enums.old.notification.ContactType;
|
|
||||||
import eu.eudat.commons.enums.old.notification.NotificationType;
|
|
||||||
import eu.eudat.commons.enums.old.notification.NotifyState;
|
|
||||||
import eu.eudat.data.UserEntity;
|
|
||||||
import eu.eudat.data.old.queryableentity.DataEntity;
|
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "\"NotificationLegacy\"")
|
|
||||||
public class Notification implements DataEntity<Notification, UUID> {
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@GeneratedValue
|
|
||||||
@Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
|
|
||||||
private UUID id;
|
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.EAGER)
|
|
||||||
@JoinColumn(name = "\"UserId\"")
|
|
||||||
private UserEntity userId;
|
|
||||||
|
|
||||||
@Enumerated
|
|
||||||
@Column(name = "\"IsActive\"", nullable = false)
|
|
||||||
private ActiveStatus isActive;
|
|
||||||
|
|
||||||
@Enumerated
|
|
||||||
@Column(name = "\"Type\"", nullable = false)
|
|
||||||
private NotificationType type;
|
|
||||||
|
|
||||||
@Enumerated
|
|
||||||
@Column(name = "\"ContactTypeHint\"")
|
|
||||||
private ContactType contactTypeHint;
|
|
||||||
|
|
||||||
@Column(name = "\"ContactHint\"")
|
|
||||||
private String contactHint;
|
|
||||||
|
|
||||||
@Column(name = "\"Data\"")
|
|
||||||
private String data;
|
|
||||||
|
|
||||||
@Enumerated
|
|
||||||
@Column(name = "\"NotifyState\"")
|
|
||||||
private NotifyState notifyState;
|
|
||||||
|
|
||||||
@Column(name = "\"NotifiedAt\"")
|
|
||||||
private Date notifiedAt;
|
|
||||||
|
|
||||||
@Column(name = "\"RetryCount\"")
|
|
||||||
private Integer retryCount;
|
|
||||||
|
|
||||||
@Column(name = "\"CreatedAt\"")
|
|
||||||
private Date createdAt;
|
|
||||||
|
|
||||||
@Column(name = "\"UpdatedAt\"")
|
|
||||||
private Date updatedAt;
|
|
||||||
|
|
||||||
|
|
||||||
public UUID getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(UUID id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UserEntity getUserId() {
|
|
||||||
return userId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUserId(UserEntity userId) {
|
|
||||||
this.userId = userId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ActiveStatus getIsActive() {
|
|
||||||
return isActive;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIsActive(ActiveStatus isActive) {
|
|
||||||
this.isActive = isActive;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NotificationType getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setType(NotificationType type) {
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ContactType getContactTypeHint() {
|
|
||||||
return contactTypeHint;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setContactTypeHint(ContactType contactTypeHint) {
|
|
||||||
this.contactTypeHint = contactTypeHint;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getContactHint() {
|
|
||||||
return contactHint;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setContactHint(String contactHint) {
|
|
||||||
this.contactHint = contactHint;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getData() {
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setData(String data) {
|
|
||||||
this.data = data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NotifyState getNotifyState() {
|
|
||||||
return notifyState;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNotifyState(NotifyState notifyState) {
|
|
||||||
this.notifyState = notifyState;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getNotifiedAt() {
|
|
||||||
return notifiedAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNotifiedAt(Date notifiedAt) {
|
|
||||||
this.notifiedAt = notifiedAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getRetryCount() {
|
|
||||||
return retryCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRetryCount(Integer retryCount) {
|
|
||||||
this.retryCount = retryCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getCreatedAt() {
|
|
||||||
return createdAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCreatedAt(Date createdAt) {
|
|
||||||
this.createdAt = createdAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getUpdatedAt() {
|
|
||||||
return updatedAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUpdatedAt(Date updatedAt) {
|
|
||||||
this.updatedAt = updatedAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update(Notification entity) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public UUID getKeys() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Notification buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
package eu.eudat.data.dao.entities;
|
|
||||||
|
|
||||||
import eu.eudat.data.dao.DatabaseAccessLayer;
|
|
||||||
import eu.eudat.data.dao.criteria.NotificationCriteria;
|
|
||||||
import eu.eudat.data.old.Notification;
|
|
||||||
import eu.eudat.queryable.QueryableList;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
public interface NotificationDao extends DatabaseAccessLayer<Notification, UUID> {
|
|
||||||
|
|
||||||
QueryableList<Notification> getWithCriteria(NotificationCriteria criteria);
|
|
||||||
}
|
|
|
@ -1,61 +0,0 @@
|
||||||
package eu.eudat.data.dao.entities;
|
|
||||||
|
|
||||||
import eu.eudat.data.dao.DatabaseAccess;
|
|
||||||
import eu.eudat.data.dao.criteria.NotificationCriteria;
|
|
||||||
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
|
|
||||||
import eu.eudat.data.old.Notification;
|
|
||||||
import eu.eudat.queryable.QueryableList;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import javax.management.InvalidApplicationException;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
@Service("NotificationDao")
|
|
||||||
public class NotificationDaoImpl extends DatabaseAccess<Notification> implements NotificationDao {
|
|
||||||
@Autowired
|
|
||||||
public NotificationDaoImpl(DatabaseService<Notification> databaseService) {
|
|
||||||
super(databaseService);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public QueryableList<Notification> getWithCriteria(NotificationCriteria criteria) {
|
|
||||||
QueryableList<Notification> query = this.getDatabaseService().getQueryable(Notification.class);
|
|
||||||
if (criteria.getIsActive() != null)
|
|
||||||
query.where((builder, root) -> builder.equal(root.get("isActive"), criteria.getIsActive()));
|
|
||||||
if (criteria.getNotifyState() != null)
|
|
||||||
query.where(((builder, root) -> builder.equal(root.get("notifyState"), criteria.getNotifyState())));
|
|
||||||
return query;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Notification createOrUpdate(Notification item) {
|
|
||||||
return this.getDatabaseService().createOrUpdate(item, Notification.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public CompletableFuture<Notification> createOrUpdateAsync(Notification item) {
|
|
||||||
return CompletableFuture.supplyAsync(() -> this.getDatabaseService().createOrUpdate(item, Notification.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Notification find(UUID id) throws InvalidApplicationException {
|
|
||||||
return this.getDatabaseService().getQueryable(Notification.class).where(((builder, root) -> builder.equal(root.get("id"), id))).getSingle();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Notification find(UUID id, String hint) {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void delete(Notification item) {
|
|
||||||
this.getDatabaseService().delete(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public QueryableList<Notification> asQueryable() {
|
|
||||||
return this.getDatabaseService().getQueryable(Notification.class);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -2672,22 +2672,22 @@ public class DataManagementPlanManager {
|
||||||
List<DmpUserEntity> userDMPS = this.queryFactory.query(DmpUserQuery.class).dmpIds(dmp.getId()).collect();
|
List<DmpUserEntity> userDMPS = this.queryFactory.query(DmpUserQuery.class).dmpIds(dmp.getId()).collect();
|
||||||
for (DmpUserEntity userDMP : userDMPS) {
|
for (DmpUserEntity userDMP : userDMPS) {
|
||||||
if (!userDMP.getUserId().equals(user.getId())) {
|
if (!userDMP.getUserId().equals(user.getId())) {
|
||||||
Notification notification = new Notification();
|
// Notification notification = new Notification(); //TODO
|
||||||
notification.setUserId(user);
|
// notification.setUserId(user);
|
||||||
notification.setType(notificationType);
|
// notification.setType(notificationType);
|
||||||
notification.setNotifyState(NotifyState.PENDING);
|
// notification.setNotifyState(NotifyState.PENDING);
|
||||||
notification.setIsActive(ActiveStatus.ACTIVE);
|
// notification.setIsActive(ActiveStatus.ACTIVE);
|
||||||
notification.setData("{" +
|
// notification.setData("{" +
|
||||||
"\"userId\": \"" + userDMP.getId() + "\"" +
|
// "\"userId\": \"" + userDMP.getId() + "\"" +
|
||||||
// ", \"id\": \"" + userDMP.getDmp().getId() + "\"" + //TODO
|
//// ", \"id\": \"" + userDMP.getDmp().getId() + "\"" + //TODO
|
||||||
// ", \"name\": \"" + userDMP.getDmp().getLabel() + "\"" +
|
//// ", \"name\": \"" + userDMP.getDmp().getLabel() + "\"" +
|
||||||
", \"path\": \"" + notificationPaths.get(notificationType) +"\"" +
|
// ", \"path\": \"" + notificationPaths.get(notificationType) +"\"" +
|
||||||
"}");
|
// "}");
|
||||||
notification.setCreatedAt(new Date());
|
// notification.setCreatedAt(new Date());
|
||||||
notification.setUpdatedAt(notification.getCreatedAt());
|
// notification.setUpdatedAt(notification.getCreatedAt());
|
||||||
notification.setContactTypeHint(ContactType.EMAIL);
|
// notification.setContactTypeHint(ContactType.EMAIL);
|
||||||
//notification.setContactHint(userDMP.getUser().getEmail()); //TODO
|
// //notification.setContactHint(userDMP.getUser().getEmail()); //TODO
|
||||||
databaseRepository.getNotificationDao().createOrUpdate(notification);
|
// databaseRepository.getNotificationDao().createOrUpdate(notification);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -730,25 +730,25 @@ public class DatasetManager {
|
||||||
List<DmpUserEntity> userDMPS = this.queryFactory.query(DmpUserQuery.class).dmpIds(dmp.getId()).collect();
|
List<DmpUserEntity> userDMPS = this.queryFactory.query(DmpUserQuery.class).dmpIds(dmp.getId()).collect();
|
||||||
for (DmpUserEntity userDMP : userDMPS) {
|
for (DmpUserEntity userDMP : userDMPS) {
|
||||||
if (!userDMP.getUserId().equals(user.getId())) {
|
if (!userDMP.getUserId().equals(user.getId())) {
|
||||||
Notification notification = new Notification();
|
// Notification notification = new Notification(); //TODO
|
||||||
notification.setUserId(user);
|
// notification.setUserId(user);
|
||||||
notification.setType(notificationType);
|
// notification.setType(notificationType);
|
||||||
notification.setNotifyState(NotifyState.PENDING);
|
// notification.setNotifyState(NotifyState.PENDING);
|
||||||
notification.setIsActive(ActiveStatus.ACTIVE);
|
// notification.setIsActive(ActiveStatus.ACTIVE);
|
||||||
notification.setData("{" +
|
// notification.setData("{" +
|
||||||
"\"userId\": \"" + userDMP.getUserId() + "\"" +
|
// "\"userId\": \"" + userDMP.getUserId() + "\"" +
|
||||||
", \"id\": \"" + descriptionEntity.getId() + "\"" +
|
// ", \"id\": \"" + descriptionEntity.getId() + "\"" +
|
||||||
", \"name\": \"" + descriptionEntity.getLabel() + "\"" +
|
// ", \"name\": \"" + descriptionEntity.getLabel() + "\"" +
|
||||||
", \"path\": \"" + notificationPaths.get(notificationType) + "\"" +
|
// ", \"path\": \"" + notificationPaths.get(notificationType) + "\"" +
|
||||||
"}");
|
// "}");
|
||||||
notification.setCreatedAt(new Date());
|
// notification.setCreatedAt(new Date());
|
||||||
notification.setUpdatedAt(notification.getCreatedAt());
|
// notification.setUpdatedAt(notification.getCreatedAt());
|
||||||
notification.setContactTypeHint(ContactType.EMAIL);
|
// notification.setContactTypeHint(ContactType.EMAIL);
|
||||||
|
//
|
||||||
UserContactInfoQuery query = this.queryFactory.query(UserContactInfoQuery.class).userIds(userDMP.getUserId());
|
// UserContactInfoQuery query = this.queryFactory.query(UserContactInfoQuery.class).userIds(userDMP.getUserId());
|
||||||
query.setOrder(new Ordering().addAscending(UserContactInfo._ordinal));
|
// query.setOrder(new Ordering().addAscending(UserContactInfo._ordinal));
|
||||||
notification.setContactHint(query.first().getValue());
|
// notification.setContactHint(query.first().getValue());
|
||||||
databaseRepository.getNotificationDao().createOrUpdate(notification);
|
// databaseRepository.getNotificationDao().createOrUpdate(notification);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,6 @@
|
||||||
package eu.eudat.logic.managers;
|
package eu.eudat.logic.managers;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import eu.eudat.data.old.Notification;
|
|
||||||
import eu.eudat.data.UserEntity;
|
|
||||||
import eu.eudat.commons.enums.old.notification.ActiveStatus;
|
|
||||||
import eu.eudat.commons.enums.old.notification.NotifyState;
|
|
||||||
import eu.eudat.logic.services.ApiContext;
|
import eu.eudat.logic.services.ApiContext;
|
||||||
import eu.eudat.query.UserQuery;
|
|
||||||
import gr.cite.tools.data.query.QueryFactory;
|
import gr.cite.tools.data.query.QueryFactory;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -14,11 +8,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import jakarta.mail.MessagingException;
|
|
||||||
import jakarta.transaction.Transactional;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class NotificationManager {
|
public class NotificationManager {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(NotificationManager.class);
|
private static final Logger logger = LoggerFactory.getLogger(NotificationManager.class);
|
||||||
|
@ -36,91 +25,91 @@ public class NotificationManager {
|
||||||
this.queryFactory = queryFactory;
|
this.queryFactory = queryFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
// @Transactional
|
||||||
public void sendNotification(Notification notification) throws Exception {
|
// public void sendNotification(Notification notification) throws Exception {
|
||||||
if (notification.getNotifyState() == NotifyState.ERROR) {
|
// if (notification.getNotifyState() == NotifyState.ERROR) {
|
||||||
if (notification.getRetryCount() == null) {
|
// if (notification.getRetryCount() == null) {
|
||||||
notification.setRetryCount(0);
|
// notification.setRetryCount(0);
|
||||||
}
|
|
||||||
notification.setRetryCount(notification.getRetryCount() + 1);
|
|
||||||
if (notification.getRetryCount() >= this.environment.getProperty("notification.maxRetries", Integer.class)) {
|
|
||||||
notification.setIsActive(ActiveStatus.INACTIVE);
|
|
||||||
notification.setUpdatedAt(new Date());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
notification.setNotifyState(NotifyState.PROCESSING);
|
|
||||||
notification.setNotifiedAt(new Date());
|
|
||||||
notification.setUpdatedAt(new Date());
|
|
||||||
try {
|
|
||||||
Map<String, String> data = new ObjectMapper().readValue(notification.getData(), HashMap.class);
|
|
||||||
UserEntity userInfo = this.queryFactory.query(UserQuery.class).ids(UUID.fromString(data.get("userId"))).first();
|
|
||||||
String subjectTemplate = "";
|
|
||||||
String contentTemplate = "";
|
|
||||||
|
|
||||||
switch (notification.getType()) {
|
|
||||||
case DMP_MODIFIED:
|
|
||||||
case DATASET_MODIFIED:
|
|
||||||
subjectTemplate = this.environment.getProperty("notification.modified.subject");
|
|
||||||
// contentTemplate = mailService.getMailTemplateContent(this.environment.getProperty("notification.modified.template"));
|
|
||||||
break;
|
|
||||||
case DMP_PUBLISH:
|
|
||||||
subjectTemplate = this.environment.getProperty("notification.publish.subject");
|
|
||||||
// contentTemplate = mailService.getMailTemplateContent(this.environment.getProperty("notification.publish.template"));
|
|
||||||
break;
|
|
||||||
case DMP_FINALISED:
|
|
||||||
subjectTemplate = this.environment.getProperty("notification.finalised.subject");
|
|
||||||
// contentTemplate = mailService.getMailTemplateContent(this.environment.getProperty("notification.finalised.template"));
|
|
||||||
break;
|
|
||||||
case DMP_MODIFIED_FINALISED:
|
|
||||||
case DATASET_MODIFIED_FINALISED:
|
|
||||||
subjectTemplate = this.environment.getProperty("notification.modifiedFinalised.subject");
|
|
||||||
// contentTemplate = mailService.getMailTemplateContent(this.environment.getProperty("notification.modified_finalised.template"));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
switch (notification.getContactTypeHint()) {
|
|
||||||
case EMAIL:
|
|
||||||
this.sendEmailNotification(notification, userInfo, data, subjectTemplate, contentTemplate);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}catch (Exception e) {
|
|
||||||
notification.setNotifyState(NotifyState.ERROR);
|
|
||||||
notification.setUpdatedAt(new Date());
|
|
||||||
logger.error(e.getMessage(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void sendEmailNotification(Notification notification, UserEntity userInfo, Map<String, String> data, String subjectTemplate, String contentTemplate) throws IOException {
|
|
||||||
// SimpleMail simpleMail = new SimpleMail();
|
|
||||||
// simpleMail.setFrom(this.environment.getProperty("mail.from"));
|
|
||||||
// simpleMail.setSubject(makeSubject(data, subjectTemplate));
|
|
||||||
// simpleMail.setTo(notification.getContactHint());
|
|
||||||
// simpleMail.setContent(makeContent(data, notification, userInfo, contentTemplate));
|
|
||||||
// try {
|
|
||||||
// mailService.sendSimpleMail(simpleMail);
|
|
||||||
// notification.setNotifyState(NotifyState.SUCCEEDED);
|
|
||||||
// notification.setUpdatedAt(new Date());
|
|
||||||
// } catch (MessagingException e) {
|
|
||||||
// notification.setNotifyState(NotifyState.ERROR);
|
|
||||||
// notification.setUpdatedAt(new Date());
|
|
||||||
// logger.error(e.getMessage(), e);
|
|
||||||
// }
|
// }
|
||||||
}
|
// notification.setRetryCount(notification.getRetryCount() + 1);
|
||||||
|
// if (notification.getRetryCount() >= this.environment.getProperty("notification.maxRetries", Integer.class)) {
|
||||||
private String makeSubject(Map<String, String> data, String subjectTemplate) {
|
// notification.setIsActive(ActiveStatus.INACTIVE);
|
||||||
return subjectTemplate.replace("{name}", data.get("name"));
|
// notification.setUpdatedAt(new Date());
|
||||||
}
|
// return;
|
||||||
|
// }
|
||||||
private String makeContent(Map<String, String> data, Notification notification, UserEntity userInfo, String template) {
|
// }
|
||||||
String content = template;
|
// notification.setNotifyState(NotifyState.PROCESSING);
|
||||||
content = content.replace("{recipient}", userInfo.getName());
|
// notification.setNotifiedAt(new Date());
|
||||||
for (String key : data.keySet()) {
|
// notification.setUpdatedAt(new Date());
|
||||||
content = content.replace("{" + key +"}", data.get(key));
|
// try {
|
||||||
}
|
// Map<String, String> data = new ObjectMapper().readValue(notification.getData(), HashMap.class);
|
||||||
content = content.replace("{host}", this.environment.getProperty("dmp.domain"));
|
// UserEntity userInfo = this.queryFactory.query(UserQuery.class).ids(UUID.fromString(data.get("userId"))).first();
|
||||||
content = content.replace("{reasonName}", notification.getUserId().getName());
|
// String subjectTemplate = "";
|
||||||
return content;
|
// String contentTemplate = "";
|
||||||
}
|
//
|
||||||
|
// switch (notification.getType()) {
|
||||||
|
// case DMP_MODIFIED:
|
||||||
|
// case DATASET_MODIFIED:
|
||||||
|
// subjectTemplate = this.environment.getProperty("notification.modified.subject");
|
||||||
|
//// contentTemplate = mailService.getMailTemplateContent(this.environment.getProperty("notification.modified.template"));
|
||||||
|
// break;
|
||||||
|
// case DMP_PUBLISH:
|
||||||
|
// subjectTemplate = this.environment.getProperty("notification.publish.subject");
|
||||||
|
//// contentTemplate = mailService.getMailTemplateContent(this.environment.getProperty("notification.publish.template"));
|
||||||
|
// break;
|
||||||
|
// case DMP_FINALISED:
|
||||||
|
// subjectTemplate = this.environment.getProperty("notification.finalised.subject");
|
||||||
|
//// contentTemplate = mailService.getMailTemplateContent(this.environment.getProperty("notification.finalised.template"));
|
||||||
|
// break;
|
||||||
|
// case DMP_MODIFIED_FINALISED:
|
||||||
|
// case DATASET_MODIFIED_FINALISED:
|
||||||
|
// subjectTemplate = this.environment.getProperty("notification.modifiedFinalised.subject");
|
||||||
|
//// contentTemplate = mailService.getMailTemplateContent(this.environment.getProperty("notification.modified_finalised.template"));
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// switch (notification.getContactTypeHint()) {
|
||||||
|
// case EMAIL:
|
||||||
|
// this.sendEmailNotification(notification, userInfo, data, subjectTemplate, contentTemplate);
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }catch (Exception e) {
|
||||||
|
// notification.setNotifyState(NotifyState.ERROR);
|
||||||
|
// notification.setUpdatedAt(new Date());
|
||||||
|
// logger.error(e.getMessage(), e);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// private void sendEmailNotification(Notification notification, UserEntity userInfo, Map<String, String> data, String subjectTemplate, String contentTemplate) throws IOException {
|
||||||
|
//// SimpleMail simpleMail = new SimpleMail();
|
||||||
|
//// simpleMail.setFrom(this.environment.getProperty("mail.from"));
|
||||||
|
//// simpleMail.setSubject(makeSubject(data, subjectTemplate));
|
||||||
|
//// simpleMail.setTo(notification.getContactHint());
|
||||||
|
//// simpleMail.setContent(makeContent(data, notification, userInfo, contentTemplate));
|
||||||
|
//// try {
|
||||||
|
//// mailService.sendSimpleMail(simpleMail);
|
||||||
|
//// notification.setNotifyState(NotifyState.SUCCEEDED);
|
||||||
|
//// notification.setUpdatedAt(new Date());
|
||||||
|
//// } catch (MessagingException e) {
|
||||||
|
//// notification.setNotifyState(NotifyState.ERROR);
|
||||||
|
//// notification.setUpdatedAt(new Date());
|
||||||
|
//// logger.error(e.getMessage(), e);
|
||||||
|
//// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// private String makeSubject(Map<String, String> data, String subjectTemplate) {
|
||||||
|
// return subjectTemplate.replace("{name}", data.get("name"));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// private String makeContent(Map<String, String> data, Notification notification, UserEntity userInfo, String template) {
|
||||||
|
// String content = template;
|
||||||
|
// content = content.replace("{recipient}", userInfo.getName());
|
||||||
|
// for (String key : data.keySet()) {
|
||||||
|
// content = content.replace("{" + key +"}", data.get(key));
|
||||||
|
// }
|
||||||
|
// content = content.replace("{host}", this.environment.getProperty("dmp.domain"));
|
||||||
|
// content = content.replace("{reasonName}", notification.getUserId().getName());
|
||||||
|
// return content;
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,9 +18,6 @@ public interface DatabaseRepository {
|
||||||
|
|
||||||
EmailConfirmationDao getLoginConfirmationEmailDao();
|
EmailConfirmationDao getLoginConfirmationEmailDao();
|
||||||
|
|
||||||
|
|
||||||
NotificationDao getNotificationDao();
|
|
||||||
|
|
||||||
FileUploadDao getFileUploadDao();
|
FileUploadDao getFileUploadDao();
|
||||||
|
|
||||||
<T> void detachEntity(T entity);
|
<T> void detachEntity(T entity);
|
||||||
|
|
|
@ -22,8 +22,6 @@ public class DatabaseRepositoryImpl implements DatabaseRepository {
|
||||||
private EmailConfirmationDao loginConfirmationEmailDao;
|
private EmailConfirmationDao loginConfirmationEmailDao;
|
||||||
|
|
||||||
|
|
||||||
private NotificationDao notificationDao;
|
|
||||||
|
|
||||||
private FileUploadDao fileUploadDao;
|
private FileUploadDao fileUploadDao;
|
||||||
|
|
||||||
private EntityManager entityManager;
|
private EntityManager entityManager;
|
||||||
|
@ -97,16 +95,6 @@ public class DatabaseRepositoryImpl implements DatabaseRepository {
|
||||||
this.loginConfirmationEmailDao = loginConfirmationEmailDao;
|
this.loginConfirmationEmailDao = loginConfirmationEmailDao;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public NotificationDao getNotificationDao() {
|
|
||||||
return notificationDao;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public void setNotificationDao(NotificationDao notificationDao) {
|
|
||||||
this.notificationDao = notificationDao;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FileUploadDao getFileUploadDao() {
|
public FileUploadDao getFileUploadDao() {
|
||||||
|
|
|
@ -1,22 +1,12 @@
|
||||||
package eu.eudat.logic.utilities.schedule.notification;
|
package eu.eudat.logic.utilities.schedule.notification;
|
||||||
|
|
||||||
import eu.eudat.data.old.Notification;
|
|
||||||
import eu.eudat.commons.enums.old.notification.ActiveStatus;
|
|
||||||
import eu.eudat.commons.enums.old.notification.NotifyState;
|
|
||||||
import eu.eudat.logic.managers.NotificationManager;
|
import eu.eudat.logic.managers.NotificationManager;
|
||||||
import eu.eudat.logic.services.ApiContext;
|
import eu.eudat.logic.services.ApiContext;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import jakarta.transaction.Transactional;
|
|
||||||
|
|
||||||
import javax.management.InvalidApplicationException;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class NotificationScheduleJob {
|
public class NotificationScheduleJob {
|
||||||
|
@ -31,29 +21,29 @@ public class NotificationScheduleJob {
|
||||||
this.notificationManager = notificationManager;
|
this.notificationManager = notificationManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
// @Transactional //TODO
|
||||||
@Scheduled(fixedRateString = "${notification.rateInterval}")
|
// @Scheduled(fixedRateString = "${notification.rateInterval}")
|
||||||
public void sendNotifications() throws InvalidApplicationException {
|
// public void sendNotifications() throws InvalidApplicationException {
|
||||||
List<CompletableFuture<Notification>> futures = new LinkedList<>();
|
// List<CompletableFuture<Notification>> futures = new LinkedList<>();
|
||||||
this.apiContext.getOperationsContext().getDatabaseRepository().getNotificationDao().asQueryable().where(((builder, root) ->
|
// this.apiContext.getOperationsContext().getDatabaseRepository().getNotificationDao().asQueryable().where(((builder, root) ->
|
||||||
builder.and(
|
// builder.and(
|
||||||
builder.or(
|
// builder.or(
|
||||||
builder.equal(root.get("notifyState"), NotifyState.PENDING), builder.equal(root.get("notifyState"), NotifyState.ERROR))
|
// builder.equal(root.get("notifyState"), NotifyState.PENDING), builder.equal(root.get("notifyState"), NotifyState.ERROR))
|
||||||
, builder.equal(root.get("isActive"), ActiveStatus.ACTIVE)))).toListAsync().thenApplyAsync((notifications) -> {
|
// , builder.equal(root.get("isActive"), ActiveStatus.ACTIVE)))).toListAsync().thenApplyAsync((notifications) -> {
|
||||||
if (!notifications.isEmpty()) {
|
// if (!notifications.isEmpty()) {
|
||||||
notifications.forEach(notification -> {
|
// notifications.forEach(notification -> {
|
||||||
try {
|
// try {
|
||||||
this.notificationManager.sendNotification(notification);
|
// this.notificationManager.sendNotification(notification);
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
logger.error(e.getMessage(), e);
|
// logger.error(e.getMessage(), e);
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
return notifications;
|
// return notifications;
|
||||||
}).thenApplyAsync((notifications) -> {
|
// }).thenApplyAsync((notifications) -> {
|
||||||
notifications.forEach((notification) -> futures.add(this.apiContext.getOperationsContext().getDatabaseRepository().getNotificationDao().createOrUpdateAsync(notification)));
|
// notifications.forEach((notification) -> futures.add(this.apiContext.getOperationsContext().getDatabaseRepository().getNotificationDao().createOrUpdateAsync(notification)));
|
||||||
return futures;
|
// return futures;
|
||||||
}).join();
|
// }).join();
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,163 +0,0 @@
|
||||||
package eu.eudat.models.data.notiication;
|
|
||||||
|
|
||||||
import eu.eudat.commons.enums.old.notification.ActiveStatus;
|
|
||||||
import eu.eudat.commons.enums.old.notification.ContactType;
|
|
||||||
import eu.eudat.commons.enums.old.notification.NotificationType;
|
|
||||||
import eu.eudat.commons.enums.old.notification.NotifyState;
|
|
||||||
import eu.eudat.model.User;
|
|
||||||
import eu.eudat.models.DataModel;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
public class Notification implements DataModel<eu.eudat.data.old.Notification, Notification> {
|
|
||||||
|
|
||||||
private UUID id;
|
|
||||||
private User userId;
|
|
||||||
private ActiveStatus isActive;
|
|
||||||
private NotificationType type;
|
|
||||||
private ContactType contactTypeHint;
|
|
||||||
private String contactHint;
|
|
||||||
private String data;
|
|
||||||
private NotifyState notifyState;
|
|
||||||
private Date notifiedAt;
|
|
||||||
private Integer retryCount;
|
|
||||||
private Date createdAt;
|
|
||||||
private Date updatedAt;
|
|
||||||
|
|
||||||
public UUID getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(UUID id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public User getUserId() {
|
|
||||||
return userId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUserId(User userId) {
|
|
||||||
this.userId = userId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ActiveStatus getIsActive() {
|
|
||||||
return isActive;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIsActive(ActiveStatus isActive) {
|
|
||||||
this.isActive = isActive;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NotificationType getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setType(NotificationType type) {
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ContactType getContactTypeHint() {
|
|
||||||
return contactTypeHint;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setContactTypeHint(ContactType contactTypeHint) {
|
|
||||||
this.contactTypeHint = contactTypeHint;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getContactHint() {
|
|
||||||
return contactHint;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setContactHint(String contactHint) {
|
|
||||||
this.contactHint = contactHint;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getData() {
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setData(String data) {
|
|
||||||
this.data = data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NotifyState getNotifyState() {
|
|
||||||
return notifyState;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNotifyState(NotifyState notifyState) {
|
|
||||||
this.notifyState = notifyState;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getNotifiedAt() {
|
|
||||||
return notifiedAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNotifiedAt(Date notifiedAt) {
|
|
||||||
this.notifiedAt = notifiedAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getRetryCount() {
|
|
||||||
return retryCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRetryCount(Integer retryCount) {
|
|
||||||
this.retryCount = retryCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getCreatedAt() {
|
|
||||||
return createdAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCreatedAt(Date createdAt) {
|
|
||||||
this.createdAt = createdAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getUpdatedAt() {
|
|
||||||
return updatedAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUpdatedAt(Date updatedAt) {
|
|
||||||
this.updatedAt = updatedAt;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Notification fromDataModel(eu.eudat.data.old.Notification entity) {
|
|
||||||
this.id = entity.getId();
|
|
||||||
this.contactHint = entity.getContactHint();
|
|
||||||
this.contactTypeHint = entity.getContactTypeHint();
|
|
||||||
this.createdAt = entity.getCreatedAt();
|
|
||||||
this.data = entity.getData();
|
|
||||||
this.isActive = entity.getIsActive();
|
|
||||||
this.notifiedAt = entity.getNotifiedAt();
|
|
||||||
this.notifyState = entity.getNotifyState();
|
|
||||||
this.retryCount = entity.getRetryCount();
|
|
||||||
this.type = entity.getType();
|
|
||||||
this.updatedAt = entity.getUpdatedAt();
|
|
||||||
// this.userId = new UserInfo().fromDataModel(entity.getUserId());
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public eu.eudat.data.old.Notification toDataModel() throws Exception {
|
|
||||||
eu.eudat.data.old.Notification entity = new eu.eudat.data.old.Notification();
|
|
||||||
entity.setId(this.id);
|
|
||||||
entity.setContactHint(this.contactHint);
|
|
||||||
entity.setContactTypeHint(this.contactTypeHint);
|
|
||||||
entity.setCreatedAt(this.createdAt);
|
|
||||||
entity.setData(this.data);
|
|
||||||
entity.setIsActive(this.isActive);
|
|
||||||
entity.setNotifiedAt(this.notifiedAt);
|
|
||||||
entity.setNotifyState(this.notifyState);
|
|
||||||
entity.setRetryCount(this.retryCount);
|
|
||||||
entity.setType(this.type);
|
|
||||||
entity.setUpdatedAt(this.updatedAt);
|
|
||||||
// entity.setUserId(this.userId.toDataModel());
|
|
||||||
return entity;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getHint() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue