revised job notifications
This commit is contained in:
parent
be9f36822f
commit
04493ed776
|
@ -1,147 +0,0 @@
|
||||||
package org.gcube.portal.social.networking.ws.inputs;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
import org.gcube.portal.databook.shared.JobStatusType;
|
|
||||||
import org.gcube.portal.databook.shared.RunningJob;
|
|
||||||
import org.gcube.portal.social.networking.ws.providers.JobStatusTypeDeserializer;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
|
||||||
import com.webcohesion.enunciate.metadata.DocumentationExample;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The job notification bean class.
|
|
||||||
*/
|
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true) // ignore in serialization/deserialization
|
|
||||||
/**
|
|
||||||
* @label A job notification object
|
|
||||||
*/
|
|
||||||
public class JobNotificationBean {
|
|
||||||
|
|
||||||
@JsonProperty("recipient")
|
|
||||||
@NotNull(message="recipient cannot be missing")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @param "The recipient of the notification",
|
|
||||||
*/
|
|
||||||
@DocumentationExample("andrea.rossi")
|
|
||||||
private String recipient;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @param jobId The job's identifier, i.e. very likely a UUID
|
|
||||||
*/
|
|
||||||
@JsonProperty("job_id")
|
|
||||||
private String jobId;
|
|
||||||
|
|
||||||
@JsonProperty("job_name")
|
|
||||||
private String jobName;
|
|
||||||
|
|
||||||
@JsonProperty("service_name")
|
|
||||||
@NotNull(message="service_name cannot be missing")
|
|
||||||
/*
|
|
||||||
* @param serviceName The name of the service running the job
|
|
||||||
*/
|
|
||||||
private String serviceName;
|
|
||||||
|
|
||||||
@JsonProperty("status")
|
|
||||||
@JsonDeserialize(using=JobStatusTypeDeserializer.class)
|
|
||||||
@NotNull(message="status cannot be missing")
|
|
||||||
private JobStatusType status;
|
|
||||||
|
|
||||||
@JsonProperty("status_message")
|
|
||||||
private String statusMessage;
|
|
||||||
|
|
||||||
public JobNotificationBean() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param recipient
|
|
||||||
* @param jobId
|
|
||||||
* @param jobName
|
|
||||||
* @param serviceName
|
|
||||||
* @param status
|
|
||||||
* @param statusMessage
|
|
||||||
*/
|
|
||||||
public JobNotificationBean(String recipient, String jobId, String jobName,
|
|
||||||
String serviceName, JobStatusType status, String statusMessage) {
|
|
||||||
super();
|
|
||||||
this.recipient = recipient;
|
|
||||||
this.jobId = jobId;
|
|
||||||
this.jobName = jobName;
|
|
||||||
this.serviceName = serviceName;
|
|
||||||
this.status = status;
|
|
||||||
this.statusMessage = statusMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStatusMessage() {
|
|
||||||
return statusMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatusMessage(String statusMessage) {
|
|
||||||
this.statusMessage = statusMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecipient() {
|
|
||||||
return recipient;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecipient(String recipient) {
|
|
||||||
this.recipient = recipient;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getServiceName() {
|
|
||||||
return serviceName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setServiceName(String serviceName) {
|
|
||||||
this.serviceName = serviceName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getJobId() {
|
|
||||||
return jobId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setJobId(String jobId) {
|
|
||||||
this.jobId = jobId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getJobName() {
|
|
||||||
return jobName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setJobName(String jobName) {
|
|
||||||
this.jobName = jobName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public JobStatusType getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(JobStatusType status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RunningJob getRunningJob(){
|
|
||||||
|
|
||||||
return new RunningJob(jobId, jobName, status, statusMessage, serviceName);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "JobNotificationBean ["
|
|
||||||
+ (recipient != null ? "recipient=" + recipient + ", " : "")
|
|
||||||
+ (jobId != null ? "jobId=" + jobId + ", " : "")
|
|
||||||
+ (jobName != null ? "jobName=" + jobName + ", " : "")
|
|
||||||
+ (serviceName != null ? "serviceName=" + serviceName + ", "
|
|
||||||
: "")
|
|
||||||
+ (status != null ? "status=" + status + ", " : "")
|
|
||||||
+ (statusMessage != null ? "statusMessage=" + statusMessage
|
|
||||||
: "") + "]";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
package org.gcube.portal.social.networking.ws.mappers;
|
||||||
|
|
||||||
|
import org.gcube.portal.databook.shared.JobStatusType;
|
||||||
|
import org.gcube.portal.databook.shared.RunningJob;
|
||||||
|
import org.gcube.social_networking.socialnetworking.model.beans.JobNotificationBean;
|
||||||
|
import org.gcube.social_networking.socialnetworking.model.beans.JobStatusModelType;
|
||||||
|
|
||||||
|
public class JobMapper {
|
||||||
|
|
||||||
|
public JobMapper() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static RunningJob getJob(JobNotificationBean item) {
|
||||||
|
String jobId = null;
|
||||||
|
String jobName = null;
|
||||||
|
JobStatusType status = null;
|
||||||
|
String message = null;
|
||||||
|
String serviceName = null; // i.e., Dataminer, SmartExecutor..
|
||||||
|
|
||||||
|
try {
|
||||||
|
jobId = item.getJobId();
|
||||||
|
jobName = item.getJobName();
|
||||||
|
status = getType(item.getStatus());
|
||||||
|
message = item.getStatusMessage();
|
||||||
|
serviceName = item.getServiceName();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return new RunningJob(jobId, jobName, status, message, serviceName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static JobStatusType getType(JobStatusModelType type) {
|
||||||
|
JobStatusType toReturn = null;
|
||||||
|
switch (type) {
|
||||||
|
case CANCELLED:
|
||||||
|
return JobStatusType.CANCELLED;
|
||||||
|
case DELETED:
|
||||||
|
return JobStatusType.DELETED;
|
||||||
|
case FAILED:
|
||||||
|
return JobStatusType.FAILED;
|
||||||
|
case CANCELLING:
|
||||||
|
return JobStatusType.CANCELLING;
|
||||||
|
case DELETING:
|
||||||
|
return JobStatusType.DELETING;
|
||||||
|
case EXECUTING:
|
||||||
|
return JobStatusType.EXECUTING;
|
||||||
|
case NEW:
|
||||||
|
return JobStatusType.NEW;
|
||||||
|
case SUBMITTED:
|
||||||
|
return JobStatusType.SUBMITTED;
|
||||||
|
case SUCCEEDED:
|
||||||
|
return JobStatusType.SUCCEEDED;
|
||||||
|
case TIMED_OUT:
|
||||||
|
return JobStatusType.TIMED_OUT;
|
||||||
|
case WAITING:
|
||||||
|
return JobStatusType.WAITING;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return toReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -20,29 +20,27 @@ import javax.ws.rs.core.Response.Status;
|
||||||
|
|
||||||
import org.gcube.applicationsupportlayer.social.ApplicationNotificationsManager;
|
import org.gcube.applicationsupportlayer.social.ApplicationNotificationsManager;
|
||||||
import org.gcube.applicationsupportlayer.social.NotificationsManager;
|
import org.gcube.applicationsupportlayer.social.NotificationsManager;
|
||||||
import org.gcube.applicationsupportlayer.social.shared.SocialFileItem;
|
|
||||||
import org.gcube.applicationsupportlayer.social.shared.SocialNetworkingSite;
|
import org.gcube.applicationsupportlayer.social.shared.SocialNetworkingSite;
|
||||||
import org.gcube.applicationsupportlayer.social.shared.SocialNetworkingUser;
|
import org.gcube.applicationsupportlayer.social.shared.SocialNetworkingUser;
|
||||||
import org.gcube.applicationsupportlayer.social.shared.SocialSharedFolder;
|
|
||||||
import org.gcube.common.authorization.library.provider.AuthorizationProvider;
|
import org.gcube.common.authorization.library.provider.AuthorizationProvider;
|
||||||
import org.gcube.common.authorization.library.utils.Caller;
|
import org.gcube.common.authorization.library.utils.Caller;
|
||||||
import org.gcube.common.scope.api.ScopeProvider;
|
import org.gcube.common.scope.api.ScopeProvider;
|
||||||
import org.gcube.portal.databook.shared.Notification;
|
import org.gcube.portal.databook.shared.Notification;
|
||||||
|
import org.gcube.portal.databook.shared.RunningJob;
|
||||||
import org.gcube.portal.notifications.bean.GenericItemBean;
|
import org.gcube.portal.notifications.bean.GenericItemBean;
|
||||||
import org.gcube.portal.notifications.thread.JobStatusNotificationThread;
|
import org.gcube.portal.notifications.thread.JobStatusNotificationThread;
|
||||||
import org.gcube.portal.social.networking.caches.SocialNetworkingSiteFinder;
|
import org.gcube.portal.social.networking.caches.SocialNetworkingSiteFinder;
|
||||||
import org.gcube.portal.social.networking.liferay.ws.LiferayJSONWsCredentials;
|
import org.gcube.portal.social.networking.liferay.ws.LiferayJSONWsCredentials;
|
||||||
import org.gcube.portal.social.networking.liferay.ws.UserManagerWSBuilder;
|
import org.gcube.portal.social.networking.liferay.ws.UserManagerWSBuilder;
|
||||||
import org.gcube.portal.social.networking.ws.inputs.JobNotificationBean;
|
import org.gcube.portal.social.networking.ws.mappers.JobMapper;
|
||||||
import org.gcube.portal.social.networking.ws.mappers.WorkspaceItemMapper;
|
import org.gcube.portal.social.networking.ws.mappers.WorkspaceItemMapper;
|
||||||
import org.gcube.portal.social.networking.ws.outputs.ResponseBean;
|
import org.gcube.portal.social.networking.ws.outputs.ResponseBean;
|
||||||
import org.gcube.portal.social.networking.ws.utils.CassandraConnection;
|
import org.gcube.portal.social.networking.ws.utils.CassandraConnection;
|
||||||
import org.gcube.portal.social.networking.ws.utils.ErrorMessages;
|
import org.gcube.portal.social.networking.ws.utils.ErrorMessages;
|
||||||
|
import org.gcube.social_networking.socialnetworking.model.beans.JobNotificationBean;
|
||||||
import org.gcube.social_networking.socialnetworking.model.beans.WSAddedItemNotificationBean;
|
import org.gcube.social_networking.socialnetworking.model.beans.WSAddedItemNotificationBean;
|
||||||
import org.gcube.social_networking.socialnetworking.model.beans.WSSharedFolderNotificationBean;
|
import org.gcube.social_networking.socialnetworking.model.beans.WSSharedFolderNotificationBean;
|
||||||
import org.gcube.social_networking.socialnetworking.model.beans.WSUnsharedFolderNotificationBean;
|
import org.gcube.social_networking.socialnetworking.model.beans.WSUnsharedFolderNotificationBean;
|
||||||
import org.gcube.social_networking.socialnetworking.model.beans.WorkspaceFileItemBean;
|
|
||||||
import org.gcube.social_networking.socialnetworking.model.beans.WorkspaceNotificationBean;
|
|
||||||
import org.gcube.social_networking.socialnetworking.model.beans.WorkspaceNotificationMessage;
|
import org.gcube.social_networking.socialnetworking.model.beans.WorkspaceNotificationMessage;
|
||||||
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
|
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -149,7 +147,9 @@ public class Notifications {
|
||||||
SocialNetworkingUser user = new SocialNetworkingUser(senderUser.getUsername(), senderUser.getEmail(), senderUser.getFullname(), senderUser.getUserAvatarURL());
|
SocialNetworkingUser user = new SocialNetworkingUser(senderUser.getUsername(), senderUser.getEmail(), senderUser.getFullname(), senderUser.getUserAvatarURL());
|
||||||
NotificationsManager nm = new ApplicationNotificationsManager(UserManagerWSBuilder.getInstance().getUserManager(), site, context, user);
|
NotificationsManager nm = new ApplicationNotificationsManager(UserManagerWSBuilder.getInstance().getUserManager(), site, context, user);
|
||||||
|
|
||||||
new Thread(new JobStatusNotificationThread(job.getRunningJob(), Arrays.asList(recipientBean), nm)).start();
|
RunningJob theJob = JobMapper.getJob(job);
|
||||||
|
|
||||||
|
new Thread(new JobStatusNotificationThread(theJob, Arrays.asList(recipientBean), nm)).start();
|
||||||
responseBean.setSuccess(true);
|
responseBean.setSuccess(true);
|
||||||
responseBean.setResult("Notification thread started");
|
responseBean.setResult("Notification thread started");
|
||||||
|
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
package org.gcube.portal.social.networking.ws.providers;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import org.gcube.portal.databook.shared.JobStatusType;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonParser;
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
||||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
|
||||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deserializer used to map a string representing the status in this JobNotificationBean to the JobStatusType enum.
|
|
||||||
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
|
|
||||||
*/
|
|
||||||
public class JobStatusTypeDeserializer extends JsonDeserializer<JobStatusType>{
|
|
||||||
|
|
||||||
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(JobStatusTypeDeserializer.class);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JobStatusType deserialize(JsonParser p,
|
|
||||||
DeserializationContext ctxt) throws IOException,
|
|
||||||
JsonProcessingException {
|
|
||||||
|
|
||||||
logger.debug("Status deserializer called");
|
|
||||||
|
|
||||||
String status = p.getText();
|
|
||||||
JobStatusType toReturn = null;
|
|
||||||
|
|
||||||
logger.debug("Status coming from json object is " + status);
|
|
||||||
|
|
||||||
JobStatusType[] values = JobStatusType.values();
|
|
||||||
|
|
||||||
for (JobStatusType jobStatusType : values) {
|
|
||||||
if(jobStatusType.toString().toLowerCase().contains(status.toLowerCase())){
|
|
||||||
toReturn = jobStatusType;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.debug("JOB STATUS deserialized as " + toReturn);
|
|
||||||
return toReturn;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue