1 package com.indexdata.mkjsf.utils;
\r
3 import java.io.IOException;
\r
4 import java.io.Serializable;
\r
6 import javax.faces.context.ExternalContext;
\r
7 import javax.faces.context.FacesContext;
\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
13 import com.indexdata.mkjsf.pazpar2.HttpResponseWrapper;
\r
15 public abstract class FileUpload implements Serializable {
\r
17 protected UploadedFile uploadedFile;
\r
18 protected HttpResponseWrapper response;
\r
19 private static Logger logger = Logger.getLogger(FileUpload.class);
\r
20 private static final long serialVersionUID = 748784638056392862L;
\r
22 public FileUpload() {
\r
25 public abstract String submit() throws IOException;
\r
27 public UploadedFile getUploadedFile() {
\r
28 return uploadedFile;
\r
31 public void setUploadedFile(UploadedFile uploadedFile) {
\r
32 logger.info(Utils.objectId(this) + " received an uploaded file [" + Utils.objectId(uploadedFile) + "]");
\r
33 this.uploadedFile = uploadedFile;
\r
36 public void downloadDoc() throws IOException {
\r
37 logger.info(Utils.objectId(this) + " got a download request");
\r
38 FacesContext facesContext = FacesContext.getCurrentInstance();
\r
39 ExternalContext externalContext = facesContext.getExternalContext();
\r
40 externalContext.setResponseHeader("Content-Type", uploadedFile.getContentType());
\r
41 externalContext.setResponseHeader("Content-Length", String.valueOf((uploadedFile.getBytes().length)));
\r
42 externalContext.setResponseHeader("Content-Disposition", "attachment;filename=\"" + FilenameUtils.getBaseName(uploadedFile.getName()) + "\"");
\r
43 externalContext.getResponseOutputStream().write(uploadedFile.getBytes());
\r
44 facesContext.responseComplete();
\r
47 public void downloadResponse () throws IOException {
\r
48 logger.info(Utils.objectId(this) + " got a download request");
\r
49 FacesContext facesContext = FacesContext.getCurrentInstance();
\r
50 ExternalContext externalContext = facesContext.getExternalContext();
\r
51 externalContext.setResponseHeader("Content-Type", response.getContentType());
\r
52 externalContext.setResponseHeader("Content-Length", String.valueOf((response.getBytes().length)));
\r
53 externalContext.setResponseHeader("Content-Disposition", "attachment;filename=\"initresponse.xml\"");
\r
54 externalContext.getResponseOutputStream().write(response.getBytes());
\r
55 facesContext.responseComplete();
\r