Nao estou conseguindo resgatar o objeto selecionado para enviar para o bean do download
como a lista esta no arquivoBean nao sei como passar para o outro bean.
Bean do Download
@ManagedBean(name = "down")
@RequestScoped
public class DownloadBean {
private StreamedContent arquivoDown;
public DownloadBean()
{
InputStream stream = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream("/Aqui a propiedade caminho do objeto retornado com getRowData/");
arquivoDown = new DefaultStreamedContent(stream, "Application/.*", "/Aqui a propiedade arquivo do objeto retornado com getRowData/" );
}
public StreamedContent getArquivoDown() {
return arquivoDown;
}
public void setArquivoDown(StreamedContent arquivoDown) {
this.arquivoDown = arquivoDown;
}
}
Bean do Arquivo
@ManagedBean(name = "arquivo")
@SessionScoped
public class ArquivoBean {
private Arquivo arqDTO = new Arquivo();
private ArquivoDAO arqDAO;
private DataModel<Arquivo> arquivos;
private UploadedFile fileUP;
public UploadedFile getFileUP() {
return fileUP;
}
public void setFileUP(UploadedFile fileUP) {
this.fileUP = fileUP;
}
public Arquivo getArqDTO() {
return arqDTO;
}
public void setArqDTO(Arquivo arqDTO) {
this.arqDTO = arqDTO;
}
public DataModel<Arquivo> getArquivos() throws SQLException {
if (this.arquivos == null) {
pesqTodos();
return arquivos;
}
return arquivos;
}
public void setArquivos(DataModel<Arquivo> arquivos) throws SQLException {
if (arquivos != null) {
this.arquivos = arquivos;
}else{
pesqTodos();
}
}
public void seleciona()
{
arqDTO = arquivos.getRowData();
}
public void pesqTodos() throws SQLException
{
arqDAO = new ArquivoDAO();
List<Arquivo> lista = new ArrayList<Arquivo>();
lista = arqDAO.listarTodosArquivos();
arquivos = new ListDataModel<Arquivo>(lista);
setArquivos(arquivos);
}
public void deletar() throws SQLException, IOException
{
//deletar arquivo do banco
arqDAO = new ArquivoDAO();
arqDAO.deletar(arqDTO);
this.arquivos = null;
//deletar arquivo do servidor em disco
java.nio.file.Path paths = Paths.get(arqDTO.getCaminhoArq());
Files.deleteIfExists(paths.getFileName());
}
public void pesqNome() throws SQLException
{
arqDAO = new ArquivoDAO();
List<Arquivo> lista = new ArrayList<Arquivo>();
lista = arqDAO.listarArquivoNome(arqDTO);
arquivos = new ListDataModel<Arquivo>(lista);
setArquivos(arquivos);
}
public void pesqSetor() throws SQLException
{
arqDAO = new ArquivoDAO();
List<Arquivo> lista = new ArrayList<Arquivo>();
lista = arqDAO.listarArquivoSetor(arqDTO);
arquivos = new ListDataModel<Arquivo>(lista);
setArquivos(arquivos);
}
public void pesqCaixa() throws SQLException
{
arqDAO = new ArquivoDAO();
List<Arquivo> lista = new ArrayList<Arquivo>();
lista = arqDAO.listarArquivoCaixa(arqDTO);
arquivos = new ListDataModel<Arquivo>(lista);
setArquivos(arquivos);
}
public void pesqAssunto() throws SQLException
{
arqDAO = new ArquivoDAO();
List<Arquivo> lista = new ArrayList<Arquivo>();
lista = arqDAO.listarArquivoAssunto(arqDTO);
arquivos = new ListDataModel<Arquivo>(lista);
setArquivos(arquivos);
}
public void pesqData() throws SQLException
{
arqDAO = new ArquivoDAO();
List<Arquivo> lista = new ArrayList<Arquivo>();
lista = arqDAO.listarArquivoData(arqDTO);
arquivos = new ListDataModel<Arquivo>(lista);
setArquivos(arquivos);
}
public void enviarArquivo() // metodo chamado quando o arquivo acaba de carregar no serverSide
throws FileNotFoundException, IOException, SQLException {
try {
String diretorio = "I:/SGARQ-Arquivos/";
java.nio.file.Path path = Paths.get(diretorio + "/" + arqDTO.getSetor() + "/" + arqDTO.getAssunto() + "/" + arqDTO.getArquivo());
if (Files.notExists(path.toAbsolutePath())) {
Files.createDirectories(path.toAbsolutePath());
}
Path arqCaminho = Paths.get(fileUP.getFileName());
String caminho = diretorio + "/" + arqDTO.getSetor() + "/" + arqDTO.getAssunto() + "/" + arqDTO.getArquivo() + "/" + arqCaminho.getFileName();
arqDTO.setCaminhoArq(caminho);
arqDAO = new ArquivoDAO();
arqDAO.inserir(arqDTO);
FileOutputStream fos = new FileOutputStream(caminho);
byte[] conteudo = fileUP.getContents(); // daqui pra baixo é somente operações de IO.
fos.write(conteudo);
fos.close();
FacesMessage msg = new FacesMessage("Sucesso "+ fileUP.getFileName()+" foi salvo no servidor."); // mensagem pra saber se ouve sucesso
FacesContext.getCurrentInstance().addMessage(null, msg);
arqDTO = new Arquivo();
} catch (FileNotFoundException e) {
e.getMessage();
}catch (IOException e) {
e.getMessage();
}
}
public String dataFormatada()
{
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
if(arqDTO.getData() != null)
return sdf.format(arqDTO.getData());
return "";
}
}
download.xhtml
<h:form>
<p:dataTable value="#{arquivo.arquivos}" var="arq" id="dataTable">
<p:column>
<f:facet name="header">
Arquivo
</f:facet>
<h:outputText value="#{arq.arquivo}" />
</p:column>
<p:column>
<f:facet name="header">
Assunto
</f:facet>
<h:outputText value="#{arq.assunto}" />
</p:column>
<p:column>
<f:facet name="header">
Setor
</f:facet>
<h:outputText value="#{arq.setor}" />
</p:column>
<p:column>
<f:facet name="header">
Caixa
</f:facet>
<h:outputText value="#{arq.caixa}" />
</p:column>
<p:column>
<f:facet name="header">
Data
</f:facet>
<h:outputText value="#{arq.data}" />
</p:column>
<p:column>
<f:facet name="header">
Caminho Servidor
</f:facet>
<h:outputText value="#{arq.caminhoArq}" />
</p:column>
<p:column>
<f:facet name="header">
Download
</f:facet>
<p:commandButton id="downloadLink" actionListener="#{arquivo.seleciona}" value="Clique Aqui" ajax="false" onclick="PrimeFaces.monitorDownload(start,stop)" icon="ui-icon-arrowreturnthick-1-s">
<p:fileDownload value="#{down.arquivoDown}"></p:fileDownload>
</p:commandButton>
</p:column>
<p:column>
<f:facet name="header">
Deletar
</f:facet>
<p:commandButton value="Clique Aqui" action="#{arquivo.deletar}" actionListener="#{arquivo.seleciona}" update="dataTable" icon="ui-icon-closethick"></p:commandButton>
</p:column>
</p:dataTable>
<br/>
<br/>
<p:panelGrid columns="3">
<f:facet name="header">
Pesquisa por:
</f:facet>
<h:outputText value="Arquivo:" />
<p:inputText value="#{arquivo.arqDTO.arquivo}"></p:inputText>
<p:commandButton value="Pesquisar" action="#{arquivo.pesqNome}" update="dataTable"></p:commandButton>
<h:outputText value="Setor:" />
<p:inputText value="#{arquivo.arqDTO.setor}"></p:inputText>
<p:commandButton value="Pesquisar" action="#{arquivo.pesqSetor}" update="dataTable"></p:commandButton>
<h:outputText value="Assunto:" />
<p:inputText value="#{arquivo.arqDTO.assunto}"></p:inputText>
<p:commandButton value="Pesquisar" action="#{arquivo.pesqAssunto}" update="dataTable"></p:commandButton>
<h:outputText value="Caixa:" />
<p:inputText value="#{arquivo.arqDTO.caixa}"></p:inputText>
<p:commandButton value="Pesquisar" action="#{arquivo.pesqCaixa}" update="dataTable"></p:commandButton>
<h:outputText value="Data:" />
<p:calendar value="#{arquivo.arqDTO.data}" locale="pt" pattern="dd/MM/yyyy"></p:calendar>
<p:commandButton value="Pesquisar" action="#{arquivo.pesqData}" update="dataTable"></p:commandButton>
</p:panelGrid>
</h:form>
<p:dialog modal="true" widgetVar="statusDialog" header="Status" draggable="false" closable="false" resizable="false">
<p:graphicImage value="/design/ajaxloadingbar.gif"></p:graphicImage>
</p:dialog>