/**
*
*/
package org.inbio.m3s.web.controller;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.inbio.m3s.dto.importcontrol.ImportControlDTOFull;
import org.inbio.m3s.service.ImportationManager;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
/**
* @author jgutierrez
*
*/
public class ImportationFileDispatcherController extends AbstractController {
private String contentTypeMetadata;// ="application/vnd.ms-excel"
private String fileIdMetadata;// ="id"
private String importationPath;// = ${importationFilesPath};
// managers
private ImportationManager importationManager;
/**
* Returns a importation file
*
* The servlet receives a list of parameters in HttpServletRequest method
* parameter, the way each parameter is used will be explain here:
*
* id : the importation file identifier that is stored in the field
* SystemFileName of the ImportControl object
*
* Example of use: http://m3s.inbio.ac.cr/getImportationFile?id=1234.xml
*/
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
// parameters
String systemFileName = request.getParameter(fileIdMetadata);
ImportControlDTOFull icDTO = importationManager
.getImportControlDTOFull(systemFileName);
// find the file and open it
File file = new File(importationPath + systemFileName);
// output...
BufferedInputStream input = new BufferedInputStream(new FileInputStream(
file));
int contentLength = input.available();
// output
ServletOutputStream out = response.getOutputStream(); // binary output
// has to be gotten from the fileMiMEType metadata value
response.setContentType(contentTypeMetadata);
response.setHeader("Content-Disposition", "attachment; filename="
+ icDTO.getUserFileName());
// Write file contents to response.
while (contentLength-- > 0) {
out.write(input.read());
}
out.flush();
out.close();
return null;
} catch (Exception e) {
System.out.println(e.getMessage());
return new ModelAndView("error404");
}
}
/**
* @return the contentTypeMetadata
*/
public String getContentTypeMetadata() {
return contentTypeMetadata;
}
/**
* @param contentTypeMetadata
* the contentTypeMetadata to set
*/
public void setContentTypeMetadata(String contentTypeMetadata) {
this.contentTypeMetadata = contentTypeMetadata;
}
/**
* @return the fileIdMetadata
*/
public String getFileIdMetadata() {
return fileIdMetadata;
}
/**
* @param fileIdMetadata
* the fileIdMetadata to set
*/
public void setFileIdMetadata(String fileIdMetadata) {
this.fileIdMetadata = fileIdMetadata;
}
/**
* @return the importationPath
*/
public String getImportationPath() {
return importationPath;
}
/**
* @param importationPath
* the importationPath to set
*/
public void setImportationPath(String importationPath) {
this.importationPath = importationPath;
}
/**
* @return the importationManager
*/
public ImportationManager getImportationManager() {
return importationManager;
}
/**
* @param importationManager
* the importationManager to set
*/
public void setImportationManager(ImportationManager importationManager) {
this.importationManager = importationManager;
}
}