From ca6fe707abbe0c1796dec27de9070745f935e548 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 1 Dec 2017 09:01:12 +0100 Subject: [PATCH] OO-3175: make sure to reload the identity which was edited --- .../olat/admin/UserAdminMainController.java | 3 +- .../olat/admin/user/UserAdminController.java | 4 ++ .../user/UsermanagerUserSearchController.java | 45 +++++++++---------- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/olat/admin/UserAdminMainController.java b/src/main/java/org/olat/admin/UserAdminMainController.java index 4486f9d8ac3..a3095c5b391 100644 --- a/src/main/java/org/olat/admin/UserAdminMainController.java +++ b/src/main/java/org/olat/admin/UserAdminMainController.java @@ -216,13 +216,14 @@ public class UserAdminMainController extends MainLayoutBasicController implement } } else if (source == userAdminCtr) { if (event == Event.BACK_EVENT) { + Identity editedIdentity = userAdminCtr.getEditedIdentity(); removeAsListenerAndDispose(userAdminCtr); userAdminCtr = null; // update data model of content controller when of type user search // to display correct values of identity if (contentCtr instanceof UsermanagerUserSearchController) { UsermanagerUserSearchController userSearchCtr = (UsermanagerUserSearchController) contentCtr; - userSearchCtr.reloadFoundIdentity(); + userSearchCtr.reloadFoundIdentity(editedIdentity); addToHistory(ureq, userSearchCtr); } content.setContent(contentCtr.getInitialComponent()); diff --git a/src/main/java/org/olat/admin/user/UserAdminController.java b/src/main/java/org/olat/admin/user/UserAdminController.java index 0060118d971..1011bc34c23 100644 --- a/src/main/java/org/olat/admin/user/UserAdminController.java +++ b/src/main/java/org/olat/admin/user/UserAdminController.java @@ -172,6 +172,10 @@ public class UserAdminController extends BasicController implements Activateable putInitialPanel(new Panel("empty")); } } + + public Identity getEditedIdentity() { + return myIdentity; + } @Override public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { diff --git a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java index c83957ea1b2..19e89a10a8f 100644 --- a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java +++ b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java @@ -38,7 +38,6 @@ import java.util.Set; import org.olat.admin.user.bulkChange.UserBulkChangeManager; import org.olat.admin.user.bulkChange.UserBulkChangeStep00; import org.olat.basesecurity.BaseSecurity; -import org.olat.basesecurity.BaseSecurityManager; import org.olat.basesecurity.BaseSecurityModule; import org.olat.basesecurity.Constants; import org.olat.basesecurity.PermissionOnResourceable; @@ -46,7 +45,6 @@ import org.olat.basesecurity.SecurityGroup; import org.olat.basesecurity.events.SingleIdentityChosenEvent; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.fullWebApp.popup.BaseFullWebappPopupLayoutFactory; -import org.olat.core.commons.persistence.DBFactory; import org.olat.core.commons.persistence.PersistenceHelper; import org.olat.core.commons.services.webdav.WebDAVModule; import org.olat.core.commons.services.webdav.manager.WebDAVAuthManager; @@ -87,7 +85,6 @@ import org.olat.core.id.OLATResourceable; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.core.id.context.StateMapped; -import org.olat.core.logging.AssertException; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.StringHelper; import org.olat.core.util.mail.ContactList; @@ -131,7 +128,6 @@ public class UsermanagerUserSearchController extends BasicController implements private List<Identity> identitiesList, selectedIdentities; private List<String> notUpdatedIdentities = new ArrayList<String>(); private ExtendedIdentitiesTableDataModel tdm; - private Identity foundIdentity = null; private ContactFormController contactCtr; private Link backFromMail; private Link backFromList; @@ -330,7 +326,6 @@ public class UsermanagerUserSearchController extends BasicController implements foundIdentites.add(found); initUserListCtr(ureq, foundIdentites, 0); } - foundIdentity = found; fireEvent(ureq, new SingleIdentityChosenEvent(found)); } } @@ -431,7 +426,6 @@ public class UsermanagerUserSearchController extends BasicController implements * @return List of identities that match the criterias from the search form */ private List<Identity> findIdentitiesFromSearchForm() { - BaseSecurity secMgr = BaseSecurityManager.getInstance(); // get user attributes from form String login = searchform.getStringValue("login"); // when searching for deleted users, add wildcard to match with backup prefix @@ -465,27 +459,27 @@ public class UsermanagerUserSearchController extends BasicController implements // get group memberships from form List<SecurityGroup> groupsList = new ArrayList<SecurityGroup>(); if (searchform.getRole("admin")) { - SecurityGroup group = secMgr.findSecurityGroupByName(Constants.GROUP_ADMIN); + SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_ADMIN); groupsList.add(group); } if (searchform.getRole("author")) { - SecurityGroup group = secMgr.findSecurityGroupByName(Constants.GROUP_AUTHORS); + SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_AUTHORS); groupsList.add(group); } if (searchform.getRole("groupmanager")) { - SecurityGroup group = secMgr.findSecurityGroupByName(Constants.GROUP_GROUPMANAGERS); + SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_GROUPMANAGERS); groupsList.add(group); } if (searchform.getRole("usermanager")) { - SecurityGroup group = secMgr.findSecurityGroupByName(Constants.GROUP_USERMANAGERS); + SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_USERMANAGERS); groupsList.add(group); } if (searchform.getRole("oresmanager")) { - SecurityGroup group = secMgr.findSecurityGroupByName(Constants.GROUP_INST_ORES_MANAGER); + SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_INST_ORES_MANAGER); groupsList.add(group); } if (searchform.getRole("poolmanager")) { - SecurityGroup group = secMgr.findSecurityGroupByName(Constants.GROUP_POOL_MANAGER); + SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_POOL_MANAGER); groupsList.add(group); } @@ -507,7 +501,7 @@ public class UsermanagerUserSearchController extends BasicController implements Date userLoginAfter = searchform.getUserLoginAfter(); // now perform power search - List<Identity> myIdentities = secMgr.getIdentitiesByPowerSearch((login.equals("") ? null : login), userPropertiesSearch, true, groups, + List<Identity> myIdentities = securityManager.getIdentitiesByPowerSearch((login.equals("") ? null : login), userPropertiesSearch, true, groups, permissionOnResources, authProviders, createdAfter, createdBefore, userLoginAfter, userLoginBefore, status); return myIdentities; @@ -542,7 +536,7 @@ public class UsermanagerUserSearchController extends BasicController implements String actionid = te.getActionId(); if (actionid.equals(ExtendedIdentitiesTableDataModel.COMMAND_SELECTUSER)) { int rowid = te.getRowId(); - foundIdentity = tdm.getObject(rowid); + Identity foundIdentity = tdm.getObject(rowid); // Tell parentController that a subject has been found fireEvent(ureq, new SingleIdentityChosenEvent(foundIdentity)); } else if (actionid.equals(ExtendedIdentitiesTableDataModel.COMMAND_VCARD)) { @@ -671,10 +665,9 @@ public class UsermanagerUserSearchController extends BasicController implements */ private void reloadDataModel(UserRequest ureq) { if (identitiesList == null) return; - BaseSecurity secMgr = BaseSecurityManager.getInstance(); for (int i = 0; i < identitiesList.size(); i++) { Identity ident = identitiesList.get(i); - Identity refrshed = secMgr.loadIdentityByKey(ident.getKey()); + Identity refrshed = securityManager.loadIdentityByKey(ident.getKey()); identitiesList.set(i, refrshed); } initUserListCtr(ureq, identitiesList, null); @@ -686,20 +679,24 @@ public class UsermanagerUserSearchController extends BasicController implements * activated user table list model. The identity will be reloaded from the * database to have accurate values. */ - public void reloadFoundIdentity() { - if (foundIdentity == null) throw new AssertException("reloadFoundIdentity called but foundIdentity is null"); - // reload the found identity - foundIdentity = (Identity) DBFactory.getInstance().loadObject(foundIdentity); - // replace the found identity in the table list model to display changed - // values - List identities = tdm.getObjects(); - PersistenceHelper.replaceObjectInListByKey(identities, foundIdentity); + public void reloadFoundIdentity(Identity editedIdentity) { + if(editedIdentity == null) return;//nothing to replace + + List<Identity> identities = tdm.getObjects(); + int index = identities.indexOf(editedIdentity); + if(index >= 0) { + // reload the found identity + Identity reloadedIdentity = securityManager.loadIdentityByKey(editedIdentity.getKey()); + // replace the found identity in the table list model to display changed + identities.set(index, reloadedIdentity); + } } /** * * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) */ + @Override protected void doDispose() { // } -- GitLab