Index: lams_admin/src/java/org/lamsfoundation/lams/admin/service/IImportService.java =================================================================== diff -u -re2c0c928c2cf3c0527ec942ad9af0ec67a3aa8d7 -r80371e446858031dcb9d7fa4456a79e8ab71693c --- lams_admin/src/java/org/lamsfoundation/lams/admin/service/IImportService.java (.../IImportService.java) (revision e2c0c928c2cf3c0527ec942ad9af0ec67a3aa8d7) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/IImportService.java (.../IImportService.java) (revision 80371e446858031dcb9d7fa4456a79e8ab71693c) @@ -23,11 +23,10 @@ package org.lamsfoundation.lams.admin.service; +import java.io.File; import java.io.IOException; import java.util.List; -import org.springframework.web.multipart.MultipartFile; - /** *

* View Source @@ -49,65 +48,34 @@ /** * Returns true if spreadsheet contains user data. - * - * @param fileItem - * @return - * @throws IOException */ - public boolean isUserSpreadsheet(MultipartFile fileItem) throws IOException; + public boolean isUserSpreadsheet(File fileItem) throws IOException; /** * Returns true if spreadsheet contains userorgrole data. - * - * @param fileItem - * @return - * @throws IOException */ - public boolean isRolesSpreadsheet(MultipartFile fileItem) throws IOException; + public boolean isRolesSpreadsheet(File fileItem) throws IOException; /** * Checks first row of spreadsheet and determines whether to parse as * a user or orgrole spreadsheet. - * - * @param fileItem - * @throws IOException */ - public List parseSpreadsheet(MultipartFile fileItem, String sessionId) throws IOException; + public List parseSpreadsheet(File fileItem, String sessionId) throws IOException; - /** - * - * @param fileItem - * @return - * @throws IOException - */ - public List parseGroupSpreadsheet(MultipartFile fileItem, String sessionId) throws IOException; + public List parseGroupSpreadsheet(File fileItem, String sessionId) throws IOException; /** * Returns number of rows found in spreadsheet. - * - * @param fileItem - * @return - * @throws IOException */ - public int getNumRows(MultipartFile fileItem) throws IOException; + public int getNumRows(File fileItem) throws IOException; /** * Returns message results from parsing list of users in spreadsheet. - * - * @param file - * @param sessionId - * @return - * @throws IOException */ - public List parseUserSpreadsheet(MultipartFile file, String sessionId) throws IOException; + public List parseUserSpreadsheet(File file, String sessionId) throws IOException; /** * Returns message results from parsing list of organisation memberships. - * - * @param file - * @param sessionId - * @return - * @throws IOException */ - public List parseRolesSpreadsheet(MultipartFile file, String sessionId) throws IOException; + public List parseRolesSpreadsheet(File file, String sessionId) throws IOException; } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r80371e446858031dcb9d7fa4456a79e8ab71693c --- lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java (.../ImportService.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java (.../ImportService.java) (revision 80371e446858031dcb9d7fa4456a79e8ab71693c) @@ -22,6 +22,8 @@ package org.lamsfoundation.lams.admin.service; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Date; @@ -56,7 +58,6 @@ import org.lamsfoundation.lams.util.ValidationUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; -import org.springframework.web.multipart.MultipartFile; /** *

@@ -116,30 +117,30 @@ private boolean hasError; private Organisation parentOrg; - private HSSFSheet getSheet(MultipartFile fileItem) throws IOException { - POIFSFileSystem fs = new POIFSFileSystem(fileItem.getInputStream()); + private HSSFSheet getSheet(File fileItem) throws IOException { + POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fileItem)); HSSFWorkbook wb = new HSSFWorkbook(fs); return wb.getSheetAt(0); } @Override - public boolean isUserSpreadsheet(MultipartFile fileItem) throws IOException { + public boolean isUserSpreadsheet(File fileItem) throws IOException { HSSFSheet sheet = getSheet(fileItem); HSSFRow row = sheet.getRow(sheet.getFirstRowNum()); String string = parseStringCell(row.getCell(ImportService.PASSWORD)); return (StringUtils.equals(string, "* password")) ? true : false; } @Override - public boolean isRolesSpreadsheet(MultipartFile fileItem) throws IOException { + public boolean isRolesSpreadsheet(File fileItem) throws IOException { HSSFSheet sheet = getSheet(fileItem); HSSFRow row = sheet.getRow(sheet.getFirstRowNum()); String string = parseStringCell(row.getCell(ImportService.ORGANISATION)); return (StringUtils.equals(string, "* organisation")) ? true : false; } @Override - public List parseSpreadsheet(MultipartFile fileItem, String sessionId) throws IOException { + public List parseSpreadsheet(File fileItem, String sessionId) throws IOException { if (isUserSpreadsheet(fileItem)) { return parseUserSpreadsheet(fileItem, sessionId); } else if (isRolesSpreadsheet(fileItem)) { @@ -152,7 +153,7 @@ // each item in the list lists the id, name, and parent's id of that org; otherwise // the items in the list are error messages. @Override - public List parseGroupSpreadsheet(MultipartFile fileItem, String sessionId) throws IOException { + public List parseGroupSpreadsheet(File fileItem, String sessionId) throws IOException { results = new ArrayList<>(); parentOrg = service.getRootOrganisation(); HSSFSheet sheet = getSheet(fileItem); @@ -264,15 +265,15 @@ } @Override - public int getNumRows(MultipartFile fileItem) throws IOException { + public int getNumRows(File fileItem) throws IOException { HSSFSheet sheet = getSheet(fileItem); int startRow = sheet.getFirstRowNum(); int endRow = sheet.getLastRowNum(); return endRow - startRow; } @Override - public List parseUserSpreadsheet(MultipartFile fileItem, String sessionId) throws IOException { + public List parseUserSpreadsheet(File fileItem, String sessionId) throws IOException { results = new ArrayList<>(); HSSFSheet sheet = getSheet(fileItem); int startRow = sheet.getFirstRowNum(); @@ -343,7 +344,7 @@ } @Override - public List parseRolesSpreadsheet(MultipartFile fileItem, String sessionId) throws IOException { + public List parseRolesSpreadsheet(File fileItem, String sessionId) throws IOException { results = new ArrayList<>(); HSSFSheet sheet = getSheet(fileItem); int startRow = sheet.getFirstRowNum(); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportExcelController.java =================================================================== diff -u -r1ba327f73cb27c822d8a4ef36c386dd5a1432aef -r80371e446858031dcb9d7fa4456a79e8ab71693c --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportExcelController.java (.../ImportExcelController.java) (revision 1ba327f73cb27c822d8a4ef36c386dd5a1432aef) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportExcelController.java (.../ImportExcelController.java) (revision 80371e446858031dcb9d7fa4456a79e8ab71693c) @@ -25,20 +25,14 @@ import javax.servlet.http.HttpServletRequest; import org.lamsfoundation.lams.admin.web.form.ImportExcelForm; +import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.util.WebUtil; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; /** * @author jliew - * - * - * - * - * - * - * */ @Controller public class ImportExcelController { @@ -48,11 +42,9 @@ throws Exception { Integer orgId = WebUtil.readIntParam(request, "orgId", true); - //if (orgId==null) orgId = (Integer)request.getAttribute("orgId"); - importExcelForm.setOrgId(orgId); + importExcelForm.setTmpFileUploadId(FileUtil.generateTmpFileUploadId()); return "import/importexcel"; } - -} +} \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportExcelSaveController.java =================================================================== diff -u -rf365fa19269306b9c427171e6142554e951b552d -r80371e446858031dcb9d7fa4456a79e8ab71693c --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportExcelSaveController.java (.../ImportExcelSaveController.java) (revision f365fa19269306b9c427171e6142554e951b552d) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportExcelSaveController.java (.../ImportExcelSaveController.java) (revision 80371e446858031dcb9d7fa4456a79e8ab71693c) @@ -22,14 +22,16 @@ package org.lamsfoundation.lams.admin.web.controller; - +import java.io.File; +import java.io.IOException; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.lamsfoundation.lams.admin.service.IImportService; import org.lamsfoundation.lams.admin.web.form.ImportExcelForm; +import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -38,7 +40,6 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; -import org.springframework.web.multipart.MultipartFile; /** * @author jliew @@ -49,17 +50,26 @@ @Autowired private IImportService importService; - + @Autowired private WebApplicationContext applicationContext; @RequestMapping(path = "/importexcelsave", method = RequestMethod.POST) public String execute(@ModelAttribute ImportExcelForm importExcelForm, HttpServletRequest request) throws Exception { - MultipartFile file = importExcelForm.getFile(); + File file = null; + File uploadDir = FileUtil.getTmpFileUploadDir(importExcelForm.getTmpFileUploadId()); + if (uploadDir.canRead()) { + File[] files = uploadDir.listFiles(); + if (files.length > 1) { + throw new IOException("Uploaded more than 1 file"); + } else if (files.length == 1) { + file = files[0]; + } + } // validation - if (file == null || file.getSize() <= 0) { + if (file == null) { return "forward:/importexcel.do"; } @@ -90,8 +100,7 @@ .getRequiredWebApplicationContext(applicationContext.getServletContext()); IImportService importService = (IImportService) wac.getBean("importService"); try { - MultipartFile file = (MultipartFile) SessionManager.getSession(sessionId) - .getAttribute(IImportService.IMPORT_FILE); + File file = (File) SessionManager.getSession(sessionId).getAttribute(IImportService.IMPORT_FILE); List results = importService.parseSpreadsheet(file, sessionId); SessionManager.getSession(sessionId).setAttribute(IImportService.IMPORT_RESULTS, results); } catch (Exception e) { Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportGroupsController.java =================================================================== diff -u -rf2ad75cef0c507a64877942631fee13efbc6ed50 -r80371e446858031dcb9d7fa4456a79e8ab71693c --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportGroupsController.java (.../ImportGroupsController.java) (revision f2ad75cef0c507a64877942631fee13efbc6ed50) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportGroupsController.java (.../ImportGroupsController.java) (revision 80371e446858031dcb9d7fa4456a79e8ab71693c) @@ -22,18 +22,20 @@ package org.lamsfoundation.lams.admin.web.controller; +import java.io.File; +import java.io.IOException; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.lamsfoundation.lams.admin.service.IImportService; import org.lamsfoundation.lams.admin.web.form.ImportExcelForm; +import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.multipart.MultipartFile; /** * @author jliew @@ -48,17 +50,31 @@ public String execute(@ModelAttribute("importForm") ImportExcelForm importForm, HttpServletRequest request) throws Exception { importForm.setOrgId(0); - MultipartFile file = importForm.getFile(); + File file = null; + File uploadDir = FileUtil.getTmpFileUploadDir(importForm.getTmpFileUploadId()); + if (uploadDir.canRead()) { + File[] files = uploadDir.listFiles(); + if (files.length > 1) { + throw new IOException("Uploaded more than 1 file"); + } else if (files.length == 1) { + file = files[0]; + } + } + + importForm.setTmpFileUploadId(FileUtil.generateTmpFileUploadId()); + // validation - if (file == null || file.getSize() <= 0) { + if (file == null) { return "import/importGroups"; } String sessionId = SessionManager.getSession().getId(); List results = importService.parseGroupSpreadsheet(file, sessionId); request.setAttribute("results", results); + FileUtil.deleteTmpFileUploadDir(importForm.getTmpFileUploadId()); + return "import/importGroups"; } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportUserResultController.java =================================================================== diff -u -rf2ad75cef0c507a64877942631fee13efbc6ed50 -r80371e446858031dcb9d7fa4456a79e8ab71693c --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportUserResultController.java (.../ImportUserResultController.java) (revision f2ad75cef0c507a64877942631fee13efbc6ed50) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportUserResultController.java (.../ImportUserResultController.java) (revision 80371e446858031dcb9d7fa4456a79e8ab71693c) @@ -22,6 +22,7 @@ package org.lamsfoundation.lams.admin.web.controller; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -36,7 +37,6 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.multipart.MultipartFile; /** * @author jliew @@ -58,7 +58,7 @@ List results = (List) ss.getAttribute(IImportService.IMPORT_RESULTS); String successMessageKey = ""; try { - MultipartFile file = (MultipartFile) ss.getAttribute(IImportService.IMPORT_FILE); + File file = (File) ss.getAttribute(IImportService.IMPORT_FILE); successMessageKey = (importService.isUserSpreadsheet(file) ? "msg.users.created" : "msg.users.added"); } catch (Exception e) { log.error("Couldn't check spreadsheet type!", e); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ImportExcelForm.java =================================================================== diff -u -r550e1b37b507779064955267ef47e9085f791357 -r80371e446858031dcb9d7fa4456a79e8ab71693c --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ImportExcelForm.java (.../ImportExcelForm.java) (revision 550e1b37b507779064955267ef47e9085f791357) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ImportExcelForm.java (.../ImportExcelForm.java) (revision 80371e446858031dcb9d7fa4456a79e8ab71693c) @@ -22,17 +22,13 @@ package org.lamsfoundation.lams.admin.web.form; -import org.springframework.web.multipart.MultipartFile; - /** * @author jliew - * - * */ public class ImportExcelForm { private Integer orgId; - private MultipartFile file; + private String tmpFileUploadId; public Integer getOrgId() { return orgId; @@ -42,12 +38,11 @@ this.orgId = orgId; } - public MultipartFile getFile() { - return file; + public String getTmpFileUploadId() { + return tmpFileUploadId; } - public void setFile(MultipartFile file) { - this.file = file; + public void setTmpFileUploadId(String tmpFileUploadId) { + this.tmpFileUploadId = tmpFileUploadId; } - -} +} \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ImportGroupsForm.java =================================================================== diff -u -rc1cd3b5d3bc88f16ad489fbc19c7d21f5b748305 -r80371e446858031dcb9d7fa4456a79e8ab71693c --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ImportGroupsForm.java (.../ImportGroupsForm.java) (revision c1cd3b5d3bc88f16ad489fbc19c7d21f5b748305) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ImportGroupsForm.java (.../ImportGroupsForm.java) (revision 80371e446858031dcb9d7fa4456a79e8ab71693c) @@ -22,12 +22,10 @@ package org.lamsfoundation.lams.admin.web.form; -import org.springframework.web.multipart.MultipartFile; - public class ImportGroupsForm { private Integer orgId; - private MultipartFile file; + private String tmpFileUploadId; public Integer getOrgId() { return orgId; @@ -37,11 +35,12 @@ this.orgId = orgId; } - public MultipartFile getFile() { - return file; + public String getTmpFileUploadId() { + return tmpFileUploadId; } - public void setFile(MultipartFile file) { - this.file = file; + public void setTmpFileUploadId(String tmpFileUploadId) { + this.tmpFileUploadId = tmpFileUploadId; } + } Index: lams_admin/web/import/importGroups.jsp =================================================================== diff -u -r37bb2ae017713b44cdfd6a55cfceca28c3efab02 -r80371e446858031dcb9d7fa4456a79e8ab71693c --- lams_admin/web/import/importGroups.jsp (.../importGroups.jsp) (revision 37bb2ae017713b44cdfd6a55cfceca28c3efab02) +++ lams_admin/web/import/importGroups.jsp (.../importGroups.jsp) (revision 80371e446858031dcb9d7fa4456a79e8ab71693c) @@ -7,11 +7,9 @@ <%@ page import="org.lamsfoundation.lams.usermanagement.OrganisationType" %> <%@ page import="org.lamsfoundation.lams.util.Configuration"%> <%@ page import="org.lamsfoundation.lams.util.ConfigurationKeys"%> -<%@ page import="org.lamsfoundation.lams.util.FileValidatorUtil" %> <%=Configuration.get(ConfigurationKeys.UPLOAD_FILE_LARGE_MAX_SIZE)%> -<%=FileValidatorUtil.formatSize(Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_LARGE_MAX_SIZE))%> -<%=Configuration.get(ConfigurationKeys.EXE_EXTENSIONS)%> + <%= OrganisationType.CLASS_TYPE %> <%= OrganisationType.COURSE_TYPE %> @@ -21,33 +19,92 @@ ${title} + - + + + + + + + + + + + + + + @@ -114,13 +171,13 @@

- + + + +
- - - -
+
" />  
Index: lams_admin/web/import/importexcel.jsp =================================================================== diff -u -r37bb2ae017713b44cdfd6a55cfceca28c3efab02 -r80371e446858031dcb9d7fa4456a79e8ab71693c --- lams_admin/web/import/importexcel.jsp (.../importexcel.jsp) (revision 37bb2ae017713b44cdfd6a55cfceca28c3efab02) +++ lams_admin/web/import/importexcel.jsp (.../importexcel.jsp) (revision 80371e446858031dcb9d7fa4456a79e8ab71693c) @@ -4,7 +4,7 @@ <%@ page import="org.lamsfoundation.lams.admin.service.IImportService"%> <%@ page import="org.lamsfoundation.lams.util.Configuration"%> <%@ page import="org.lamsfoundation.lams.util.ConfigurationKeys"%> -<%@ page import="org.lamsfoundation.lams.util.FileValidatorUtil" %> +<%@ page import="org.lamsfoundation.lams.util.FileUtil" %> <%=Configuration.get(ConfigurationKeys.PASSWORD_POLICY_MINIMUM_CHARACTERS)%> <%=Configuration.get(ConfigurationKeys.PASSWORD_POLICY_UPPERCASE)%> @@ -13,8 +13,7 @@ <%=Configuration.get(ConfigurationKeys.PASSWORD_POLICY_SYMBOLS)%> <%=Configuration.get(ConfigurationKeys.UPLOAD_FILE_LARGE_MAX_SIZE)%> -<%=FileValidatorUtil.formatSize(Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_LARGE_MAX_SIZE))%> -<%=Configuration.get(ConfigurationKeys.EXE_EXTENSIONS)%> + @@ -25,31 +24,88 @@ + - + + + + + + + + + + + + + + + @@ -114,14 +170,13 @@

- + + - - +
-
+
" />