105 lines
3.5 KiB
Java
105 lines
3.5 KiB
Java
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;
|
|
|
|
/**
|
|
* @author Luca Frosini (ISTI - CNR)
|
|
*/
|
|
public abstract class ModerationThread {
|
|
|
|
protected String itemID;
|
|
protected String itemName;
|
|
protected String itemTitle;
|
|
protected String itemURL;
|
|
|
|
protected boolean itemAuthor;
|
|
|
|
protected CKANUser ckanUser;
|
|
protected ObjectMapper objectMapper;
|
|
|
|
public static ModerationThread getDefaultInstance() {
|
|
// return new FakeModerationThread();
|
|
return new SocialMessageModerationThread();
|
|
}
|
|
|
|
public ModerationThread() {
|
|
this.objectMapper = new ObjectMapper();
|
|
itemAuthor = false;
|
|
}
|
|
|
|
public void setItemCoordinates(String itemID, String itemName, String itemTitle, String itemURL) {
|
|
this.itemID = itemID;
|
|
this.itemName = itemName;
|
|
this.itemTitle = itemTitle;
|
|
this.itemURL = itemURL;
|
|
}
|
|
|
|
public boolean isItemAuthor() {
|
|
return itemAuthor;
|
|
}
|
|
|
|
public void setItemAuthor(boolean itemAuthor) {
|
|
this.itemAuthor = itemAuthor;
|
|
}
|
|
|
|
public void setCKANUser(CKANUser ckanUser) {
|
|
this.ckanUser = ckanUser;
|
|
}
|
|
|
|
/**
|
|
* The message is sent as gCat
|
|
* @param cmItemStatus
|
|
* @param message
|
|
* @throws Exception
|
|
*/
|
|
protected abstract void postMessage(CMItemStatus cmItemStatus, String message) throws Exception;
|
|
|
|
/**
|
|
* The message is sent as User
|
|
* @param cmItemStatus
|
|
* @param userMessage
|
|
* @throws Exception
|
|
*/
|
|
public abstract void postUserMessage(CMItemStatus cmItemStatus, String userMessage) throws Exception;
|
|
|
|
protected abstract void createModerationThread() throws Exception ;
|
|
|
|
public void postItemCreated() throws Exception{
|
|
createModerationThread();
|
|
String fullName = ckanUser.getNameSurname();
|
|
CMItemStatus cmItemStatus = CMItemStatus.PENDING;
|
|
String message = String.format("@**%s** created the item with name '%s' (id='%s'). The item is now in **%s** state and must be moderated.",
|
|
fullName, itemName, itemID, cmItemStatus.getFancyValue());
|
|
postMessage(cmItemStatus, message);
|
|
}
|
|
|
|
public void postItemUpdated() throws Exception {
|
|
String fullName = ckanUser.getNameSurname();
|
|
CMItemStatus cmItemStatus = CMItemStatus.PENDING;
|
|
String message = String.format("@**%s** updated the item with name '%s' (id='%s'). The item is now in **%s** state and must be moderated.",
|
|
fullName, itemName, itemID, cmItemStatus.getFancyValue());
|
|
postMessage(cmItemStatus, message);
|
|
}
|
|
|
|
public void postItemRejected(String userMessage) throws Exception {
|
|
String fullName = ckanUser.getNameSurname();
|
|
CMItemStatus cmItemStatus = CMItemStatus.REJECTED;
|
|
String message = String.format("@**%s** **%s** the item with name '%s' (id='%s'). The author can delete the item or update it to try to meet moderators requests if any.",
|
|
fullName, cmItemStatus.getFancyValue(), itemName, itemID);
|
|
postMessage(cmItemStatus, message);
|
|
postUserMessage(cmItemStatus, userMessage);
|
|
}
|
|
|
|
public void postItemApproved(String userMessage) throws Exception{
|
|
String fullName = ckanUser.getNameSurname();
|
|
CMItemStatus cmItemStatus = CMItemStatus.APPROVED;
|
|
String message = String.format("@**%s** **%s** the item with name '%s' (id='%s'). The item is now available in the catalogue. The item is available at %s",
|
|
fullName, cmItemStatus.getFancyValue(), itemName, itemID, itemURL);
|
|
postMessage(cmItemStatus, message);
|
|
postUserMessage(cmItemStatus, userMessage);
|
|
}
|
|
}
|