gcat/src/main/java/org/gcube/gcat/moderation/thread/social/SocialMessageModerationThre...

77 lines
2.6 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 String getSubject(CMItemStatus cmItemStatus) {
StringWriter stringWriter = new StringWriter();
stringWriter.append(itemName);
stringWriter.append(" (id:");
stringWriter.append(itemID);
stringWriter.append(") - status:");
stringWriter.append(cmItemStatus.getFancyValue());
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);
sendMessage(message);
secretManager.endSession();
}
@Override
public void postUserMessage(CMItemStatus cmItemStatus, String userMessage) throws Exception {
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
}
}