Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== RCS file: /usr/local/cvsroot/lams_admin/conf/language/lams/ApplicationResources.properties,v diff -u -r1.28 -r1.29 --- lams_admin/conf/language/lams/ApplicationResources.properties 20 Dec 2007 04:34:56 -0000 1.28 +++ lams_admin/conf/language/lams/ApplicationResources.properties 9 Jan 2008 04:19:53 -0000 1.29 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_admin/conf/language/lams/ApplicationResources_en_AU.properties,v diff -u -r1.27 -r1.28 --- lams_admin/conf/language/lams/ApplicationResources_en_AU.properties 20 Dec 2007 04:34:56 -0000 1.27 +++ lams_admin/conf/language/lams/ApplicationResources_en_AU.properties 9 Jan 2008 04:19:53 -0000 1.28 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java,v diff -u -r1.10 -r1.11 --- lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java 8 Jan 2008 23:47:17 -0000 1.10 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java 9 Jan 2008 04:19:53 -0000 1.11 @@ -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); + } + } }