Created thread for job notifications. Enhanced the post notifications one with a constructor that uses Set instead of lists to avoid duplicates
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portal/notifications-common-library@141667 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
9b5d34d81f
commit
c6f28e42f2
|
@ -0,0 +1,55 @@
|
||||||
|
package org.gcube.portal.notifications.thread;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.applicationsupportlayer.social.NotificationsManager;
|
||||||
|
import org.gcube.portal.databook.shared.RunningJob;
|
||||||
|
import org.gcube.portal.notifications.bean.GenericItemBean;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A job status notification thread.
|
||||||
|
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
|
||||||
|
*/
|
||||||
|
public class JobStatusNotificationThread implements Runnable {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(JobStatusNotificationThread.class);
|
||||||
|
private RunningJob jobDescriptor;
|
||||||
|
private List<GenericItemBean> recipients;
|
||||||
|
private NotificationsManager nm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param jobDescriptor
|
||||||
|
* @param applicationQualifier
|
||||||
|
* @param recipients
|
||||||
|
* @param nm
|
||||||
|
*/
|
||||||
|
public JobStatusNotificationThread(RunningJob jobDescriptor, List<GenericItemBean> recipients,
|
||||||
|
NotificationsManager nm) {
|
||||||
|
super();
|
||||||
|
this.jobDescriptor = jobDescriptor;
|
||||||
|
this.recipients = recipients;
|
||||||
|
this.nm = nm;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
|
||||||
|
logger.debug("Starting job notification thread. Recipients of this notification are " + recipients);
|
||||||
|
|
||||||
|
for (GenericItemBean recipient : recipients) {
|
||||||
|
try{
|
||||||
|
String userIdToNotify = recipient.getName();
|
||||||
|
nm.notifyJobStatus(userIdToNotify, jobDescriptor);
|
||||||
|
}catch(Exception e){
|
||||||
|
logger.error("Failed to send notification", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logger.debug("Notification job thread ended");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
package org.gcube.portal.notifications.thread;
|
package org.gcube.portal.notifications.thread;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.gcube.applicationsupportlayer.social.NotificationsManager;
|
import org.gcube.applicationsupportlayer.social.NotificationsManager;
|
||||||
import org.gcube.vomanagement.usermanagement.UserManager;
|
import org.gcube.vomanagement.usermanagement.UserManager;
|
||||||
|
@ -19,19 +19,22 @@ public class PostNotificationsThread implements Runnable {
|
||||||
private String postText;
|
private String postText;
|
||||||
private String postId;
|
private String postId;
|
||||||
private long groupId;
|
private long groupId;
|
||||||
private List<String> hashtags;
|
private Set<String> hashtags;
|
||||||
private NotificationsManager nm;
|
private NotificationsManager nm;
|
||||||
private UserManager userManager;
|
private UserManager userManager;
|
||||||
|
private Set<String> mentionedVREGroups;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
* @param userManager
|
||||||
* @param postId
|
* @param postId
|
||||||
* @param postText
|
* @param postText
|
||||||
* @param groupId the LR groupId
|
* @param groupId
|
||||||
* @param nm
|
* @param nm
|
||||||
* @param hashtags
|
* @param hashtags
|
||||||
|
* @param mentionedVREGroups
|
||||||
*/
|
*/
|
||||||
public PostNotificationsThread(UserManager userManager, String postId, String postText, String groupId, NotificationsManager nm, List<String> hashtags) {
|
public PostNotificationsThread(UserManager userManager, String postId, String postText, String groupId, NotificationsManager nm, Set<String> hashtags, Set<String> mentionedVREGroups) {
|
||||||
super();
|
super();
|
||||||
this.postId = postId;
|
this.postId = postId;
|
||||||
this.postText = postText;
|
this.postText = postText;
|
||||||
|
@ -39,14 +42,14 @@ public class PostNotificationsThread implements Runnable {
|
||||||
this.hashtags = hashtags;
|
this.hashtags = hashtags;
|
||||||
this.nm = nm;
|
this.nm = nm;
|
||||||
this.userManager = userManager;
|
this.userManager = userManager;
|
||||||
|
this.mentionedVREGroups = mentionedVREGroups;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
String[] hashtagsToPass = hashtags.toArray(new String[hashtags.size()]);
|
|
||||||
try {
|
try {
|
||||||
for (GCubeUser user : userManager.listUsersByGroup(groupId)) {
|
for (GCubeUser user : userManager.listUsersByGroup(groupId)) {
|
||||||
boolean result = nm.notifyPost(user.getUsername(), postId, postText, hashtagsToPass);
|
boolean result = nm.notifyPost(user.getUsername(), postId, postText, mentionedVREGroups, hashtags);
|
||||||
_log.trace("Sending Notification for post alert to: " + user.getUsername() + " result?"+ result);
|
_log.trace("Sending Notification for post alert to: " + user.getUsername() + " result?"+ result);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
Loading…
Reference in New Issue