gcat/src/main/java/org/gcube/gcat/moderation/thread/social/messages/SocialMessage.java

71 lines
2.0 KiB
Java

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);
}
}
}