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" %>