Initial import for Diagrama.
[simdecs_seam.git] / SimDeCS / src / hot / org / ufcspa / simdecs / session / crud / admin / DownloadArquivoRede.java
1 package org.ufcspa.simdecs.session.crud.admin;
2
3 import javax.faces.context.ExternalContext;
4 import javax.faces.context.FacesContext;
5 import javax.persistence.EntityManager;
6 import javax.servlet.ServletOutputStream;
7 import javax.servlet.http.HttpServletResponse;
8
9 import org.jboss.seam.annotations.In;   
10 import org.jboss.seam.annotations.Logger;
11 import org.jboss.seam.annotations.Name;
12 import org.jboss.seam.annotations.web.RequestParameter;
13 import org.jboss.seam.log.Log;
14
15 import org.ufcspa.simdecs.entities.ArquivoRede;
16
17 @Name("downloadArquivoRede")
18 public class DownloadArquivoRede {
19         
20         @Logger
21         private Log log;
22         
23         @In
24         private EntityManager entityManager;
25         
26         @In(value="#{facesContext.externalContext}")
27         private ExternalContext extCtx;
28         
29         @In(value="#{facesContext}")
30         FacesContext facesContext;
31         
32         @RequestParameter
33         private Long arquivoRedeId;
34         
35         public String download() {
36                 ArquivoRede arquivoRede = entityManager.find(ArquivoRede.class, arquivoRedeId);
37                 HttpServletResponse response = (HttpServletResponse)extCtx.getResponse();
38                 response.setContentType(arquivoRede.getContentType());
39                 response.addHeader("Content-disposition", "attachment; filename=\"" + arquivoRede.getNome() +"\"");
40                 try {
41                         ServletOutputStream os = response.getOutputStream();
42                         os.write(arquivoRede.getData());
43                         os.flush();
44                         os.close();
45                         facesContext.responseComplete();
46                 } catch(Exception e) {
47                         log.error("\nFailure : " + e.toString() + "\n");
48                 }
49
50                 return null;
51         }
52 }