From 8d9e63b5608ebd40b5590db2a118c34bd49a840b Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 24 Jun 2022 11:02:53 +0200 Subject: [PATCH] Improved the Social Post: removed the
char. --- .../client/view/ManageProductWidget.java | 2 +- .../server/manage/SocialCommunications.java | 317 ++++++++++-------- 2 files changed, 176 insertions(+), 143 deletions(-) diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.java index fafac26..feb368e 100644 --- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.java +++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.java @@ -673,7 +673,7 @@ public class ManageProductWidget extends Composite{ for(SimilarGRSFRecord sR: bean.getSimilarGrsfRecords()){ if(sR.isSuggestedMerge()){ bean.setMergesInvolved(true); - report += "\n\t - merge the current record with record '" + sR.getTitle() + " ;"; + report += "\n\t - merge the current record with record '" + sR.getTitle() + "' ;"; report += "\n\t \t- GRSF Name '" + sR.getTitle() + "' ;"; report += "\n\t \t- Short Name '" + sR.getShortName() + "' ;"; report += "\n\t \t- URL '" + sR.getUrl() + "' ;"; diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/SocialCommunications.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/SocialCommunications.java index 88b0d71..928119f 100644 --- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/SocialCommunications.java +++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/SocialCommunications.java @@ -41,9 +41,10 @@ import org.json.simple.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - /** - * For managing the different interactions with social channels (posts and mails) + * For managing the different interactions with social channels (posts and + * mails) + * * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) */ public class SocialCommunications { @@ -64,9 +65,10 @@ public class SocialCommunications { private static final String MEDIATYPE_JSON = "application/json"; // for writing a post in the GRSF admin context - private static final String APPLICATION_ID_CATALOGUE_MANAGER = "org.gcube.datacatalogue.GRSFNotifier"; + private static final String APPLICATION_ID_CATALOGUE_MANAGER = "org.gcube.datacatalogue.GRSFNotifier"; - // emails to be sent to editors and reviewers and post to be written into the grsf admin vre + // emails to be sent to editors and reviewers and post to be written into the + // grsf admin vre private static final String POST_MESSAGE = "Dear members," + "\nThe record 'PRODUCT_TITLE' has been just updated by USER_FULLNAME." + "\nYou can inspect it here: LINK_RECORD."; @@ -81,7 +83,7 @@ public class SocialCommunications { private static final String ADD_REPORT = "

This is a summary of the actions proposed:
REPORT_UPDATE
"; - // revert link + // revert link private static final String REVERT_LINK_PIECE = "
The request involves a merge operation. You can reject the merge by exploiting this link LINK in the following 24 hours."; // on revert operation @@ -89,7 +91,7 @@ public class SocialCommunications { + "
a revert operation (undo merge) has been requested on record RECORD_URL, by ADMIN_WHO_CHANGED."; private static final String EMAIL_EDITOR_REVERT = "Dear ORIGINAL_USER," - +"
a revert operation (undo merge) has been requested on this RECORD_URL you managed by ADMIN_WHO_CHANGED."; + + "
a revert operation (undo merge) has been requested on this RECORD_URL you managed by ADMIN_WHO_CHANGED."; // post on revert private static final String POST_ON_REVERT = "Dear members," @@ -99,39 +101,42 @@ public class SocialCommunications { /** * - * @param httpServletRequest + * @param httpServletRequest * @param context * @return */ - public static String getBaseUrlSocialService(HttpServletRequest httpServletRequest){ + public static String getBaseUrlSocialService(HttpServletRequest httpServletRequest) { String context = ScopeProvider.instance.get(); - String keyPerContext = SOCIAL_NETWORKING_BASE_URL_SESSION_KEY + context; + String keyPerContext = SOCIAL_NETWORKING_BASE_URL_SESSION_KEY + context; String basePath = (String) httpServletRequest.getSession().getAttribute(keyPerContext); - if(basePath == null){ - try{ + if (basePath == null) { + try { SimpleQuery query = queryFor(GCoreEndpoint.class); - query.addCondition(String.format("$resource/Profile/ServiceClass/text() eq '%s'",serviceClass)); + query.addCondition(String.format("$resource/Profile/ServiceClass/text() eq '%s'", serviceClass)); query.addCondition("$resource/Profile/DeploymentData/Status/text() eq 'ready'"); - query.addCondition(String.format("$resource/Profile/ServiceName/text() eq '%s'",serviceName)); - query.setResult("$resource/Profile/AccessPoint/RunningInstanceInterfaces//Endpoint[@EntryName/string() eq \""+resource+"\"]/text()"); + query.addCondition(String.format("$resource/Profile/ServiceName/text() eq '%s'", serviceName)); + query.setResult( + "$resource/Profile/AccessPoint/RunningInstanceInterfaces//Endpoint[@EntryName/string() eq \"" + + resource + "\"]/text()"); DiscoveryClient client = client(); List endpoints = client.submit(query); - if (endpoints == null || endpoints.isEmpty()) - throw new Exception("Cannot retrieve the GCoreEndpoint serviceName: "+serviceName +", serviceClass: " +serviceClass +", in scope: "+context); - + if (endpoints == null || endpoints.isEmpty()) + throw new Exception("Cannot retrieve the GCoreEndpoint serviceName: " + serviceName + + ", serviceClass: " + serviceClass + ", in scope: " + context); basePath = endpoints.get(0); - if(basePath==null) - throw new Exception("Endpoint:"+resource+", is null for serviceName: "+serviceName +", serviceClass: " +serviceClass +", in scope: "+context); + if (basePath == null) + throw new Exception("Endpoint:" + resource + ", is null for serviceName: " + serviceName + + ", serviceClass: " + serviceClass + ", in scope: " + context); httpServletRequest.getSession().setAttribute(keyPerContext, basePath); - }catch(Exception e){ + } catch (Exception e) { logger.error("Unable to retrieve such service endpoint information!", e); } } @@ -141,31 +146,35 @@ public class SocialCommunications { /** * Require a proper application token for writing a post and send messages. + * * @return * @throws Exception */ @SuppressWarnings("unchecked") - private static String requireApplicationToken(String serviceUrl) throws Exception{ + private static String requireApplicationToken(String serviceUrl) throws Exception { String currentScope = ScopeProvider.instance.get(); String tokenUser = SecurityTokenProvider.instance.get(); - logger.info("Current scope for requireApplicationToken is " + currentScope + " and token is " + tokenUser.substring(0, 10) + "***************"); + logger.info("Current scope for requireApplicationToken is " + currentScope + " and token is " + + tokenUser.substring(0, 10) + "***************"); String basePath = serviceUrl; - if(basePath == null){ + if (basePath == null) { logger.error("Unable to write a post because there is no social networking service available"); throw new Exception("Unable to discover the social networking service"); - }else{ + } else { basePath = basePath.endsWith("/") ? basePath : basePath + "/"; - try(CloseableHttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()).build();){ + try (CloseableHttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()) + .build();) { // ask token application - HttpPost postRequest = new HttpPost(basePath + SOCIAL_SERVICE_APPLICATION_TOKEN + "?gcube-token=" + tokenUser); + HttpPost postRequest = new HttpPost( + basePath + SOCIAL_SERVICE_APPLICATION_TOKEN + "?gcube-token=" + tokenUser); JSONObject requestToken = new JSONObject(); requestToken.put("app_id", APPLICATION_ID_CATALOGUE_MANAGER); StringEntity input = new StringEntity(requestToken.toJSONString()); @@ -178,21 +187,21 @@ public class SocialCommunications { if (response.getStatusLine().getStatusCode() != 201) { throw new RuntimeException("Failed to retrieve application token : HTTP error code : " + response.getStatusLine().getStatusCode()); - }else{ + } else { Map mapResponseGeneratedToken = getResponseEntityAsJSON(response); - boolean successGeneratedToken = (boolean)mapResponseGeneratedToken.get("success"); - if(!successGeneratedToken){ + boolean successGeneratedToken = (boolean) mapResponseGeneratedToken.get("success"); + if (!successGeneratedToken) { throw new RuntimeException("Failed to generate the token for the application!" + " Error message is " + mapResponseGeneratedToken.get("message")); - }else{ - return (String)mapResponseGeneratedToken.get("result"); + } else { + return (String) mapResponseGeneratedToken.get("result"); } } - }catch(Exception e){ + } catch (Exception e) { logger.error("Failed to create a post", e); throw e; } @@ -201,63 +210,76 @@ public class SocialCommunications { /** * Notify the users about the required changes. + * * @param bean * @param url * @param username * @param fullName * @param hashtags * @param enablePostNotification - * @throws Exception + * @throws Exception */ @SuppressWarnings("unchecked") - public static void writePostOnRevert(String serviceUrl, RevertableOperationInfo rInfo, boolean enablePostNotification, String userCurrentUrl) throws Exception{ + public static void writePostOnRevert(String serviceUrl, RevertableOperationInfo rInfo, + boolean enablePostNotification, String userCurrentUrl) throws Exception { // discover service endpoint for the social networking library String currentScope = ScopeProvider.instance.get(); String tokenUser = SecurityTokenProvider.instance.get(); - logger.info("Current scope for writePostOnRevert is " + currentScope + " and token is " + tokenUser.substring(0, 10) + "***************"); + logger.info("Current scope for writePostOnRevert is " + currentScope + " and token is " + + tokenUser.substring(0, 10) + "***************"); String basePath = serviceUrl; - if(basePath == null){ + if (basePath == null) { logger.error("Unable to write a post because there is no social networking service available"); throw new Exception("Unable to discover the social networking service"); - }else{ + } else { basePath = basePath.endsWith("/") ? basePath : basePath + "/"; - try(CloseableHttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()).build();){ + try (CloseableHttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()) + .build();) { // require url String applicationToken = requireApplicationToken(serviceUrl); - //see Feature #17576 updated by Francesco - /*final String profilePageURL = GCubePortalConstants.PREFIX_GROUP_URL + extractOrgFriendlyURL(userCurrentUrl) + GCubePortalConstants.USER_PROFILE_FRIENDLY_URL; - String userFullNameHighlightedCurrent = ""+rInfo.getFullNameCurrentAdmin()+ - " "; - */ - - String userFullNameHighlightedCurrent = "@"+rInfo.getUserNameCurrentAdmin(); + // see Feature #17576 updated by Francesco + /* + * final String profilePageURL = GCubePortalConstants.PREFIX_GROUP_URL + + * extractOrgFriendlyURL(userCurrentUrl) + + * GCubePortalConstants.USER_PROFILE_FRIENDLY_URL; String + * userFullNameHighlightedCurrent = ""+rInfo.getFullNameCurrentAdmin()+ " "; + */ - /*String userFullNameHighlightedOriginal = ""+rInfo.getFullNameOriginalAdmin()+ - " ";*/ - - String userFullNameHighlightedOriginal = "@"+rInfo.getUserNameOriginalAdmin(); + String userFullNameHighlightedCurrent = "@" + rInfo.getUserNameCurrentAdmin(); + + /* + * String userFullNameHighlightedOriginal = ""+rInfo.getFullNameOriginalAdmin()+ " "; + */ + + String userFullNameHighlightedOriginal = "@" + rInfo.getUserNameOriginalAdmin(); // replace - String message = POST_ON_REVERT.replace("RECORD_URL", rInfo.getRecordUrl()).replace("ADMIN_WHO_CHANGED", userFullNameHighlightedCurrent).replace("ORIGINAL_USER",userFullNameHighlightedOriginal); + String message = POST_ON_REVERT.replace("RECORD_URL", rInfo.getRecordUrl()) + .replace("ADMIN_WHO_CHANGED", userFullNameHighlightedCurrent) + .replace("ORIGINAL_USER", userFullNameHighlightedOriginal); // add hashtag - message +="\n\n"; + message += "\n\n"; message += " #" + HashTagsOnUpdate.REVERTED_MERGE.getString(); logger.info("The post that is going to be written is -> " + message); - HttpPost postRequest = new HttpPost(basePath + SOCIAL_SERVICE_WRITE_APPLICATION_POST + "?gcube-token=" + applicationToken); + HttpPost postRequest = new HttpPost( + basePath + SOCIAL_SERVICE_WRITE_APPLICATION_POST + "?gcube-token=" + applicationToken); JSONObject object = new JSONObject(); object.put("text", message); object.put("enable_notification", enablePostNotification); @@ -272,7 +294,7 @@ public class SocialCommunications { throw new RuntimeException("Failed to write application post : HTTP error code : " + response.getStatusLine().getStatusCode() + mapResponseWritePost.get("message")); - }catch(Exception e){ + } catch (Exception e) { logger.error("Failed to create a post", e); } } @@ -280,69 +302,77 @@ public class SocialCommunications { /** * Notify the users about the required changes. + * * @param bean * @param url * @param username * @param fullName * @param hashtags * @param enablePostNotification - * @throws Exception + * @throws Exception */ @SuppressWarnings("unchecked") - public static void writeProductPost(String serviceUrl, ManageProductBean bean, String username, String fullName, boolean enablePostNotification, String userCurrentUrl) throws Exception{ + public static void writeProductPost(String serviceUrl, ManageProductBean bean, String username, String fullName, + boolean enablePostNotification, String userCurrentUrl) throws Exception { // discover service endpoint for the social networking library String currentScope = ScopeProvider.instance.get(); String tokenUser = SecurityTokenProvider.instance.get(); - logger.info("Current scope for writeProductPost is " + currentScope + " and token is " + tokenUser.substring(0, 10) + "***************"); + logger.info("Current scope for writeProductPost is " + currentScope + " and token is " + + tokenUser.substring(0, 10) + "***************"); String basePath = serviceUrl; - if(basePath == null){ + if (basePath == null) { logger.error("Unable to write a post because there is no social networking service available"); throw new Exception("Unable to discover the social networking service"); - }else{ + } else { basePath = basePath.endsWith("/") ? basePath : basePath + "/"; - try(CloseableHttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()).build();){ + try (CloseableHttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()) + .build();) { // require url String applicationToken = requireApplicationToken(serviceUrl); - - //see Feature #17576 Updated by Francesco - /*final String profilePageURL = GCubePortalConstants.PREFIX_GROUP_URL + extractOrgFriendlyURL(userCurrentUrl) + GCubePortalConstants.USER_PROFILE_FRIENDLY_URL; - String userFullNameHighlighted = ""+fullName+ - " "; - */ - - String userFullNameHighlighted = "@"+username; + + // see Feature #17576 Updated by Francesco + /* + * final String profilePageURL = GCubePortalConstants.PREFIX_GROUP_URL + + * extractOrgFriendlyURL(userCurrentUrl) + + * GCubePortalConstants.USER_PROFILE_FRIENDLY_URL; String + * userFullNameHighlighted = ""+fullName+ + * " "; + */ + + String userFullNameHighlighted = "@" + username; // replace - String message = POST_MESSAGE.replace("PRODUCT_TITLE", bean.getTitle()).replace("LINK_RECORD", bean.getUrl()). - replace("USER_FULLNAME", userFullNameHighlighted); + String message = POST_MESSAGE.replace("PRODUCT_TITLE", bean.getTitle()) + .replace("LINK_RECORD", bean.getUrl()).replace("USER_FULLNAME", userFullNameHighlighted); - if(bean.getReport() != null && !bean.getReport().isEmpty()) - message += ADD_REPORT.replace("REPORT_UPDATE", bean.getReport()); + if (bean.getReport() != null && !bean.getReport().isEmpty()) + message += ADD_REPORT.replace("
", "").replace("REPORT_UPDATE", bean.getReport()); Set hashtags = bean.getHashtags(); logger.debug("Hashtags are " + hashtags); - if(hashtags != null && !hashtags.isEmpty()){ - message +="\n\n"; + if (hashtags != null && !hashtags.isEmpty()) { + message += "\n\n"; for (String hashtag : hashtags) { message += " #" + hashtag; } - //Added by Francesco Mangiacrapa see at Feature #16312 + // Added by Francesco Mangiacrapa see at Feature #16312 String normalizedFullName = fullName.trim().replace(" ", "_"); message += " #" + normalizedFullName; } logger.info("The post that is going to be written is -> " + message); - HttpPost postRequest = new HttpPost(basePath + SOCIAL_SERVICE_WRITE_APPLICATION_POST + "?gcube-token=" + applicationToken); + HttpPost postRequest = new HttpPost( + basePath + SOCIAL_SERVICE_WRITE_APPLICATION_POST + "?gcube-token=" + applicationToken); JSONObject object = new JSONObject(); object.put("text", message); object.put("enable_notification", enablePostNotification); @@ -356,7 +386,7 @@ public class SocialCommunications { if (response.getStatusLine().getStatusCode() != 201) throw new RuntimeException("Failed to write application post : HTTP error code : " + response.getStatusLine().getStatusCode() + mapResponseWritePost.get("message")); - }catch(Exception e){ + } catch (Exception e) { logger.error("Failed to create a post", e); } } @@ -372,31 +402,26 @@ public class SocialCommunications { } else { friendlyURL = friendlyURL.split("\\?")[0].split("\\#")[0]; } - return "/"+friendlyURL; + return "/" + friendlyURL; } return null; } /** - * Send an email to the administrator as well as the + * Send an email to the administrator as well as the + * * @param bean * @param catalogue * @param username * @param fullName - * @param isMergeInvolved - * @param httpSession - * @throws Exceptio + * @param isMergeInvolved + * @param httpSession + * @throws Exceptio */ @SuppressWarnings("unchecked") - public static void sendEmailAdministrators( - String serviceUrl, - ManageProductBean bean, - DataCatalogue catalogue, - String username, - String fullName, - long groupId, - String clientCurrenturl, - boolean isMergeInvolved) throws Exception { + public static void sendEmailAdministrators(String serviceUrl, ManageProductBean bean, DataCatalogue catalogue, + String username, String fullName, long groupId, String clientCurrenturl, boolean isMergeInvolved) + throws Exception { // get the list of GRSF Reviewers to alert them as well RoleManager roleManager = new LiferayRoleManager(); @@ -406,54 +431,56 @@ public class SocialCommunications { List reviewers = new ArrayList(reviewersGcube.size()); - for(GCubeUser gU: reviewersGcube){ + for (GCubeUser gU : reviewersGcube) { // if the user is a reviewer, then send the email just once - if(!gU.getUsername().equals(username)) + if (!gU.getUsername().equals(username)) reviewers.add(gU.getUsername()); } logger.info("List of " + Constants.GRSF_CATALOGUE_REVIEWER_ROLE + " is " + reviewers); - // build the url that allows to revert the operation + // build the url that allows to revert the operation RevertableOperations operation = RevertableOperations.MERGE; // discover service endpoint for the social networking library String currentScope = ScopeProvider.instance.get(); String tokenUser = SecurityTokenProvider.instance.get(); - logger.info("Current scope for writeProductPost is " + currentScope + " and token is " + tokenUser.substring(0, 10) + "***************"); + logger.info("Current scope for writeProductPost is " + currentScope + " and token is " + + tokenUser.substring(0, 10) + "***************"); String basePath = serviceUrl; - if(basePath == null){ + if (basePath == null) { logger.error("Unable to write a post because there is no social networking service available"); throw new Exception("Unable to discover the social networking service"); - }else{ + } else { basePath = basePath.endsWith("/") ? basePath : basePath + "/"; - try(CloseableHttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()).build();){ + try (CloseableHttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()) + .build();) { /// require url String applicationToken = requireApplicationToken(serviceUrl); String revertUrl = ""; - if(isMergeInvolved) - revertUrl = getEncodedUrlManage(operation, username, System.currentTimeMillis(), bean.getKnowledgeBaseId(), clientCurrenturl); - - String messageToEditor = (EMAIL_MESSAGE_EDITOR + - (isMergeInvolved? REVERT_LINK_PIECE : "")).replace("USER_FULLNAME", fullName).replace("PRODUCT_TITLE", bean.getTitle()). - replace("LINK_RECORD", bean.getUrl()).replace("LINK", revertUrl); - String messageToReviewer = (EMAIL_MESSAGE_REVIEWER+ - (isMergeInvolved? REVERT_LINK_PIECE : "")).replace("USER_FULLNAME", fullName).replace("PRODUCT_TITLE", bean.getTitle()). - replace("LINK_RECORD", bean.getUrl()).replace("LINK", revertUrl); + if (isMergeInvolved) + revertUrl = getEncodedUrlManage(operation, username, System.currentTimeMillis(), + bean.getKnowledgeBaseId(), clientCurrenturl); + String messageToEditor = (EMAIL_MESSAGE_EDITOR + (isMergeInvolved ? REVERT_LINK_PIECE : "")) + .replace("USER_FULLNAME", fullName).replace("PRODUCT_TITLE", bean.getTitle()) + .replace("LINK_RECORD", bean.getUrl()).replace("LINK", revertUrl); + String messageToReviewer = (EMAIL_MESSAGE_REVIEWER + (isMergeInvolved ? REVERT_LINK_PIECE : "")) + .replace("USER_FULLNAME", fullName).replace("PRODUCT_TITLE", bean.getTitle()) + .replace("LINK_RECORD", bean.getUrl()).replace("LINK", revertUrl); String subject = "Update request on GRSF Record"; // append report - if(bean.getReport() != null){ + if (bean.getReport() != null) { messageToEditor += ADD_REPORT.replace("REPORT_UPDATE", bean.getReport()); messageToReviewer += ADD_REPORT.replace("REPORT_UPDATE", bean.getReport()); } @@ -482,7 +509,7 @@ public class SocialCommunications { Map mapResponseWritePost = getResponseEntityAsJSON(response); - if (response.getStatusLine().getStatusCode() != 201){ + if (response.getStatusLine().getStatusCode() != 201) { logger.error("Failed to send message to editor : HTTP error code : " + response.getStatusLine().getStatusCode() + mapResponseWritePost.get("message")); } @@ -494,7 +521,7 @@ public class SocialCommunications { reqMessage.put("subject", subject); reqMessage.put("body", messageToReviewer); recipients = new JSONArray(); - for(String reviewer: reviewers){ + for (String reviewer : reviewers) { JSONObject recip = new JSONObject(); recip.put("id", reviewer); recipients.add(recip); @@ -509,12 +536,12 @@ public class SocialCommunications { response = client.execute(postRequest); mapResponseWritePost = getResponseEntityAsJSON(response); - if (response.getStatusLine().getStatusCode() != 201){ + if (response.getStatusLine().getStatusCode() != 201) { logger.error("Failed to send message to reviewers : HTTP error code : " + response.getStatusLine().getStatusCode() + mapResponseWritePost.get("message")); } - }catch(Exception e){ + } catch (Exception e) { logger.error("Failed to send messages", e); } } @@ -522,11 +549,8 @@ public class SocialCommunications { } @SuppressWarnings("unchecked") - public static void sendEmailAdministratorsOnOperationReverted( - String serviceUrl, - RevertableOperationInfo rInfo, - long groupId - ) throws Exception { + public static void sendEmailAdministratorsOnOperationReverted(String serviceUrl, RevertableOperationInfo rInfo, + long groupId) throws Exception { // get the list of GRSF Reviewers to alert them as well RoleManager roleManager = new LiferayRoleManager(); @@ -536,9 +560,9 @@ public class SocialCommunications { List reviewers = new ArrayList(reviewersGcube.size()); - for(GCubeUser gU: reviewersGcube){ + for (GCubeUser gU : reviewersGcube) { // if the user is a reviewer, then send the email just once - if(!gU.getUsername().equals(rInfo.getUserNameOriginalAdmin())) + if (!gU.getUsername().equals(rInfo.getUserNameOriginalAdmin())) reviewers.add(gU.getUsername()); } @@ -548,26 +572,31 @@ public class SocialCommunications { String currentScope = ScopeProvider.instance.get(); String tokenUser = SecurityTokenProvider.instance.get(); - logger.info("Current scope for writeProductPost is " + currentScope + " and token is " + tokenUser.substring(0, 10) + "***************"); + logger.info("Current scope for writeProductPost is " + currentScope + " and token is " + + tokenUser.substring(0, 10) + "***************"); String basePath = serviceUrl; - if(basePath == null){ + if (basePath == null) { logger.error("Unable to write a post because there is no social networking service available"); throw new Exception("Unable to discover the social networking service"); - }else{ + } else { basePath = basePath.endsWith("/") ? basePath : basePath + "/"; - try(CloseableHttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()).build();){ + try (CloseableHttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()) + .build();) { String applicationToken = requireApplicationToken(serviceUrl); - String messageToEditor = EMAIL_EDITOR_REVERT.replace("RECORD_URL", rInfo.getRecordUrl()).replace("ORIGINAL_USER", rInfo.getFullNameOriginalAdmin()). - replace("ADMIN_WHO_CHANGED", rInfo.getFullNameCurrentAdmin()); - String messageToReviewer = EMAIL_REVIEWER_REVERT.replace("ADMIN_WHO_CHANGED", rInfo.getFullNameCurrentAdmin()).replace("RECORD_URL", rInfo.getRecordUrl()). - replace("ORIGINAL_USER", rInfo.getFullNameOriginalAdmin()); + String messageToEditor = EMAIL_EDITOR_REVERT.replace("RECORD_URL", rInfo.getRecordUrl()) + .replace("ORIGINAL_USER", rInfo.getFullNameOriginalAdmin()) + .replace("ADMIN_WHO_CHANGED", rInfo.getFullNameCurrentAdmin()); + String messageToReviewer = EMAIL_REVIEWER_REVERT + .replace("ADMIN_WHO_CHANGED", rInfo.getFullNameCurrentAdmin()) + .replace("RECORD_URL", rInfo.getRecordUrl()) + .replace("ORIGINAL_USER", rInfo.getFullNameOriginalAdmin()); String subject = "Revert merge request on GRSF Record"; messageToEditor = messageToEditor.replace("
", "\n"); @@ -591,7 +620,7 @@ public class SocialCommunications { Map mapResponseWritePost = getResponseEntityAsJSON(response); - if (response.getStatusLine().getStatusCode() != 201){ + if (response.getStatusLine().getStatusCode() != 201) { logger.error("Failed to send message to editor : HTTP error code : " + response.getStatusLine().getStatusCode() + mapResponseWritePost.get("message")); } @@ -603,7 +632,7 @@ public class SocialCommunications { reqMessage.put("subject", subject); reqMessage.put("body", messageToReviewer); recipients = new JSONArray(); - for(String reviewer: reviewers){ + for (String reviewer : reviewers) { JSONObject recip = new JSONObject(); recip.put("id", reviewer); recipients.add(recip); @@ -615,12 +644,12 @@ public class SocialCommunications { response = client.execute(postRequest); mapResponseWritePost = getResponseEntityAsJSON(response); - if (response.getStatusLine().getStatusCode() != 201){ + if (response.getStatusLine().getStatusCode() != 201) { logger.error("Failed to send message to editor : HTTP error code : " + response.getStatusLine().getStatusCode() + mapResponseWritePost.get("message")); } - }catch(Exception e){ + } catch (Exception e) { logger.error("Failed to send messages", e); throw new Exception(e); } @@ -630,24 +659,28 @@ public class SocialCommunications { /** * Create the url to be send for reverting the operation - * @param httpSession + * + * @param httpSession * @return - * @throws Exception + * @throws Exception */ - public static String getEncodedUrlManage(RevertableOperations operation, String administrator, long timestamp, String uuid, String clientCurrenturl) throws Exception{ + public static String getEncodedUrlManage(RevertableOperations operation, String administrator, long timestamp, + String uuid, String clientCurrenturl) throws Exception { logger.info("Request for revert link. Client current url is " + clientCurrenturl); - RevertOperationUrl operationUrl = new RevertOperationUrl(clientCurrenturl, administrator, timestamp, uuid, operation); + RevertOperationUrl operationUrl = new RevertOperationUrl(clientCurrenturl, administrator, timestamp, uuid, + operation); String shortUrl = operationUrl.getShortUrl(); return shortUrl; } /** * Convert the json response to a map + * * @param response * @return */ @SuppressWarnings("unchecked") - public static Map getResponseEntityAsJSON(HttpResponse response){ + public static Map getResponseEntityAsJSON(HttpResponse response) { Map toReturn = null; HttpEntity entity = response.getEntity(); @@ -660,7 +693,7 @@ public class SocialCommunications { ObjectMapper objectMapper = new ObjectMapper(); toReturn = objectMapper.readValue(jsonString, HashMap.class); logger.debug("Map is " + toReturn); - }catch(Exception e){ + } catch (Exception e) { logger.error("Failed to read json object", e); } }