Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSaveAction.java =================================================================== diff -u -rdc670ce921e2b9d4fda9fae27392e9bb69560856 -ra99beebd296504aff314ec52850543f1823f650b --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSaveAction.java (.../UserSaveAction.java) (revision dc670ce921e2b9d4fda9fae27392e9bb69560856) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSaveAction.java (.../UserSaveAction.java) (revision a99beebd296504aff314ec52850543f1823f650b) @@ -157,6 +157,7 @@ BeanUtils.copyProperties(user, userForm); user.setLocale(locale); user.setAuthenticationMethod(authenticationMethod); + UserSaveAction.service.save(user); } else { // create user user = new User(); userForm.set("password", HashUtil.sha1((String) userForm.get("password"))); Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -red0cc400ab00e2c188be1f4227532770fec5a6e7 -ra99beebd296504aff314ec52850543f1823f650b --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision ed0cc400ab00e2c188be1f4227532770fec5a6e7) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision a99beebd296504aff314ec52850543f1823f650b) @@ -24,6 +24,7 @@ package org.lamsfoundation.lams.usermanagement.service; import java.io.Serializable; +import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -36,6 +37,7 @@ import java.util.Set; import java.util.Vector; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.learningdesign.dao.IGroupDAO; @@ -149,17 +151,42 @@ try { if (object instanceof User) { User user = (User) object; - if (user.getUserId() == null) { - baseDAO.insertOrUpdate(user); // creating a workspace needs - // a userId - object = createWorkspaceForUser(user); - } + object = saveUser(user); } baseDAO.insertOrUpdate(object); } catch (Exception e) { log.debug(e); } } + + protected User saveUser(User user) { + if (user != null) { + // LDEV-2196 ensure names saved as UTF-8 + try { + user.setFirstName(new String(user.getFirstName().getBytes(), "UTF-8")); + user.setLastName(new String(user.getLastName().getBytes(), "UTF-8")); + } catch (UnsupportedEncodingException e) { + log.error("Unsupported encoding...", e); + } + // create user + if (user.getUserId() == null) { + baseDAO.insertOrUpdate(user); // creating a workspace needs a userId + user = createWorkspaceForUser(user); + } + // LDEV-2030 update workspace name if name changed + Workspace workspace = user.getWorkspace(); + if (workspace != null && !StringUtils.equals(user.getFullName(), workspace.getName())){ + workspace.setName(user.getFullName()); + save(workspace); + WorkspaceFolder folder = workspace.getDefaultFolder(); + if (folder != null) { + folder.setName(workspace.getName()); + save(folder); + } + } + } + return user; + } public void saveAll(Collection objects) { for (Object o : objects) {