317 lines
9.7 KiB
Java
317 lines
9.7 KiB
Java
package org.gcube.portal.databook.shared;
|
|
|
|
import com.datastax.oss.driver.api.core.cql.Row;
|
|
import org.gcube.portal.databook.shared.ex.NotificationChannelTypeNotFoundException;
|
|
import org.gcube.portal.databook.shared.ex.NotificationTypeNotFoundException;
|
|
|
|
|
|
import java.io.Serializable;
|
|
import java.util.Date;
|
|
import java.util.Objects;
|
|
|
|
import static org.gcube.portal.databook.server.Schema.*;
|
|
|
|
/**
|
|
*
|
|
* @author Massimiliano Assante, ISTI-CNR
|
|
*
|
|
*/
|
|
@SuppressWarnings("serial")
|
|
public class Notification implements Serializable {
|
|
|
|
private String key;
|
|
private NotificationType type;
|
|
private String userid;
|
|
private String subjectid;
|
|
private Date time;
|
|
private String uri;
|
|
private String description;
|
|
private boolean read;
|
|
private String senderid;
|
|
private String senderFullName;
|
|
private String senderThumbnail;
|
|
|
|
|
|
public static NotificationChannelType getChannelType(String channelName) throws NotificationChannelTypeNotFoundException {
|
|
if (channelName.compareTo("PORTAL") == 0)
|
|
return NotificationChannelType.PORTAL;
|
|
else if (channelName.compareTo("EMAIL") == 0)
|
|
return NotificationChannelType.EMAIL;
|
|
else if (channelName.compareTo("TWITTER") == 0)
|
|
return NotificationChannelType.TWITTER;
|
|
else
|
|
throw new NotificationChannelTypeNotFoundException("The Notification Channel Type was not recognized should be one of " + NotificationChannelType.values() + " asked for: " + channelName);
|
|
}
|
|
|
|
/**
|
|
* simply return an enum representing the feed type
|
|
* @param type .
|
|
* @return correct enum representing the feed type
|
|
* @throws NotificationTypeNotFoundException .
|
|
*/
|
|
public static NotificationType getNotificationType(String type) throws NotificationTypeNotFoundException {
|
|
if (type.compareTo("WP_FOLDER_SHARE") == 0) {
|
|
return NotificationType.WP_FOLDER_SHARE;
|
|
}
|
|
else if (type.compareTo("WP_FOLDER_UNSHARE") == 0) {
|
|
return NotificationType.WP_FOLDER_UNSHARE;
|
|
}
|
|
else if (type.compareTo("WP_ADMIN_UPGRADE") == 0) {
|
|
return NotificationType.WP_ADMIN_UPGRADE;
|
|
}
|
|
else if (type.compareTo("WP_ADMIN_DOWNGRADE") == 0) {
|
|
return NotificationType.WP_ADMIN_DOWNGRADE;
|
|
}
|
|
else if (type.compareTo("WP_FOLDER_RENAMED") == 0) {
|
|
return NotificationType.WP_FOLDER_RENAMED;
|
|
}
|
|
else if (type.compareTo("WP_FOLDER_ADDEDUSER") == 0) {
|
|
return NotificationType.WP_FOLDER_ADDEDUSER;
|
|
}
|
|
else if (type.compareTo("WP_FOLDER_REMOVEDUSER") == 0) {
|
|
return NotificationType.WP_FOLDER_REMOVEDUSER;
|
|
}
|
|
else if (type.compareTo("WP_ITEM_DELETE") == 0) {
|
|
return NotificationType.WP_ITEM_DELETE;
|
|
}
|
|
else if (type.compareTo("WP_ITEM_UPDATED") == 0) {
|
|
return NotificationType.WP_ITEM_UPDATED;
|
|
}
|
|
else if (type.compareTo("WP_ITEM_NEW") == 0) {
|
|
return NotificationType.WP_ITEM_NEW;
|
|
}
|
|
else if (type.compareTo("WP_ITEM_RENAMED") == 0) {
|
|
return NotificationType.WP_ITEM_RENAMED;
|
|
}
|
|
else if (type.compareTo("OWN_COMMENT") == 0) {
|
|
return NotificationType.OWN_COMMENT;
|
|
}
|
|
else if (type.compareTo("COMMENT") == 0) {
|
|
return NotificationType.COMMENT;
|
|
}
|
|
else if (type.compareTo("MENTION") == 0) {
|
|
return NotificationType.MENTION;
|
|
}
|
|
else if (type.compareTo("LIKE") == 0) {
|
|
return NotificationType.LIKE;
|
|
}
|
|
else if (type.compareTo("CALENDAR_ADDED_EVENT") == 0) {
|
|
return NotificationType.CALENDAR_ADDED_EVENT;
|
|
}
|
|
else if (type.compareTo("CALENDAR_UPDATED_EVENT") == 0) {
|
|
return NotificationType.CALENDAR_UPDATED_EVENT;
|
|
}
|
|
else if (type.compareTo("CALENDAR_DELETED_EVENT") == 0) {
|
|
return NotificationType.CALENDAR_DELETED_EVENT;
|
|
}
|
|
else if (type.compareTo("CALENDAR_ADDED_EVENT") == 0) {
|
|
return NotificationType.CALENDAR_ADDED_EVENT;
|
|
}
|
|
else if (type.compareTo("CALENDAR_UPDATED_EVENT") == 0) {
|
|
return NotificationType.CALENDAR_UPDATED_EVENT;
|
|
}
|
|
else if (type.compareTo("CALENDAR_DELETED_EVENT") == 0) {
|
|
return NotificationType.CALENDAR_DELETED_EVENT;
|
|
}
|
|
else if (type.compareTo("MESSAGE") == 0) {
|
|
return NotificationType.MESSAGE;
|
|
}
|
|
else if (type.compareTo("POST_ALERT") == 0) {
|
|
return NotificationType.POST_ALERT;
|
|
}
|
|
else if (type.compareTo("REQUEST_CONNECTION") == 0) {
|
|
return NotificationType.REQUEST_CONNECTION;
|
|
}
|
|
else if (type.compareTo("JOB_COMPLETED_NOK") == 0) {
|
|
return NotificationType.JOB_COMPLETED_NOK;
|
|
}
|
|
else if (type.compareTo("JOB_COMPLETED_OK") == 0) {
|
|
return NotificationType.JOB_COMPLETED_OK;
|
|
}
|
|
else if (type.compareTo("DOCUMENT_WORKFLOW_EDIT") == 0) {
|
|
return NotificationType.DOCUMENT_WORKFLOW_EDIT;
|
|
}
|
|
else if (type.compareTo("DOCUMENT_WORKFLOW_VIEW") == 0) {
|
|
return NotificationType.DOCUMENT_WORKFLOW_VIEW;
|
|
}
|
|
else if (type.compareTo("DOCUMENT_WORKFLOW_FORWARD_STEP_COMPLETED_OWNER") == 0) {
|
|
return NotificationType.DOCUMENT_WORKFLOW_FORWARD_STEP_COMPLETED_OWNER;
|
|
}
|
|
else if (type.compareTo("DOCUMENT_WORKFLOW_STEP_FORWARD_PEER") == 0) {
|
|
return NotificationType.DOCUMENT_WORKFLOW_STEP_FORWARD_PEER;
|
|
}
|
|
else if (type.compareTo("DOCUMENT_WORKFLOW_STEP_REQUEST_TASK") == 0) {
|
|
return NotificationType.DOCUMENT_WORKFLOW_STEP_REQUEST_TASK;
|
|
}
|
|
else if (type.compareTo("DOCUMENT_WORKFLOW_USER_FORWARD_TO_OWNER") == 0) {
|
|
return NotificationType.DOCUMENT_WORKFLOW_USER_FORWARD_TO_OWNER;
|
|
}
|
|
else if (type.compareTo("DOCUMENT_WORKFLOW_FIRST_STEP_REQUEST_INVOLVMENT") == 0) {
|
|
return NotificationType.DOCUMENT_WORKFLOW_FIRST_STEP_REQUEST_INVOLVMENT;
|
|
}
|
|
else if (type.compareTo("TDM_TAB_RESOURCE_SHARE") == 0) {
|
|
return NotificationType.TDM_TAB_RESOURCE_SHARE;
|
|
}
|
|
else if (type.compareTo("TDM_RULE_SHARE") == 0) {
|
|
return NotificationType.TDM_RULE_SHARE;
|
|
}
|
|
else if (type.compareTo("TDM_TEMPLATE_SHARE") == 0) {
|
|
return NotificationType.TDM_TEMPLATE_SHARE;
|
|
}
|
|
else if (type.compareTo("CAT_ITEM_SUBMITTED") == 0) {
|
|
return NotificationType.CAT_ITEM_SUBMITTED;
|
|
}
|
|
else if (type.compareTo("CAT_ITEM_REJECTED") == 0) {
|
|
return NotificationType.CAT_ITEM_REJECTED;
|
|
}
|
|
else if (type.compareTo("CAT_ITEM_PUBLISHED") == 0) {
|
|
return NotificationType.CAT_ITEM_PUBLISHED;
|
|
}
|
|
else if (type.compareTo("CAT_ITEM_UPDATED") == 0) {
|
|
return NotificationType.CAT_ITEM_UPDATED;
|
|
}
|
|
else if (type.compareTo("CAT_ITEM_DELETE") == 0) {
|
|
return NotificationType.CAT_ITEM_DELETE;
|
|
}
|
|
else if (type.compareTo("GENERIC") == 0) {
|
|
return NotificationType.GENERIC;
|
|
}
|
|
|
|
else
|
|
throw new NotificationTypeNotFoundException("The Notification Type was not recognized should be one of " + NotificationType.values() + " asked for: " + type);
|
|
}
|
|
/**
|
|
* default constructor
|
|
*/
|
|
public Notification() {
|
|
super();
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param key
|
|
* @param type
|
|
* @param userid
|
|
* @param subjectid the subject id of this notification, if is a like on a feed then is the feedid, it is a message then is the messageid and so on
|
|
* @param time
|
|
* @param uri
|
|
* @param description
|
|
* @param read
|
|
* @param senderid
|
|
* @param senderFullName
|
|
* @param senderThumbnail
|
|
*/
|
|
public Notification(String key, NotificationType type, String userid,
|
|
String subjectid, Date time, String uri, String description,
|
|
boolean read, String senderid, String senderFullName,
|
|
String senderThumbnail) {
|
|
super();
|
|
this.key = key;
|
|
this.type = type;
|
|
this.userid = userid;
|
|
this.subjectid = subjectid;
|
|
this.time = time;
|
|
this.uri = uri;
|
|
this.description = description;
|
|
this.read = read;
|
|
this.senderid = senderid;
|
|
this.senderFullName = senderFullName;
|
|
this.senderThumbnail = senderThumbnail;
|
|
}
|
|
|
|
public Notification(Row record) throws NotificationTypeNotFoundException {
|
|
super();
|
|
this.key = Objects.requireNonNull(record.getUuid(NOT_ID)).toString();
|
|
this.type = getNotificationType(Objects.requireNonNull(record.getString(TYPE)));
|
|
this.userid = record.getString(USER_ID);
|
|
this.subjectid = record.getString(SUBJECT_ID);
|
|
this.time = Date.from(Objects.requireNonNull(record.getInstant(TIMESTAMP)));
|
|
this.uri = record.getString(URI);
|
|
this.description = record.getString(DESCRIPTION);
|
|
this.read = record.getBoolean(IS_READ);
|
|
this.senderid = record.getString(SENDER_ID);
|
|
this.senderFullName = record.getString(SENDER_FULL_NAME);
|
|
this.senderThumbnail = record.getString(SENDER_THUMBNAIL_URL);
|
|
}
|
|
/**
|
|
*
|
|
* @return .
|
|
*/
|
|
public String getKey() {
|
|
return key;
|
|
}
|
|
public void setKey(String key) {
|
|
this.key = key;
|
|
}
|
|
public NotificationType getType() {
|
|
return type;
|
|
}
|
|
public void setType(NotificationType type) {
|
|
this.type = type;
|
|
}
|
|
public String getUserid() {
|
|
return userid;
|
|
}
|
|
public void setUserid(String userid) {
|
|
this.userid = userid;
|
|
}
|
|
public Date getTime() {
|
|
return time;
|
|
}
|
|
public void setTime(Date time) {
|
|
this.time = time;
|
|
}
|
|
public String getUri() {
|
|
return uri;
|
|
}
|
|
public void setUri(String uri) {
|
|
this.uri = uri;
|
|
}
|
|
public String getDescription() {
|
|
return description;
|
|
}
|
|
public void setDescription(String description) {
|
|
this.description = description;
|
|
}
|
|
public boolean isRead() {
|
|
return read;
|
|
}
|
|
public void setRead(boolean read) {
|
|
this.read = read;
|
|
}
|
|
public String getSenderid() {
|
|
return senderid;
|
|
}
|
|
public void setSenderid(String senderid) {
|
|
this.senderid = senderid;
|
|
}
|
|
public String getSenderFullName() {
|
|
return senderFullName;
|
|
}
|
|
public void setSenderFullName(String senderFullName) {
|
|
this.senderFullName = senderFullName;
|
|
}
|
|
public String getSenderThumbnail() {
|
|
return senderThumbnail;
|
|
}
|
|
public void setSenderThumbnail(String senderThumbnail) {
|
|
this.senderThumbnail = senderThumbnail;
|
|
}
|
|
public String getSubjectid() {
|
|
return subjectid;
|
|
}
|
|
public void setSubjectid(String subjectid) {
|
|
this.subjectid = subjectid;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "Notification [key=" + key + ", type=" + type + ", userid="
|
|
+ userid + ", subjectid=" + subjectid + ", time=" + time
|
|
+ ", uri=" + uri + ", description=" + description + ", read="
|
|
+ read + ", senderid=" + senderid + ", senderFullName="
|
|
+ senderFullName + ", senderThumbnail=" + senderThumbnail
|
|
+ "]";
|
|
}
|
|
}
|