Merge branch 'master' of ssh://git.indexdata.com/home/git/private/mkjsf.git into...
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / utils / FileUpload.java
diff --git a/src/main/java/com/indexdata/mkjsf/utils/FileUpload.java b/src/main/java/com/indexdata/mkjsf/utils/FileUpload.java
new file mode 100644 (file)
index 0000000..ff8f0f1
--- /dev/null
@@ -0,0 +1,42 @@
+package com.indexdata.mkjsf.utils;\r
+\r
+import java.io.IOException;\r
+import java.io.Serializable;\r
+\r
+import javax.faces.context.ExternalContext;\r
+import javax.faces.context.FacesContext;\r
+\r
+import org.apache.commons.io.FilenameUtils;\r
+import org.apache.log4j.Logger;\r
+import org.apache.myfaces.custom.fileupload.UploadedFile;\r
+\r
+/**\r
+ * Helper class for file uploads.\r
+ * \r
+ * @author Niels Erik\r
+ *\r
+ */\r
+public abstract class FileUpload implements Serializable {\r
+\r
+  private static Logger logger = Logger.getLogger(FileUpload.class);\r
+  private static final long serialVersionUID = 748784638056392862L;\r
+\r
+  public FileUpload() {\r
+  }\r
+\r
+  public abstract UploadedFile getUploadedFile();\r
+  \r
+  public abstract void setUploadedFile(UploadedFile uploadedFile);\r
+  \r
+  public void downloadDoc() throws IOException {\r
+    logger.info(Utils.objectId(this) + " got a download request");\r
+    FacesContext facesContext = FacesContext.getCurrentInstance();\r
+    ExternalContext externalContext = facesContext.getExternalContext();\r
+    externalContext.setResponseHeader("Content-Type", getUploadedFile().getContentType());\r
+    externalContext.setResponseHeader("Content-Length", String.valueOf((getUploadedFile().getBytes().length)));\r
+    externalContext.setResponseHeader("Content-Disposition", "attachment;filename=\"" + FilenameUtils.getBaseName(getUploadedFile().getName()) + "\"");\r
+    externalContext.getResponseOutputStream().write(getUploadedFile().getBytes());\r
+    facesContext.responseComplete();\r
+  }\r
+\r
+}\r