diff --git a/pom.xml b/pom.xml index d834f94..428b204 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.gcube.social-networking social-service-client - 1.0.0 + 1.1.0-SNAPSHOT social-networking-service-client jar The social networking web service client library diff --git a/src/main/java/org/gcube/social_networking/social_networking_client_library/NotificationClient.java b/src/main/java/org/gcube/social_networking/social_networking_client_library/NotificationClient.java index 0ba1cec..fc52d2f 100644 --- a/src/main/java/org/gcube/social_networking/social_networking_client_library/NotificationClient.java +++ b/src/main/java/org/gcube/social_networking/social_networking_client_library/NotificationClient.java @@ -9,6 +9,10 @@ import org.apache.commons.lang.Validate; import org.gcube.portal.databook.shared.Notification; import org.gcube.social_networking.social_networking_client_library.utils.HttpClient; import org.gcube.social_networking.socialnetworking.model.beans.JobNotificationBean; +import org.gcube.social_networking.socialnetworking.model.beans.catalogue.CatalogueEvent; +import org.gcube.social_networking.socialnetworking.model.beans.catalogue.CatalogueEventType; +import org.gcube.social_networking.socialnetworking.model.beans.workspace.WorkspaceEvent; +import org.gcube.social_networking.socialnetworking.model.beans.workspace.WorkspaceEventType; import org.gcube.social_networking.socialnetworking.model.output.ResponseBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -59,5 +63,31 @@ public class NotificationClient extends BaseClient{ HttpClient.post(new GenericType>(){}, request, notification); } + + /** + * Notify a catalogue event, types available see {@link WorkspaceEventType} + * @param event an instance of {@link WorkspaceEvent} + */ + public void sendWorkspaceEvent(WorkspaceEvent event) { + Validate.isTrue(event != null, "WorkspaceEvent cannot be null"); + logger.debug("Request for sending workdspace notifications"); + String thisMethodSignature = "workspace"; + String request = getServiceEndpoint() + thisMethodSignature; + HttpClient.post(new GenericType>(){}, request, event); + + } + + /** + * Notify a catalogue event, types availeble see {@link CatalogueEventType} + * @param event an instance of {@link CatalogueEvent} + */ + public void senCatalogueEvent(CatalogueEvent event) { + Validate.isTrue(event != null, "CatalogueEvent cannot be null"); + logger.debug("Request for sending CatalogueEvent notifications"); + String thisMethodSignature = "catalogue"; + String request = getServiceEndpoint() + thisMethodSignature; + HttpClient.post(new GenericType>(){}, request, event); + + } } diff --git a/src/test/java/org/gcube/portal/social_networking_client_library/TestClientServices.java b/src/test/java/org/gcube/portal/social_networking_client_library/TestClientServices.java index 3571582..44cd548 100644 --- a/src/test/java/org/gcube/portal/social_networking_client_library/TestClientServices.java +++ b/src/test/java/org/gcube/portal/social_networking_client_library/TestClientServices.java @@ -1,5 +1,6 @@ package org.gcube.portal.social_networking_client_library; +import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -11,7 +12,6 @@ import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.portal.databook.shared.EnhancedFeed; import org.gcube.portal.databook.shared.Feed; -import org.gcube.portal.databook.shared.JobStatusType; import org.gcube.portal.databook.shared.Notification; import org.gcube.social_networking.social_networking_client_library.FullTextSearchClient; import org.gcube.social_networking.social_networking_client_library.HashTagClient; @@ -24,6 +24,7 @@ import org.gcube.social_networking.social_networking_client_library.UserClient; import org.gcube.social_networking.social_networking_client_library.VREClient; import org.gcube.social_networking.socialnetworking.model.beans.ApplicationId; import org.gcube.social_networking.socialnetworking.model.beans.JobNotificationBean; +import org.gcube.social_networking.socialnetworking.model.beans.JobStatusModelType; import org.gcube.social_networking.socialnetworking.model.beans.Message; import org.gcube.social_networking.socialnetworking.model.beans.MessageInbox; import org.gcube.social_networking.socialnetworking.model.beans.MyVRE; @@ -31,6 +32,14 @@ import org.gcube.social_networking.socialnetworking.model.beans.PostInputBean; import org.gcube.social_networking.socialnetworking.model.beans.Recipient; import org.gcube.social_networking.socialnetworking.model.beans.UserProfile; import org.gcube.social_networking.socialnetworking.model.beans.UserProfileExtended; +import org.gcube.social_networking.socialnetworking.model.beans.catalogue.CatalogueEvent; +import org.gcube.social_networking.socialnetworking.model.beans.catalogue.CatalogueEventType; +import org.gcube.social_networking.socialnetworking.model.beans.workspace.AddedItemEvent; +import org.gcube.social_networking.socialnetworking.model.beans.workspace.DeletedItemEvent; +import org.gcube.social_networking.socialnetworking.model.beans.workspace.FileItemBean; +import org.gcube.social_networking.socialnetworking.model.beans.workspace.FolderBean; +import org.gcube.social_networking.socialnetworking.model.beans.workspace.UpdatedItemEvent; +import org.gcube.social_networking.socialnetworking.model.beans.workspace.WorkspaceEvent; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; @@ -48,6 +57,44 @@ public class TestClientServices { //SecurityTokenProvider.instance.set(""); } + + @Test + public void testCatalogueEvents() throws Exception { + NotificationClient nc = new NotificationClient(); + String[] idstoNotify = {"andrea.rossi", "mister.pink"}; + CatalogueEvent event = + new CatalogueEvent( + CatalogueEventType.ITEM_SUBMITTED, + idstoNotify, + "Wyscout soccer-logs dataset", + "submitted \"Wyscout soccer-logs dataset\", a dataset of soccer-logs for all the main soccer leagues in the world, from season 2014/2015 to the current one. ", + new URL("http://data.d4science.org/ctlg/ResourceCatalogue/wyscout_soccer-logs_dataset")); + nc.senCatalogueEvent(event); + } + + @Test + public void testWorkspaceItemEvents() throws Exception { + NotificationClient nc = new NotificationClient(); + boolean vreFolder = false; + FolderBean folder = new FolderBean("217cbe15-6408-41e5-9fda-628f56b8e803", "folderName", "folderTitle","displayName", + "/Workspace/_shared attachments", "90b8da48-d363-441a-a0a2-6f614ae747b9", vreFolder); + FileItemBean fileItem = new FileItemBean("90b8da48-d363-441a-f0a2-4f413ae747d7", "updated item.pdf", "updated item.pdf", + "/Workspace/_shared attachments/test updated item from client", folder); + + String[] idstoNotify = {"andrea.rossi", "mister.pink"}; + WorkspaceEvent event = new UpdatedItemEvent(idstoNotify, fileItem); + nc.sendWorkspaceEvent(event); + event = new AddedItemEvent(idstoNotify, fileItem); + nc.sendWorkspaceEvent(event); + event = new DeletedItemEvent(idstoNotify, "theDeletedFilenName.pdf", folder); + nc.sendWorkspaceEvent(event); + + String[] contextIdstoNotify = {"/gcube/devsec/devVRE"}; + event = new UpdatedItemEvent(contextIdstoNotify, true, fileItem); + nc.sendWorkspaceEvent(event); + } + + @Test public void testSearch() throws Exception { FullTextSearchClient search = new FullTextSearchClient(); @@ -116,19 +163,19 @@ public class TestClientServices { } } -// @Test -// public void sendJobNotification() throws Exception { -// NotificationClient notificationsClient = new NotificationClient(); -// JobNotificationBean notification = new JobNotificationBean( -// "luca.frosini", -// UUID.randomUUID().toString(), -// "SmartExecutor Social Indexer", -// "SmartExecutor", -// JobStatusType.SUCCEEDED, -// "all ok"); -// notificationsClient.sendJobNotification(notification); -// logger.debug("Sent job notification "); -// } + @Test + public void sendJobNotification() throws Exception { + NotificationClient notificationsClient = new NotificationClient(); + JobNotificationBean notification = new JobNotificationBean( + "luca.frosini", + UUID.randomUUID().toString(), + "SmartExecutor Social Indexer", + "SmartExecutor", + JobStatusModelType.SUCCEEDED, + "all ok"); + notificationsClient.sendJobNotification(notification); + logger.debug("Sent job notification "); + } @Test public void getProfile() throws Exception {