Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r4c0e5e2e69e051b5a48e57104de0d5504db29f3d -r818789ecaa116af830c725ee4a3b0b1d9f9b495c --- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 4c0e5e2e69e051b5a48e57104de0d5504db29f3d) +++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 818789ecaa116af830c725ee4a3b0b1d9f9b495c) @@ -349,6 +349,11 @@ msg.click.add.user =Click a user to add them. msg.show.all.potential.users =Show all potential users. label.next =Next +audit.user.create = Created user {0}, named {1} +audit.spreadsheet.error = Error processing spreadsheet row {0}: {1} +audit.successful.user.import = Successfully imported {0} users. +audit.successful.role.import = Successfully imported {0} role memberships. +audit.successful.organisation.import = Successfully imported {0} organisations. #======= End labels: Exported 342 labels for en AU ===== Index: lams_admin/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r4c0e5e2e69e051b5a48e57104de0d5504db29f3d -r818789ecaa116af830c725ee4a3b0b1d9f9b495c --- lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 4c0e5e2e69e051b5a48e57104de0d5504db29f3d) +++ lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 818789ecaa116af830c725ee4a3b0b1d9f9b495c) @@ -349,6 +349,11 @@ msg.click.add.user =Click a user to add them. msg.show.all.potential.users =Show all potential users. label.next =Next +audit.user.create = Created user {0}, named {1} +audit.spreadsheet.error = Error processing spreadsheet row {0}: {1} +audit.successful.user.import = Successfully imported {0} users. +audit.successful.role.import = Successfully imported {0} role memberships. +audit.successful.organisation.import = Successfully imported {0} organisations. #======= End labels: Exported 342 labels for en AU ===== Index: lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java =================================================================== diff -u -r956c2a614982ccac97418cf3a8287c70b0acac6b -r818789ecaa116af830c725ee4a3b0b1d9f9b495c --- lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java (.../ImportService.java) (revision 956c2a614982ccac97418cf3a8287c70b0acac6b) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java (.../ImportService.java) (revision 818789ecaa116af830c725ee4a3b0b1d9f9b495c) @@ -189,8 +189,8 @@ HSSFRow row; Organisation org = null; + int successful = 0; for (int i = startRow + 1; i < endRow + 1; i++) { - log.debug("starting row: "+i); emptyRow = true; hasError = false; rowResult = new ArrayList(); @@ -211,6 +211,7 @@ continue; } else { org = service.saveOrganisation(org, getCurrentUserId()); + successful++; rowResult.add(org.getOrganisationId().toString()); rowResult.add(org.getName()); rowResult.add(org.getParentOrganisation().getOrganisationId().toString()); @@ -224,6 +225,7 @@ } } log.debug("Found "+results.size()+" orgs in spreadsheet."); + writeSuccessAuditLog(successful, null, "audit.successful.organisation.import"); return results; } @@ -426,6 +428,7 @@ HSSFRow row; User user = null; + int successful = 0; for (int i = startRow + 1; i < endRow + 1; i++) { emptyRow = true; hasError = false; @@ -440,25 +443,29 @@ if (hasError) { log.debug("Row "+i+" has an error which has been sent to the browser."); results.add(rowResult); + writeErrorsAuditLog(i+1, rowResult, userDTO); updateImportStatus(sessionId, results.size()); continue; } else { try { service.save(user); + successful++; writeAuditLog(user, userDTO); log.debug("Row "+i+" saved user: "+user.getLogin()); } catch (Exception e) { log.debug(e); rowResult.add(messageService.getMessage("error.fail.add")); } - if (rowResult.size() > 0 && log.isDebugEnabled()) { - log.debug("Row "+i+" has "+rowResult.size() + " messages."); + if (rowResult.size() > 0) { + if (log.isDebugEnabled()) log.debug("Row "+i+" has "+rowResult.size() + " messages."); + writeErrorsAuditLog(i+1, rowResult, userDTO); } results.add(rowResult); updateImportStatus(sessionId, results.size()); } } log.debug("Found "+results.size()+" users in spreadsheet."); + writeSuccessAuditLog(successful, userDTO, "audit.successful.user.import"); return results; } @@ -485,9 +492,11 @@ log.debug("Parsing spreadsheet rows "+startRow+" through "+endRow); setupImportStatus(sessionId, endRow-startRow); + UserDTO userDTO = (UserDTO)SessionManager.getSession(sessionId).getAttribute(AttributeNames.USER); HSSFRow row; List roles; + int successful = 0; for (int i = startRow + 1; i < endRow + 1; i++) { emptyRow = true; hasError = false; @@ -505,23 +514,27 @@ if (hasError) { log.debug("Row "+i+" has an error which has been sent to the browser."); results.add(rowResult); + writeErrorsAuditLog(i+1, rowResult, userDTO); updateImportStatus(sessionId, results.size()); continue; } else { try { saveUserRoles(isSysadmin(sessionId), login, orgId, roles, row); + successful++; } catch (Exception e) { log.error("Unable to assign roles to user: "+login, e); rowResult.add(messageService.getMessage("error.fail.add")); } - if (rowResult.size() > 0 && log.isDebugEnabled()) { - log.debug("Row "+i+" has "+rowResult.size() + " messages."); + if (rowResult.size() > 0) { + if (log.isDebugEnabled()) log.debug("Row "+i+" has "+rowResult.size() + " messages."); + writeErrorsAuditLog(i+1, rowResult, userDTO); } results.add(rowResult); updateImportStatus(sessionId, results.size()); } } log.debug("Found "+results.size()+" users in spreadsheet."); + writeSuccessAuditLog(successful, userDTO, "audit.successful.role.import"); return results; } @@ -900,4 +913,26 @@ String message = messageService.getMessage("audit.organisation.create", args); auditService.log(AdminConstants.MODULE_NAME, message); } + + private void writeErrorsAuditLog(int row, List list, UserDTO userDTO) { + for (String s : list) { + writeErrorAuditLog(row, s, userDTO); + } + } + + private void writeErrorAuditLog(int row, String error, UserDTO userDTO) { + String[] args = { Integer.toString(row), error }; + String message = messageService.getMessage("audit.spreadsheet.error", args); + auditService.log(userDTO, AdminConstants.MODULE_NAME, message); + } + + private void writeSuccessAuditLog(int successful, UserDTO userDTO, String key) { + String[] args = { Integer.toString(successful) }; + String message = messageService.getMessage(key, args); + if (userDTO == null) { + auditService.log(AdminConstants.MODULE_NAME, message); + } else { + auditService.log(userDTO, AdminConstants.MODULE_NAME, message); + } + } }