From 5a581fc5e52ae5c25d6db5655f655aa6b99d8e63 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Thu, 5 May 2022 13:15:50 +0200 Subject: [PATCH] added things --- .../model/beans/workspace/AddedItemEvent.java | 3 +- .../beans/workspace/DeletedItemEvent.java | 63 +++++++++++++++ .../beans/workspace/FolderAddedUserEvent.java | 76 +++++++++++++++++++ .../workspace/FolderRemovedUserEvent.java | 62 +++++++++++++++ .../beans/workspace/SharedFolderEvent.java | 6 +- .../model/beans/workspace/WorkspaceEvent.java | 27 ++++--- .../beans/workspace/WorkspaceEventType.java | 18 ++++- 7 files changed, 237 insertions(+), 18 deletions(-) create mode 100644 src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/DeletedItemEvent.java create mode 100644 src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/FolderAddedUserEvent.java create mode 100644 src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/FolderRemovedUserEvent.java diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/AddedItemEvent.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/AddedItemEvent.java index c9ecce4..3a8c004 100644 --- a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/AddedItemEvent.java +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/AddedItemEvent.java @@ -17,8 +17,7 @@ public class AddedItemEvent extends WorkspaceEvent { private FileItemBean item; public AddedItemEvent() { - super(WorkspaceEventType.ITEM_NEW); - // TODO Auto-generated constructor stub + super(TYPE); } diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/DeletedItemEvent.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/DeletedItemEvent.java new file mode 100644 index 0000000..3162b63 --- /dev/null +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/DeletedItemEvent.java @@ -0,0 +1,63 @@ +package org.gcube.social_networking.socialnetworking.model.beans.workspace; + +import javax.validation.constraints.NotNull; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; + +@JsonIgnoreProperties(ignoreUnknown=true) +@JsonTypeName("ITEM_DELETE") +public class DeletedItemEvent extends WorkspaceEvent { + private static final WorkspaceEventType TYPE = WorkspaceEventType.ITEM_DELETE; + + + @JsonProperty("fileItem") + @NotNull(message="fileItem cannot be missing") + private FileItemBean item; + + public DeletedItemEvent() { + super(TYPE); + // TODO Auto-generated constructor stub + } + + + /** + * + * @param idsToNotify usernames or contexts + * @param idsAsGroup true if idsToNotify are groups (members of contexts) + * @param item + */ + public DeletedItemEvent(String[] idsToNotify, boolean idsAsGroup, FileItemBean item) { + super(TYPE); + this.idsToNotify = idsToNotify; + this.idsAsGroup = idsAsGroup; + this.item = item; + } + + + /** + * + * @param idsToNotify usernames + * @param item + */ + public DeletedItemEvent(String[] idsToNotify, FileItemBean item) { + super(TYPE); + this.idsToNotify = idsToNotify; + this.item = item; + } + + + + public FileItemBean getItem() { + return item; + } + + public void setItem(FileItemBean item) { + this.item = item; + } + + + + +} diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/FolderAddedUserEvent.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/FolderAddedUserEvent.java new file mode 100644 index 0000000..6cdc475 --- /dev/null +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/FolderAddedUserEvent.java @@ -0,0 +1,76 @@ +package org.gcube.social_networking.socialnetworking.model.beans.workspace; + +import java.util.Arrays; +import java.util.List; + +import javax.validation.constraints.NotNull; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; + + +@JsonIgnoreProperties(ignoreUnknown=true) +@JsonTypeName("FOLDER_ADDEDUSER") +public class FolderAddedUserEvent extends WorkspaceEvent { + private static final WorkspaceEventType TYPE = WorkspaceEventType.FOLDER_ADDEDUSER; + @JsonProperty("folderItem") + @NotNull(message="folderItem cannot be missing") + private FolderBean folder; + + @JsonProperty("newAddedUserIds") + @NotNull(message="newAddedUserIds cannot be missing") + private List newAddedUserIds; + + public FolderAddedUserEvent() { + super(TYPE); + } + /** + * + * @param idsToNotify usernames + * @param idsAsGroup true if idsToNotify are groups (members of contexts) + * @param FolderBean the folder + * @param newAddedUserIds list of usernames + */ + public FolderAddedUserEvent(String[] idsToNotify, boolean idsAsGroup, FolderBean folder, List newAddedUserIds) { + super(TYPE); + this.idsToNotify = idsToNotify; + this.idsAsGroup = idsAsGroup; + this.newAddedUserIds = newAddedUserIds; + this.folder = folder; + } + /** + * + * @param idsToNotify usernames + * @param FolderBean the folder + */ + public FolderAddedUserEvent(String[] idsToNotify, FolderBean folder, List newAddedUserIds) { + super(TYPE); + this.idsToNotify = idsToNotify; + this.newAddedUserIds = newAddedUserIds; + this.folder = folder; + } + + public FolderBean getFolder() { + return folder; + } + + public void setFolder(FolderBean folder) { + this.folder = folder; + } + + public List getNewAddedUserIds() { + return newAddedUserIds; + } + + public void setNewAddedUserIds(List newAddedUserIds) { + this.newAddedUserIds = newAddedUserIds; + } + + @Override + public String toString() { + return "FolderAddedUserEvent [folder=" + folder + ", newAddedUserIds=" + newAddedUserIds + ", TYPE=" + TYPE + + ", idsToNotify=" + Arrays.toString(idsToNotify) + ", idsAsGroup=" + idsAsGroup + "]"; + } + +} diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/FolderRemovedUserEvent.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/FolderRemovedUserEvent.java new file mode 100644 index 0000000..b8f8320 --- /dev/null +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/FolderRemovedUserEvent.java @@ -0,0 +1,62 @@ +package org.gcube.social_networking.socialnetworking.model.beans.workspace; + +import java.util.Arrays; + +import javax.validation.constraints.NotNull; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; + + +@JsonIgnoreProperties(ignoreUnknown=true) +@JsonTypeName("FOLDER_REMOVEDUSER") +public class FolderRemovedUserEvent extends WorkspaceEvent { + private static final WorkspaceEventType TYPE = WorkspaceEventType.FOLDER_REMOVEDUSER; + @JsonProperty("folderItem") + @NotNull(message="folderItem cannot be missing") + private FolderBean folder; + + public FolderRemovedUserEvent() { + super(TYPE); + } + /** + * + * @param idsToNotify usernames + * @param idsAsGroup true if idsToNotify are groups (members of contexts) + * @param FolderBean the folder + */ + public FolderRemovedUserEvent(String[] idsToNotify, boolean idsAsGroup, FolderBean folder) { + super(TYPE); + this.idsToNotify = idsToNotify; + this.idsAsGroup = idsAsGroup; + this.folder = folder; + } + /** + * + * @param idsToNotify usernames + * @param FolderBean the folder + */ + public FolderRemovedUserEvent(String[] idsToNotify, FolderBean folder) { + super(TYPE); + this.idsToNotify = idsToNotify; + this.folder = folder; + } + + + + public FolderBean getFolder() { + return folder; + } + + public void setFolder(FolderBean folder) { + this.folder = folder; + } + @Override + public String toString() { + return "FolderRemovedUserEvent [folder=" + folder + ", TYPE=" + TYPE + ", idsToNotify=" + + Arrays.toString(idsToNotify) + ", idsAsGroup=" + idsAsGroup + "]"; + } + + +} diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/SharedFolderEvent.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/SharedFolderEvent.java index 3a51ea7..0b228d0 100644 --- a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/SharedFolderEvent.java +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/SharedFolderEvent.java @@ -18,7 +18,7 @@ public class SharedFolderEvent extends WorkspaceEvent { private FolderBean folder; public SharedFolderEvent() { - super(WorkspaceEventType.FOLDER_SHARE); + super(TYPE); } /** * @@ -26,7 +26,7 @@ public class SharedFolderEvent extends WorkspaceEvent { * @param idsAsGroup true if idsToNotify are groups (members of contexts) * @param FolderBean the folder */ - public SharedFolderEvent(String[] idsToNotify, boolean idsAsGroup, String userIdToNotify, FolderBean folder) { + public SharedFolderEvent(String[] idsToNotify, boolean idsAsGroup, FolderBean folder) { super(TYPE); this.idsToNotify = idsToNotify; this.idsAsGroup = idsAsGroup; @@ -37,7 +37,7 @@ public class SharedFolderEvent extends WorkspaceEvent { * @param idsToNotify usernames * @param FolderBean the folder */ - public SharedFolderEvent(String[] idsToNotify, String userIdToNotify, FolderBean folder) { + public SharedFolderEvent(String[] idsToNotify, FolderBean folder) { super(TYPE); this.idsToNotify = idsToNotify; this.folder = folder; diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/WorkspaceEvent.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/WorkspaceEvent.java index a0d2ac0..1838002 100644 --- a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/WorkspaceEvent.java +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/WorkspaceEvent.java @@ -15,32 +15,39 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo.As; @JsonIgnoreProperties(ignoreUnknown = true) @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = As.PROPERTY, property = "type") @JsonSubTypes({ -@JsonSubTypes.Type(value = SharedFolderEvent.class, name = "FOLDER_SHARE"), -@JsonSubTypes.Type(value = UnsharedFolderEvent.class, name = "FOLDER_UNSHARE"), -@JsonSubTypes.Type(value = RenamedFolderEvent.class, name = "FOLDER_RENAME"), -@JsonSubTypes.Type(value = AddedItemEvent.class, name = "ITEM_NEW") + @JsonSubTypes.Type(value = SharedFolderEvent.class, name = "FOLDER_SHARE"), + @JsonSubTypes.Type(value = UnsharedFolderEvent.class, name = "FOLDER_UNSHARE"), + @JsonSubTypes.Type(value = RenamedFolderEvent.class, name = "FOLDER_RENAME"), + @JsonSubTypes.Type(value = AddedItemEvent.class, name = "ITEM_NEW"), + @JsonSubTypes.Type(value = DeletedItemEvent.class, name = "ITEM_DELETE"), + @JsonSubTypes.Type(value = FolderAddedUserEvent.class, name = "FOLDER_ADDEDUSER"), + @JsonSubTypes.Type(value = FolderRemovedUserEvent.class, name = "FOLDER_REMOVEDUSER") }) public abstract class WorkspaceEvent { protected final WorkspaceEventType TYPE; - + /** * the username of the user you wish to notify */ @JsonProperty("idsToNotify") @NotNull(message="recipients cannot be missing, use usernames or contexts") protected String[] idsToNotify; - + /** - * @documentationExample false, optionl field, set to true if the idsToNotify are contexts, default is false + * optionl field, set to true if the idsToNotify are contexts, default is false */ @JsonProperty("idsAsGroup") @DefaultValue("false") protected boolean idsAsGroup = false; - + + /** + * @documentationExample FOLDER_SHARE + * @param TYPE + */ WorkspaceEvent(WorkspaceEventType TYPE) { this.TYPE = TYPE; } - + /** * @param tYPE * @param idsToNotify usernames or contexts @@ -77,5 +84,5 @@ public abstract class WorkspaceEvent { public void setIdsAsGroup(boolean idsAsGroup) { this.idsAsGroup = idsAsGroup; } - + } diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/WorkspaceEventType.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/WorkspaceEventType.java index b24f663..eacf48a 100644 --- a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/WorkspaceEventType.java +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/workspace/WorkspaceEventType.java @@ -6,18 +6,30 @@ public enum WorkspaceEventType { * use to notify a user she got a workspace item new in some of her workspace shared folder */ ITEM_NEW(AddedItemEvent.class), + /** + * use to notify a user she got a workspace item deleted from one of his workspace shared folder + */ + ITEM_DELETE(DeletedItemEvent.class), /** * use to notify a user he got a workspace folder shared */ FOLDER_SHARE(SharedFolderEvent.class), /** - * use to notify a user he got a workspace folder Unshared + * use to notify a workspace folder Unshared */ FOLDER_UNSHARE(UnsharedFolderEvent.class), /** - * use to notify a user he got a workspace folder renamed + * use to notify a workspace folder renamed */ - FOLDER_RENAME(RenamedFolderEvent.class); + FOLDER_RENAME(RenamedFolderEvent.class), + /** + * use to notify that new user(s) were added in on of his workspace shared folder + */ + FOLDER_ADDEDUSER(FolderAddedUserEvent.class), + /** + * use to notify user(s) that existing user(s) were removed from one of her workspace shared folder + */ + FOLDER_REMOVEDUSER(FolderRemovedUserEvent.class);