From 6e368e570cbfdc6129856a857e50837be3411fee Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Thu, 30 Jan 2020 15:12:59 +0100 Subject: [PATCH] async removal of the user after the respons --- .settings/org.eclipse.wst.common.component | 3 -- .../hook/action/UpdateTermsOfUseAction.java | 19 +++++++--- .../thread/RemovedUserAccountThread.java | 38 +++++++++++++++++++ 3 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 src/main/java/org/gcube/portal/tou/removeaccount/thread/RemovedUserAccountThread.java diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 5fee282..8ca8e3c 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -4,9 +4,6 @@ - - uses - diff --git a/src/main/java/com/liferay/samplestrutsaction/hook/action/UpdateTermsOfUseAction.java b/src/main/java/com/liferay/samplestrutsaction/hook/action/UpdateTermsOfUseAction.java index 436cbdd..ba50eec 100644 --- a/src/main/java/com/liferay/samplestrutsaction/hook/action/UpdateTermsOfUseAction.java +++ b/src/main/java/com/liferay/samplestrutsaction/hook/action/UpdateTermsOfUseAction.java @@ -3,7 +3,7 @@ package com.liferay.samplestrutsaction.hook.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.gcube.portal.removeaccount.D4ScienceRemoveAccountManager; +import org.gcube.portal.tou.removeaccount.thread.RemovedUserAccountThread; import com.liferay.portal.kernel.struts.BaseStrutsAction; import com.liferay.portal.kernel.struts.StrutsAction; @@ -17,14 +17,21 @@ public class UpdateTermsOfUseAction extends BaseStrutsAction { public String execute(StrutsAction originalStrutsAction, HttpServletRequest request, HttpServletResponse response) throws Exception { String agreement = request.getParameter("agreement"); if (agreement.compareTo("i-disagree")==0) { //the user did not agree - User user = PortalUtil.getUser(request); + String username2Delete = null; try { - D4ScienceRemoveAccountManager removeAccountManager = new D4ScienceRemoveAccountManager(user.getScreenName()); - removeAccountManager.doAsyncRemoveAccount(); - System.out.println("*** UpdateTermsOfUseAction user DID NOT AGREE, removeUser account for username=" + user.getScreenName() + " done with success, notified also the managers ... "); + User user = PortalUtil.getUser(request); + username2Delete = user.getScreenName(); } catch (Exception e) { e.printStackTrace(); - } + } + System.out.println("*** UpdateTermsOfUseAction user DID NOT AGREE, removeUser account for username=" + username2Delete + " ongoing ... "); + if (username2Delete != null) { + Thread dropUserAccountThread = new Thread(new RemovedUserAccountThread(username2Delete)); + dropUserAccountThread.start(); + } else { + System.out.println("Account not removed"); + } + return "/../c/portal/logout"; } else //the user agreed diff --git a/src/main/java/org/gcube/portal/tou/removeaccount/thread/RemovedUserAccountThread.java b/src/main/java/org/gcube/portal/tou/removeaccount/thread/RemovedUserAccountThread.java new file mode 100644 index 0000000..9988b13 --- /dev/null +++ b/src/main/java/org/gcube/portal/tou/removeaccount/thread/RemovedUserAccountThread.java @@ -0,0 +1,38 @@ +package org.gcube.portal.tou.removeaccount.thread; + +import org.gcube.portal.removeaccount.D4ScienceRemoveAccountManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * + * @author Massimiliano Assante ISTI-CNR + * + */ +public class RemovedUserAccountThread implements Runnable { + + private static final Logger _log = LoggerFactory.getLogger(RemovedUserAccountThread.class); + private String userNameToDelete; + + + + + public RemovedUserAccountThread(String userNameToDelete) { + super(); + this.userNameToDelete = userNameToDelete; + } + + @Override + public void run() { + try { + + D4ScienceRemoveAccountManager removeAccountManager = new D4ScienceRemoveAccountManager(userNameToDelete); + boolean result = removeAccountManager.doAsyncRemoveAccount(); + _log.info("The user "+userNameToDelete+ " removed her/his account with success?"+ result); + + } catch (Exception e) { + _log.error("An error occurred during user workspace removal: ", e); + } + } +}