203 lines
6.9 KiB
Java
203 lines
6.9 KiB
Java
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;
|
|
|
|
/**
|
|
* @author Luca Frosini (ISTI - CNR)
|
|
*/
|
|
public class SocialMessageModerationThread extends ModerationThread {
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(SocialMessageModerationThread.class);
|
|
|
|
protected StringBuffer getMainItemInfo(CMItemStatus cmItemStatus) {
|
|
StringBuffer stringBuffer = new 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: ");
|
|
stringBuffer.append(itemURL);
|
|
stringBuffer.append("\n\n");
|
|
return stringBuffer;
|
|
}
|
|
|
|
public void postItemCreated() throws Exception{
|
|
String fullName = ckanUser.getNameSurname();
|
|
CMItemStatus cmItemStatus = CMItemStatus.PENDING;
|
|
StringBuffer stringBuffer = getMainItemInfo(cmItemStatus);
|
|
|
|
stringBuffer.append("Message:\n");
|
|
stringBuffer.append(fullName);
|
|
stringBuffer.append(" created '");
|
|
stringBuffer.append(itemTitle);
|
|
stringBuffer.append("'. It is now in ");
|
|
stringBuffer.append(cmItemStatus.getFancyValue());
|
|
stringBuffer.append(" state and must be moderated.");
|
|
|
|
postMessage(cmItemStatus, stringBuffer.toString());
|
|
|
|
}
|
|
|
|
public void postItemUpdated() throws Exception {
|
|
String fullName = ckanUser.getNameSurname();
|
|
CMItemStatus cmItemStatus = CMItemStatus.PENDING;
|
|
StringBuffer stringBuffer = getMainItemInfo(cmItemStatus);
|
|
|
|
stringBuffer.append("Message:\n");
|
|
stringBuffer.append(fullName);
|
|
stringBuffer.append(" updated '");
|
|
stringBuffer.append(itemTitle);
|
|
stringBuffer.append("'. It is now in ");
|
|
stringBuffer.append(cmItemStatus.getFancyValue());
|
|
stringBuffer.append(" state and must be moderated.");
|
|
|
|
postMessage(cmItemStatus, stringBuffer.toString());
|
|
}
|
|
|
|
protected StringBuffer addUserWithRole(String fullName, String role, StringBuffer stringBuffer) {
|
|
stringBuffer.append(fullName);
|
|
stringBuffer.append(" [");
|
|
stringBuffer.append(role);
|
|
stringBuffer.append("] ");
|
|
return stringBuffer;
|
|
}
|
|
|
|
public void postItemRejected(String userMessage) throws Exception {
|
|
String fullName = ckanUser.getNameSurname();
|
|
CMItemStatus cmItemStatus = CMItemStatus.REJECTED;
|
|
|
|
StringBuffer stringBuffer = getMainItemInfo(cmItemStatus);
|
|
|
|
stringBuffer.append("Message:\n");
|
|
stringBuffer = addUserWithRole(fullName, Moderated.CATALOGUE_MODERATOR, stringBuffer);
|
|
stringBuffer.append("rejected '");
|
|
stringBuffer.append(itemTitle);
|
|
stringBuffer.append("'.");
|
|
stringBuffer.append(" The author can delete or update it.");
|
|
|
|
if(userMessage!=null && userMessage.length()>0) {
|
|
stringBuffer.append("\n\n");
|
|
stringBuffer = addUserWithRole(fullName, Moderated.CATALOGUE_MODERATOR, stringBuffer);
|
|
stringBuffer.append("added the following comment:\n");
|
|
stringBuffer.append(userMessage);
|
|
}
|
|
|
|
postMessage(cmItemStatus, stringBuffer.toString());
|
|
}
|
|
|
|
public void postItemApproved(String userMessage) throws Exception{
|
|
String fullName = ckanUser.getNameSurname();
|
|
CMItemStatus cmItemStatus = CMItemStatus.APPROVED;
|
|
|
|
StringBuffer stringBuffer = getMainItemInfo(cmItemStatus);
|
|
|
|
stringBuffer.append("Message:\n");
|
|
stringBuffer = addUserWithRole(fullName, Moderated.CATALOGUE_MODERATOR, stringBuffer);
|
|
stringBuffer.append("approved the '");
|
|
stringBuffer.append(itemTitle);
|
|
stringBuffer.append("'.");
|
|
stringBuffer.append(" It is now available in the catalogue at ");
|
|
stringBuffer.append(itemURL);
|
|
|
|
if(userMessage!=null && userMessage.length()>0) {
|
|
stringBuffer.append("\n\n");
|
|
stringBuffer = addUserWithRole(fullName, Moderated.CATALOGUE_MODERATOR, stringBuffer);
|
|
stringBuffer.append("added the following comment:\n");
|
|
stringBuffer.append(userMessage);
|
|
}
|
|
|
|
postMessage(cmItemStatus, stringBuffer.toString());
|
|
}
|
|
|
|
|
|
protected String getSubject(CMItemStatus cmItemStatus) {
|
|
StringWriter stringWriter = new StringWriter();
|
|
stringWriter.append("[Catalogue Service] ");
|
|
stringWriter.append(itemTitle);
|
|
stringWriter.append(" (name:");
|
|
stringWriter.append(itemName);
|
|
stringWriter.append(" - id:");
|
|
stringWriter.append(itemID);
|
|
stringWriter.append(")");
|
|
return stringWriter.toString();
|
|
}
|
|
|
|
protected Message getMessage(CMItemStatus cmItemStatus, String messageString) throws Exception {
|
|
Message message = new Message();
|
|
message.setMessage(messageString);
|
|
message.setSubject(getSubject(cmItemStatus));
|
|
Set<String> moderators = SocialUsers.getUsernamesByRole(Moderated.CATALOGUE_MODERATOR);
|
|
message.setUsers(moderators);
|
|
return message;
|
|
}
|
|
|
|
@Override
|
|
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);
|
|
try {
|
|
sendMessage(message);
|
|
}finally {
|
|
secretManager.endSession();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void postUserMessage(CMItemStatus cmItemStatus, String userMessage) throws Exception {
|
|
String fullName = ckanUser.getNameSurname();
|
|
StringBuffer stringBuffer = getMainItemInfo(cmItemStatus);
|
|
stringBuffer = addUserWithRole(fullName, isItemAuthor() ? "Author" : Moderated.CATALOGUE_MODERATOR, stringBuffer);
|
|
stringBuffer.append("sent the following comment:\n");
|
|
stringBuffer.append(userMessage);
|
|
Message message = getMessage(cmItemStatus, stringBuffer.toString());
|
|
SecretManager secretManager = SecretManagerProvider.instance.get();
|
|
String username = secretManager.getUser().getUsername();
|
|
message.addUser(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 {
|
|
// Nothing to do
|
|
}
|
|
|
|
}
|