diff --git a/pom.xml b/pom.xml index d5733da..0f64278 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.data-catalogue gcat war - 2.2.0 + 2.2.0-SNAPSHOT gCube Catalogue (gCat) Service This service allows any client to publish on the gCube Catalogue. diff --git a/src/main/java/org/gcube/gcat/moderation/thread/ModerationThread.java b/src/main/java/org/gcube/gcat/moderation/thread/ModerationThread.java index 70779ed..34eab12 100644 --- a/src/main/java/org/gcube/gcat/moderation/thread/ModerationThread.java +++ b/src/main/java/org/gcube/gcat/moderation/thread/ModerationThread.java @@ -2,6 +2,7 @@ package org.gcube.gcat.moderation.thread; import org.gcube.com.fasterxml.jackson.databind.ObjectMapper; import org.gcube.gcat.api.moderation.CMItemStatus; +import org.gcube.gcat.moderation.thread.social.SocialMessageModerationThread; import org.gcube.gcat.persistence.ckan.CKANUser; /** @@ -16,7 +17,8 @@ public abstract class ModerationThread { protected ObjectMapper objectMapper; public static ModerationThread getDefaultInstance() { - return new FakeModerationThread(); + // return new FakeModerationThread(); + return new SocialMessageModerationThread(); } public ModerationThread() { diff --git a/src/main/java/org/gcube/gcat/moderation/thread/social/SocialMessageModerationThread.java b/src/main/java/org/gcube/gcat/moderation/thread/social/SocialMessageModerationThread.java index a00c809..c1e00d8 100644 --- a/src/main/java/org/gcube/gcat/moderation/thread/social/SocialMessageModerationThread.java +++ b/src/main/java/org/gcube/gcat/moderation/thread/social/SocialMessageModerationThread.java @@ -3,12 +3,16 @@ package org.gcube.gcat.moderation.thread.social; import java.io.StringWriter; import java.util.Set; +import org.gcube.common.authorization.utils.manager.SecretManager; import org.gcube.common.authorization.utils.manager.SecretManagerProvider; +import org.gcube.common.authorization.utils.secret.Secret; import org.gcube.gcat.api.moderation.CMItemStatus; import org.gcube.gcat.api.moderation.Moderated; import org.gcube.gcat.moderation.thread.ModerationThread; import org.gcube.gcat.social.Message; +import org.gcube.gcat.social.SocialMessage; import org.gcube.gcat.social.SocialUsers; +import org.gcube.gcat.utils.Constants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,10 +25,11 @@ public class SocialMessageModerationThread extends ModerationThread { protected String getSubject(CMItemStatus cmItemStatus) { StringWriter stringWriter = new StringWriter(); - stringWriter.append(cmItemStatus.getFancyValue()); stringWriter.append(itemName); + stringWriter.append(" (id:"); stringWriter.append(itemID); - + stringWriter.append(") - status:"); + stringWriter.append(cmItemStatus.getFancyValue()); return stringWriter.toString(); } @@ -33,25 +38,36 @@ public class SocialMessageModerationThread extends ModerationThread { message.setMessage(messageString); message.setSubject(getSubject(cmItemStatus)); Set moderators = SocialUsers.getUsernamesByRole(Moderated.CATALOGUE_MODERATOR); - message.setUsers(moderators); - return message; } - @Override - protected void postMessage(CMItemStatus cmItemStatus, String message) throws Exception { - + protected void postMessage(CMItemStatus cmItemStatus, String messageString) throws Exception { + SecretManager secretManager = SecretManagerProvider.instance.get(); + String username = secretManager.getUser().getUsername(); + Message message = getMessage(cmItemStatus, messageString); + message.addUser(username); + Secret secret = Constants.getCatalogueSecret(); + secretManager.startSession(secret); + sendMessage(message); + secretManager.endSession(); } @Override public void postUserMessage(CMItemStatus cmItemStatus, String userMessage) throws Exception { - logger.info("{} is sending a message to the {} for item '{}' (id={}). ItemStatus={}, Message=\"{}\"", - SecretManagerProvider.instance.get().getUser().getUsername(), - ModerationThread.class.getSimpleName(), itemName, itemID, cmItemStatus, userMessage); + Message message = getMessage(cmItemStatus, userMessage); + String itemAuthor = ckanUser.getEMail(); + message.addUser(itemAuthor); + sendMessage(message); } + protected void sendMessage(Message message) throws Exception { + SocialMessage socialMessage = new SocialMessage(); + socialMessage.setMessage(message); + socialMessage.start(); + } + @Override protected void createModerationThread() throws Exception { // Nothing to do diff --git a/src/main/java/org/gcube/gcat/social/Message.java b/src/main/java/org/gcube/gcat/social/Message.java index 70e5c2e..c747963 100644 --- a/src/main/java/org/gcube/gcat/social/Message.java +++ b/src/main/java/org/gcube/gcat/social/Message.java @@ -34,6 +34,10 @@ public class Message { public void setUsers(Collection users) { this.users = users; } + + public void addUser(String user) { + this.users.add(user); + } @Override public String toString() { diff --git a/src/main/java/org/gcube/gcat/social/SocialMessage.java b/src/main/java/org/gcube/gcat/social/SocialMessage.java index a13355c..a1c57a8 100644 --- a/src/main/java/org/gcube/gcat/social/SocialMessage.java +++ b/src/main/java/org/gcube/gcat/social/SocialMessage.java @@ -1,23 +1,14 @@ package org.gcube.gcat.social; -import java.io.StringWriter; import java.net.HttpURLConnection; -import java.util.ArrayList; -import java.util.List; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import org.gcube.com.fasterxml.jackson.databind.JsonNode; import org.gcube.com.fasterxml.jackson.databind.ObjectMapper; -import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode; -import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode; -import org.gcube.common.authorization.utils.manager.SecretManagerProvider; import org.gcube.common.authorization.utils.socialservice.SocialService; import org.gcube.common.gxhttp.request.GXHTTPStringRequest; -import org.gcube.gcat.api.configuration.CatalogueConfiguration; -import org.gcube.gcat.configuration.CatalogueConfigurationFactory; -import org.gcube.gcat.persistence.ckan.CKANUserCache; import org.gcube.gcat.utils.Constants; import org.gcube.gcat.utils.HTTPUtility; import org.slf4j.Logger; @@ -41,8 +32,6 @@ public class SocialMessage extends Thread { protected final ObjectMapper objectMapper; protected Message message; - protected String itemURL; - protected String itemTitle; public SocialMessage() throws Exception { super(); @@ -61,14 +50,9 @@ public class SocialMessage extends Thread { public void run() { try { - - CatalogueConfiguration instance = CatalogueConfigurationFactory.getInstance(); - - logger.info("Going to send Message about the Item {} available at {}", message, itemURL); - + logger.info("Going to send Message {}", message); // write message sendSocialMessage(); - } catch(Exception e) { logger.error("Error while executing post creation actions", e); }