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

105 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 {
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-06 17:15:46 +02:00
protected boolean itemAuthor;
protected CKANUser ckanUser;
protected ObjectMapper objectMapper;
public static ModerationThread getDefaultInstance() {
2022-03-29 15:17:30 +02:00
// return new FakeModerationThread();
return new SocialMessageModerationThread();
}
public ModerationThread() {
this.objectMapper = new ObjectMapper();
2022-04-06 17:15:46 +02:00
itemAuthor = false;
}
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 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();
2022-03-31 15:49:22 +02:00
String fullName = ckanUser.getNameSurname();
CMItemStatus cmItemStatus = CMItemStatus.PENDING;
2022-04-06 17:15: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());
postMessage(cmItemStatus, message);
}
public void postItemUpdated() throws Exception {
2022-03-31 15:49:22 +02:00
String fullName = ckanUser.getNameSurname();
CMItemStatus cmItemStatus = CMItemStatus.PENDING;
2022-04-06 17:15: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.",
fullName, itemName, itemID, cmItemStatus.getFancyValue());
postMessage(cmItemStatus, message);
}
public void postItemRejected(String userMessage) throws Exception {
2022-03-31 15:49:22 +02:00
String fullName = ckanUser.getNameSurname();
CMItemStatus cmItemStatus = CMItemStatus.REJECTED;
2022-04-06 17:15: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);
postMessage(cmItemStatus, message);
postUserMessage(cmItemStatus, userMessage);
}
public void postItemApproved(String userMessage) throws Exception{
2022-03-31 15:49:22 +02:00
String fullName = ckanUser.getNameSurname();
CMItemStatus cmItemStatus = CMItemStatus.APPROVED;
2022-04-06 17:15: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);
postMessage(cmItemStatus, message);
postUserMessage(cmItemStatus, userMessage);
}
}