b9744373e5303d3785f91691be10ce94bbd0d37b
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / utils / FileUpload.java
1 package com.indexdata.mkjsf.utils;\r
2 \r
3 import java.io.IOException;\r
4 import java.io.Serializable;\r
5 \r
6 import javax.faces.context.ExternalContext;\r
7 import javax.faces.context.FacesContext;\r
8 \r
9 import org.apache.commons.io.FilenameUtils;\r
10 import org.apache.log4j.Logger;\r
11 import org.apache.myfaces.custom.fileupload.UploadedFile;\r
12 \r
13 import com.indexdata.mkjsf.pazpar2.HttpResponseWrapper;\r
14 \r
15 public abstract class FileUpload implements Serializable {\r
16 \r
17 \r
18   protected HttpResponseWrapper response;\r
19   private static Logger logger = Logger.getLogger(FileUpload.class);\r
20   private static final long serialVersionUID = 748784638056392862L;\r
21 \r
22   public FileUpload() {\r
23   }\r
24 \r
25   public abstract HttpResponseWrapper submit() throws IOException;\r
26   \r
27   public abstract UploadedFile getUploadedFile();\r
28   \r
29   public abstract void setUploadedFile(UploadedFile uploadedFile);\r
30   \r
31   public void downloadDoc() throws IOException {\r
32     logger.info(Utils.objectId(this) + " got a download request");\r
33     FacesContext facesContext = FacesContext.getCurrentInstance();\r
34     ExternalContext externalContext = facesContext.getExternalContext();\r
35     externalContext.setResponseHeader("Content-Type", getUploadedFile().getContentType());\r
36     externalContext.setResponseHeader("Content-Length", String.valueOf((getUploadedFile().getBytes().length)));\r
37     externalContext.setResponseHeader("Content-Disposition", "attachment;filename=\"" + FilenameUtils.getBaseName(getUploadedFile().getName()) + "\"");\r
38     externalContext.getResponseOutputStream().write(getUploadedFile().getBytes());\r
39     facesContext.responseComplete();\r
40   }\r
41 \r
42 }\r