diff --git a/pom.xml b/pom.xml index 06578fc..87c04aa 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.data-catalogue gcat war - 2.4.1 + 2.4.1-SNAPSHOT gCube Catalogue (gCat) Service This service allows any client to publish on the gCube Catalogue. @@ -35,7 +35,7 @@ org.gcube.distribution gcube-smartgears-bom - 2.2.0 + 2.2.0-SNAPSHOT pom import @@ -62,7 +62,7 @@ org.gcube.data-catalogue gcat-api - [2.3.1,3.0.0-SNAPSHOT) + [2.3.1-SNAPSHOT,3.0.0-SNAPSHOT) org.gcube.social-networking @@ -135,12 +135,14 @@ javax.ws.rs-api - + javax.xml.ws jaxws-api + provided - + + org.gcube.common gxHTTP diff --git a/src/main/java/org/gcube/gcat/moderation/thread/social/messages/SocialMessage.java b/src/main/java/org/gcube/gcat/moderation/thread/social/messages/SocialMessage.java deleted file mode 100644 index 24d789d..0000000 --- a/src/main/java/org/gcube/gcat/moderation/thread/social/messages/SocialMessage.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.gcube.gcat.moderation.thread.social.messages; - -import org.gcube.com.fasterxml.jackson.databind.JsonNode; -import org.gcube.com.fasterxml.jackson.databind.ObjectMapper; -import org.gcube.social_networking.social_networking_client_library.MessageClient; -import org.gcube.social_networking.socialnetworking.model.beans.Message; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author Luca Frosini (ISTI - CNR) - */ -public class SocialMessage extends Thread { - - private static final Logger logger = LoggerFactory.getLogger(SocialMessage.class); - - public static final String ITEM_URL = "Item URL"; - - protected static final String RESPONSE_SUCCESS_KEY = "success"; - protected static final String RESPONSE_MESSAGE_KEY = "message"; - - protected final ObjectMapper objectMapper; - - protected Message message; - - public SocialMessage() throws Exception { - super(); - this.objectMapper = new ObjectMapper(); - } - - public Message getMessage() { - return message; - } - - public void setMessage(Message message) { - this.message = message; - } - - @Override - public void run() { - - try { - logger.info("Going to send Message {}", message); - // write message - sendSocialMessage(); - } catch(Exception e) { - logger.error("Error while executing post creation actions", e); - } - } - - public void sendSocialMessage() { - try { - MessageClient messageClient = new MessageClient(); - String ret = messageClient.writeMessage(message); - - String messageString = objectMapper.writeValueAsString(message); - logger.debug("The message that is going to be send is\n{}", messageString); - - JsonNode jsonNode = objectMapper.readTree(ret); - if(jsonNode.get(RESPONSE_SUCCESS_KEY).asBoolean()) { - logger.info("Message sent : {}", messageString); - } else { - logger.info("Failed to write the message {}. Reason {}", messageString, - jsonNode.get(RESPONSE_MESSAGE_KEY).asText()); - } - } catch(Exception e) { - logger.error("Unable to send the message : " + message.toString(), e); - } - } - -} \ No newline at end of file diff --git a/src/main/java/org/gcube/gcat/moderation/thread/social/messages/SocialMessageModerationThread.java b/src/main/java/org/gcube/gcat/moderation/thread/social/messages/SocialMessageModerationThread.java deleted file mode 100644 index e3afa28..0000000 --- a/src/main/java/org/gcube/gcat/moderation/thread/social/messages/SocialMessageModerationThread.java +++ /dev/null @@ -1,217 +0,0 @@ -package org.gcube.gcat.moderation.thread.social.messages; - -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.List; -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.SocialUsers; -import org.gcube.gcat.utils.Constants; -import org.gcube.social_networking.socialnetworking.model.beans.Message; -import org.gcube.social_networking.socialnetworking.model.beans.Recipient; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author Luca Frosini (ISTI - CNR) - */ -public class SocialMessageModerationThread extends ModerationThread { - - private static final Logger logger = LoggerFactory.getLogger(SocialMessageModerationThread.class); - - protected StringBuffer getMainItemInfo(StringBuffer stringBuffer) { - stringBuffer.append("Status: "); - stringBuffer.append(cmItemStatus.getFancyValue()); - stringBuffer.append("\n"); - stringBuffer.append("Title: "); - stringBuffer.append(itemTitle); - stringBuffer.append("\n"); - stringBuffer.append("Name: "); - stringBuffer.append(itemName); - stringBuffer.append("\n"); - stringBuffer.append("ID: "); - stringBuffer.append(itemID); - stringBuffer.append("\n"); - stringBuffer.append("URL: "); - if(cmItemStatus == CMItemStatus.APPROVED) { - stringBuffer.append(itemURL); - }else { - stringBuffer.append(getModerationURL()); - } - stringBuffer.append("\n\n"); - return stringBuffer; - } - - /** - * Create the message for an item that is created/updated - */ - public void postItemToBeManaged() throws Exception { - /* - * An example of created message is: - * - * [mister x] created / updated the following item - * - * Title: RESTful Transaction Model - * Name: my_first_restful_transaction_model - * ID: e31a6ba8-66ef-47b8-b61f-99a1366b4a69 - * URL: https://data.dev.d4science.org/ctlg/devVRE/my_first_restful_transaction_model - * - * You are kindly requested to review it and decide either to APPROVE or REJECT it at - * - */ - cmItemStatus = CMItemStatus.PENDING; - String fullName = ckanUser.getNameSurname(); - StringBuffer stringBuffer = new StringBuffer(); - stringBuffer.append(fullName); - stringBuffer.append(create ? " created " : " updated "); - stringBuffer.append("the following item\n\n"); - stringBuffer = getMainItemInfo(stringBuffer); - stringBuffer.append("You are kindly requested to review it and decide either to APPROVE or REJECT it."); - // stringBuffer.append("You are kindly requested to review it and decide either to APPROVE or REJECT at"); - // String manageURL = getManageURL(); - // stringBuffer.append(manageURL); - postMessage(stringBuffer.toString()); - } - - - public void postItemCreated() throws Exception { - create = true; - cmItemStatus = CMItemStatus.PENDING; - postItemToBeManaged(); - } - - public void postItemUpdated() throws Exception { - create = false; - cmItemStatus = CMItemStatus.PENDING; - postItemToBeManaged(); - } - - protected StringBuffer addUserWithRole(String fullName, String role, StringBuffer stringBuffer) { - stringBuffer.append(fullName); - stringBuffer.append(" ["); - stringBuffer.append(role); - stringBuffer.append("] "); - return stringBuffer; - } - - public void postItemManaged(String userMessage) throws Exception { - create = false; - String fullName = ckanUser.getNameSurname(); - StringBuffer stringBuffer = new StringBuffer(); - stringBuffer = addUserWithRole(fullName, Moderated.CATALOGUE_MODERATOR, stringBuffer); - stringBuffer.append(cmItemStatus.getValue()); - stringBuffer.append(" the following item"); - if(userMessage!=null && userMessage.length()>0) { - stringBuffer.append(" with this accompanying message\n\n"); - stringBuffer = getMainItemInfo(stringBuffer); - stringBuffer.append(userMessage); - }else { - stringBuffer.append("\n\n"); - stringBuffer = getMainItemInfo(stringBuffer); - } - postMessage(stringBuffer.toString()); - } - - @Override - public void postItemRejected(String userMessage) throws Exception { - create = false; - cmItemStatus = CMItemStatus.REJECTED; - postItemManaged(userMessage); - } - - @Override - public void postItemApproved(String userMessage) throws Exception { - create = false; - cmItemStatus = CMItemStatus.APPROVED; - postItemManaged(userMessage); - } - - protected String getSubject() { - StringWriter stringWriter = new StringWriter(); - if(!create) { - logger.trace("It's a reply"); - stringWriter.append("Re: "); - } - stringWriter.append("[Catalogue Service] "); - stringWriter.append(itemTitle); - return stringWriter.toString(); - } - - protected List getRecipients(Set users) { - List recipients = new ArrayList<>(); - for(String username : users) { - recipients.add(new Recipient(username)); - } - return recipients; - } - - protected Message getMessage(String messageString) throws Exception { - Message message = new Message(); - message.setBody(messageString); - message.setSubject(getSubject()); - Set moderators = SocialUsers.getUsernamesByRole(Moderated.CATALOGUE_MODERATOR); - List recipients = getRecipients(moderators); - message.setRecipients(recipients); - return message; - } - - @Override - protected void postMessage(String messageString) throws Exception { - SecretManager secretManager = SecretManagerProvider.instance.get(); - String username = secretManager.getUser().getUsername(); - Message message = getMessage(messageString); - List recipients = message.getRecipients(); - recipients.add(new Recipient(username)); - Secret secret = Constants.getCatalogueSecret(); - secretManager.startSession(secret); - try { - sendMessage(message); - }finally { - secretManager.endSession(); - } - } - - @Override - public void postUserMessage(CMItemStatus cmItemStatus, String userMessage) throws Exception { - this.create = false; - this.cmItemStatus = cmItemStatus; - String fullName = ckanUser.getNameSurname(); - StringBuffer stringBuffer = new StringBuffer(); - stringBuffer = addUserWithRole(fullName, itemAuthor ? "Author" : Moderated.CATALOGUE_MODERATOR, stringBuffer); - stringBuffer.append("sent a message regarding the following item\n\n"); - stringBuffer = getMainItemInfo(stringBuffer); - stringBuffer.append(userMessage); - Message message = getMessage(stringBuffer.toString()); - SecretManager secretManager = SecretManagerProvider.instance.get(); - String username = secretManager.getUser().getUsername(); - List recipients = message.getRecipients(); - recipients.add(new Recipient(username)); - Secret secret = Constants.getCatalogueSecret(); - secretManager.startSession(secret); - try { - sendMessage(message); - }finally { - secretManager.endSession(); - } - } - - protected void sendMessage(Message message) throws Exception { - SocialMessage socialMessage = new SocialMessage(); - socialMessage.setMessage(message); - socialMessage.start(); - } - - @Override - protected void createModerationThread() throws Exception { - create = true; - cmItemStatus = CMItemStatus.PENDING; - } - -} - \ No newline at end of file