gcat/src/main/java/org/gcube/gcat/moderation/thread/ModerationThread.java

113 lines
3.5 KiB
Java
Raw Normal View History

package org.gcube.gcat.moderation.thread;
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.gcube.gcat.api.moderation.CMItemStatus;
2022-03-29 15:17:30 +02:00
import org.gcube.gcat.moderation.thread.social.SocialMessageModerationThread;
import org.gcube.gcat.persistence.ckan.CKANUser;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public abstract class ModerationThread {
2022-04-07 16:24:46 +02:00
protected String itemID;
protected String itemName;
2022-04-06 17:15:46 +02:00
protected String itemTitle;
2022-03-31 15:49:22 +02:00
protected String itemURL;
2022-04-07 16:24:46 +02:00
protected boolean create;
protected CMItemStatus cmItemStatus;
2022-04-06 17:15:46 +02:00
protected boolean itemAuthor;
2022-04-07 16:24:46 +02:00
protected CKANUser ckanUser;
protected ObjectMapper objectMapper;
2022-04-07 16:24:46 +02:00
public static ModerationThread getDefaultInstance() {
2022-03-29 15:17:30 +02:00
// return new FakeModerationThread();
return new SocialMessageModerationThread();
}
2022-04-07 16:24:46 +02:00
public ModerationThread() {
this.objectMapper = new ObjectMapper();
2022-04-07 16:24:46 +02:00
this.itemAuthor = false;
this.create = false;
cmItemStatus = CMItemStatus.PENDING;
}
2022-04-07 16:24:46 +02:00
2022-04-06 17:15:46 +02:00
public void setItemCoordinates(String itemID, String itemName, String itemTitle, String itemURL) {
this.itemID = itemID;
this.itemName = itemName;
2022-04-06 17:15:46 +02:00
this.itemTitle = itemTitle;
2022-03-31 15:49:22 +02:00
this.itemURL = itemURL;
}
2022-04-06 17:15:46 +02:00
public void setItemAuthor(boolean itemAuthor) {
this.itemAuthor = itemAuthor;
}
public void setCKANUser(CKANUser ckanUser) {
this.ckanUser = ckanUser;
}
2022-04-07 16:24:46 +02:00
/**
* The message is sent as gCat
2022-04-07 16:24:46 +02:00
*
* @param cmItemStatus
* @param message
* @throws Exception
*/
2022-04-07 16:24:46 +02:00
protected abstract void postMessage(String message) throws Exception;
/**
* The message is sent as User
2022-04-07 16:24:46 +02:00
*
* @param cmItemStatus
* @param userMessage
* @throws Exception
*/
public abstract void postUserMessage(CMItemStatus cmItemStatus, String userMessage) throws Exception;
2022-04-07 16:24:46 +02:00
protected abstract void createModerationThread() throws Exception;
public void postItemCreated() throws Exception {
createModerationThread();
2022-04-07 16:24:46 +02:00
create = true;
cmItemStatus = CMItemStatus.PENDING;
2022-03-31 15:49:22 +02:00
String fullName = ckanUser.getNameSurname();
2022-04-07 16:24:46 +02:00
String message = String.format(
"@**%s** created the item with name '%s' (id='%s'). The item is now in **%s** state and must be moderated.",
2022-03-31 15:49:22 +02:00
fullName, itemName, itemID, cmItemStatus.getFancyValue());
2022-04-07 16:24:46 +02:00
postMessage(message);
}
public void postItemUpdated() throws Exception {
2022-04-07 16:24:46 +02:00
cmItemStatus = CMItemStatus.PENDING;
2022-03-31 15:49:22 +02:00
String fullName = ckanUser.getNameSurname();
2022-04-07 16:24:46 +02:00
String message = String.format(
"@**%s** updated the item with name '%s' (id='%s'). The item is now in **%s** state and must be moderated.",
2022-04-06 17:15:46 +02:00
fullName, itemName, itemID, cmItemStatus.getFancyValue());
2022-04-07 16:24:46 +02:00
postMessage(message);
}
2022-04-07 16:24:46 +02:00
public void postItemRejected(String userMessage) throws Exception {
2022-04-07 16:24:46 +02:00
cmItemStatus = CMItemStatus.REJECTED;
2022-03-31 15:49:22 +02:00
String fullName = ckanUser.getNameSurname();
2022-04-07 16:24:46 +02:00
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.",
2022-03-31 15:49:22 +02:00
fullName, cmItemStatus.getFancyValue(), itemName, itemID);
2022-04-07 16:24:46 +02:00
postMessage(message);
postUserMessage(cmItemStatus, userMessage);
}
2022-04-07 16:24:46 +02:00
public void postItemApproved(String userMessage) throws Exception {
cmItemStatus = CMItemStatus.APPROVED;
2022-03-31 15:49:22 +02:00
String fullName = ckanUser.getNameSurname();
2022-04-07 16:24:46 +02:00
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",
2022-03-31 15:49:22 +02:00
fullName, cmItemStatus.getFancyValue(), itemName, itemID, itemURL);
2022-04-07 16:24:46 +02:00
postMessage(message);
postUserMessage(cmItemStatus, userMessage);
}
2022-04-07 16:24:46 +02:00
}