From 9d7b1754b4fc068d495b7a7919bba2b819ac9b9e Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 9 May 2012 12:09:15 +0200 Subject: [PATCH] Add warning about bound resource when removing a user The resource will be unbound if the user confirm the removal. FEA: ItEr76S27ResourceBinding --- .../libreplan/web/users/UserCRUDController.java | 17 +++++++++++++++++ .../java/org/libreplan/web/users/UserModel.java | 10 ++++++++++ 2 files changed, 27 insertions(+) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java index 90daec37d..04f61d918 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java @@ -254,6 +254,23 @@ public class UserCRUDController extends BaseCRUDController implements return userModel.getUser(); } + @Override + protected boolean beforeDeleting(User user) { + Worker worker = user.getWorker(); + if (worker != null) { + try { + return Messagebox + .show(_("User is bound to resource \"{0}\" and it will be unbound. Do you want to continue with user removal?", + worker.getShortDescription()), + _("Confirm remove user"), Messagebox.YES + | Messagebox.NO, Messagebox.QUESTION) == Messagebox.YES; + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + return true; + } + @Override protected void delete(User user) throws InstanceNotFoundException { userModel.confirmRemove(user); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/UserModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/UserModel.java index 18eb313c8..4c9238611 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/UserModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/UserModel.java @@ -29,6 +29,8 @@ import org.libreplan.business.common.Configuration; import org.libreplan.business.common.daos.IConfigurationDAO; import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.common.exceptions.ValidationException; +import org.libreplan.business.resources.daos.IWorkerDAO; +import org.libreplan.business.resources.entities.Worker; import org.libreplan.business.users.daos.IUserDAO; import org.libreplan.business.users.entities.Profile; import org.libreplan.business.users.entities.User; @@ -62,6 +64,9 @@ public class UserModel implements IUserModel { @Autowired private IDBPasswordEncoderService dbPasswordEncoderService; + @Autowired + private IWorkerDAO workerDAO; + private User user; private String clearNewPassword; @@ -223,6 +228,11 @@ public class UserModel implements IUserModel { @Override @Transactional public void confirmRemove(User user) throws InstanceNotFoundException { + Worker worker = user.getWorker(); + if (worker != null) { + worker.setUser(null); + workerDAO.save(worker); + } userDAO.remove(user); }