2021-11-26 12:27:31 +01:00
package org.gcube.gcat.moderation.thread ;
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper ;
2021-12-02 11:50:18 +01:00
import org.gcube.gcat.api.moderation.CMItemStatus ;
2022-03-29 15:17:30 +02:00
import org.gcube.gcat.moderation.thread.social.SocialMessageModerationThread ;
2021-11-26 12:27:31 +01:00
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 ;
2021-11-26 12:27:31 +01:00
2022-04-06 17:15:46 +02:00
protected boolean itemAuthor ;
2021-11-26 12:27:31 +01:00
protected CKANUser ckanUser ;
protected ObjectMapper objectMapper ;
public static ModerationThread getDefaultInstance ( ) {
2022-03-29 15:17:30 +02:00
// return new FakeModerationThread();
return new SocialMessageModerationThread ( ) ;
2021-11-26 12:27:31 +01:00
}
public ModerationThread ( ) {
this . objectMapper = new ObjectMapper ( ) ;
2022-04-06 17:15:46 +02:00
itemAuthor = false ;
2021-11-26 12:27:31 +01:00
}
2022-04-06 17:15:46 +02:00
public void setItemCoordinates ( String itemID , String itemName , String itemTitle , String itemURL ) {
2021-11-26 12:27:31 +01:00
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 ;
2021-11-26 12:27:31 +01:00
}
2022-04-06 17:15:46 +02:00
public boolean isItemAuthor ( ) {
return itemAuthor ;
}
public void setItemAuthor ( boolean itemAuthor ) {
this . itemAuthor = itemAuthor ;
}
2021-11-26 12:27:31 +01:00
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 ( ) ;
2021-11-26 12:27:31 +01:00
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 ( ) ) ;
2021-11-26 12:27:31 +01:00
postMessage ( cmItemStatus , message ) ;
}
public void postItemUpdated ( ) throws Exception {
2022-03-31 15:49:22 +02:00
String fullName = ckanUser . getNameSurname ( ) ;
2021-11-26 12:27:31 +01:00
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 ( ) ) ;
2021-11-26 12:27:31 +01:00
postMessage ( cmItemStatus , message ) ;
}
public void postItemRejected ( String userMessage ) throws Exception {
2022-03-31 15:49:22 +02:00
String fullName = ckanUser . getNameSurname ( ) ;
2021-11-26 12:27:31 +01:00
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 ) ;
2021-11-26 12:27:31 +01:00
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 ( ) ;
2021-11-26 12:27:31 +01:00
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 ) ;
2021-11-26 12:27:31 +01:00
postMessage ( cmItemStatus , message ) ;
postUserMessage ( cmItemStatus , userMessage ) ;
}
}