[quote=renatogalina]Bom dia pessoal, sou iniciante e tenho um problema aqui na empresa com um sistema de mensagens(não é email).
o combo do listOneMenu ele traz as pastas que criei, até ai ok.
Se acessar uma pasta para ler as mensagem e clicar em voltar, tudo bem ele guarda a pasta que eu estava.
O problema é que se eu abrir uma mensagem e muda-la de pasta, ao clicar o combo guarda a pasta que eu movi a mensagem e não a pasta que eu estou ao clicar em voltar. O dataTable fica correto mas o combo não. Exemplo de fluxo, Estou na pasta entrada, leio um mensagem, clico em voltar, dataTable e combo estão na pasta entrada.
estou na pasta entrada, clico numa mensagem, mudo esta para pasta arquivo, clico em voltar, o dataTable esta listando o conteudo da pasta entrada más o combo esta a pasta arquivo( ou seja ele guarda a pasta que eu mudei a mensagem e não a pasta atual onde estou)
Por favor poderia me ajudar com este problema
Segue os códigos
mensagem.jsp
[code]
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%><%@taglib
uri=“http://richfaces.org/rich” prefix=“rich”%><%@taglib
uri=“http://richfaces.org/a4j” prefix=“a4j”%>
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1” pageEncoding=“ISO-8859-1”%>
<%@ taglib prefix=“f” uri=“http://java.sun.com/jsf/core”%>
<%@ taglib prefix=“h” uri=“http://java.sun.com/jsf/html”%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=ISO-8859-1”>
<title>Marrichi - Consultoria, Motivação, Palestras</title>
<link href=“css/global.css” rel=“stylesheet” type=“text/css” />
<link href=“css/forms.css” rel=“stylesheet” type=“text/css” />
<link href=“css/links.css” rel=“stylesheet” type=“text/css” />
<link href=“css/mensagens.css” rel=“stylesheet” type=“text/css” />
<link href=“css/buscaPastas.css” rel=“stylesheet” type=“text/css” />
<script src=“Scripts/AC_RunActiveContent.js” type=“text/javascript”></script>
</head>
<body>
<f:view>
<div id=“global”>
<div id=“header”><%@include file=“header.jsp”%>
</div>
<div id=“content”>
<div id=“titulos”></div>
<div id=“conteudoInterno”>
<div id=“buscaPasta”>
<div id="busca">
<h:form>
<h:commandLink action="#{mb.mensagemBean.novaMensagem}" >
<h:graphicImage value="img/site/btNovaMensagem.jpg" style="border:0" />
<f:setPropertyActionListener value="#{null}" target="#{mb.mensagemBean.mensagem}"/>
</h:commandLink>
</h:form>
</div>
<div id="pastas">
<h:form>
<h:panelGroup id="pastas" >
<h:selectOneMenu value="#{mb.usuarioMensagemBean.pastaId}" id="combo">
<f:selectItem itemValue="-2" itemLabel="Caixa de Entrada" />
<f:selectItem itemValue="-1" itemLabel="Caixa de Saída" />
<f:selectItem itemValue="0" itemLabel="Todas Mensagens" />
<f:selectItems value="#{mb.pastaMensagemBean.pastasItens}" />
<a4j:support event="onchange" action="#{mb.usuarioMensagemBean.filtrarPorPasta}" reRender="messagesTable" />
</h:selectOneMenu>
<a4j:commandButton value="Criar Pasta" >
<f:setPropertyActionListener target="#{mb.pastaMensagemBean.pasta}" value="#{null}"></f:setPropertyActionListener>
<rich:componentControl event="oncomplete" for="pastaPanel" operation="show" />
</a4j:commandButton>
<a4j:commandButton value="Excluir Pasta" >
<rich:componentControl event="oncomplete" for="pastaDeletePanel" operation="show" />
</a4j:commandButton>
</h:panelGroup>
</h:form>
</div>
</div>
<div id="buscas">
<rich:panel style="width: 845px;">
<f:facet name="header"><h:outputText value="Buscas"/></f:facet>
<h:form>
<h:panelGrid columns="7" styleClass="bordasimples">
<rich:column width="200"><h:outputText value="Buscar por Título " /></rich:column>
<rich:column width="100"><h:inputText value="#{mb.usuarioMensagemBean.filtro}"></h:inputText></rich:column>
<rich:column width="40"><h:commandButton value="Filtrar" action="#{mb.usuarioMensagemBean.buscarAssunto}"/></rich:column>
<rich:column width="50" />
<rich:column width="200"><h:outputText value="Buscar por Conteúdo" /></rich:column>
<rich:column width="100"><h:inputText value="#{mb.usuarioMensagemBean.filtro}"></h:inputText></rich:column>
<rich:column width="40"><h:commandButton value="Filtrar" action="#{mb.usuarioMensagemBean.buscarMensagem}"/></rich:column>
</h:panelGrid>
</h:form>
</rich:panel>
</div>
<div id="conteudoMensagens">
<h:form>
<rich:dataTable id="messagesTable" value="#{mb.usuarioMensagemBean.paginator}" var="um" rows="10" width="850" >
<f:facet name="header">
<h:outputText value="Mensagens: #{mb.usuarioMensagemBean.filtroPasta}" ></h:outputText>
</f:facet>
<rich:column>
<h:selectBooleanCheckbox value="#{um.selected}" />
<h:outputText value="#{um.mensagem.dataCadastro}" styleClass="dataMensagens" >
<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss" />
</h:outputText><br />
<h:commandLink action="#{mb.usuarioMensagemBean.lerAdmin}" >
<h:outputText value="#{um.mensagem.usuario.nomeResponsavel} - " ></h:outputText>
<h:outputText value="#{um.mensagem.usuario.nome} - " ></h:outputText>
<h:outputText value="#{um.mensagem.assunto}" ></h:outputText>
<f:setPropertyActionListener value="#{um}" target="#{mb.usuarioMensagemBean.usuarioMensagem}"/>
</h:commandLink>
</rich:column>
<rich:column dir="RTL" width="35" >
<h:panelGroup rendered="#{um.remetente}" >
<h:commandLink id="verLink" action="#{mb.usuarioMensagemBean.verQuemLeu}" >
<f:setPropertyActionListener value="#{um}" target="#{mb.usuarioMensagemBean.usuarioMensagem}"/>
<h:graphicImage alt="Lidas" url="img/site/checar.png" ></h:graphicImage>
</h:commandLink>
<rich:toolTip for="verLink" value="Checar quais usuários já leram a mensagem" ></rich:toolTip>
</h:panelGroup>
</rich:column>
<rich:column dir="RTL" width="35" >
<h:panelGroup rendered="#{um.remetente}" >
<h:commandLink id="verLinkNao" action="#{mb.usuarioMensagemBean.verQuemNaoLeu}" >
<f:setPropertyActionListener value="#{um}" target="#{mb.usuarioMensagemBean.usuarioMensagem}"/>
<h:graphicImage alt="Não Lidas" url="img/site/checarNao.png" ></h:graphicImage>
</h:commandLink>
<rich:toolTip for="verLinkNao" value="Checar quais usuários ainda não leram a mensagem" ></rich:toolTip>
</h:panelGroup>
</rich:column>
<rich:column dir="RTL" width="20" >
<h:panelGroup >
<a4j:commandLink id="deletelink" oncomplete="#{rich:component('deletePanel')}.show()">
<h:graphicImage alt="Deletar" url="../pages/img/geral/delete.gif" ></h:graphicImage>
<f:setPropertyActionListener value="#{um}" target="#{mb.usuarioMensagemBean.usuarioMensagem}"/>
</a4j:commandLink>
<rich:toolTip for="deleteLink" value="Excluir" ajaxSingle="true" ></rich:toolTip>
</h:panelGroup>
</rich:column>
<f:facet name="footer">
<rich:datascroller for="messagesTable" maxPages="10" page="#{mb.usuarioMensagemBean.pageNumber}" actionListener="#{mb.usuarioMensagemBean.event}" >
</rich:datascroller>
</f:facet>
</rich:dataTable>
<h:commandButton action="#{mb.usuarioMensagemBean.deleteMany}" value="Excluir Selecionadas" />
</h:form>
<rich:modalPanel id="pastaPanel" autosized="true" width="200">
<f:facet name="header">
<h:outputText value="Nova Pasta"
style="padding-right:15px;" />
</f:facet>
<f:facet name="controls">
<h:panelGroup>
<h:graphicImage value="../pages/img/geral/close.png"
styleClass="hidelink" id="hidelink3" />
<rich:componentControl for="pastaPanel" attachTo="hidelink3"
operation="hide" event="onclick" />
</h:panelGroup>
</f:facet>
<h:form>
<a4j:outputPanel ajaxRendered="true" >
<h:outputText value="Nome: " />
<h:inputText immediate="true" id="pastaNome" value="#{mb.pastaMensagemBean.pasta.nome}" required="true" />
<h:message for="pastaNome" />
<br />
</a4j:outputPanel>
<a4j:commandButton value="Salvar" action="#{mb.pastaMensagemBean.storePasta}" reRender="pastas" oncomplete="if (#{facesContext.maximumSeverity==null}) #{rich:component('pastaPanel')}.hide();">
</a4j:commandButton>
</h:form>
</rich:modalPanel>
<rich:modalPanel id="pastaDeletePanel" height="400" width="300">
<f:facet name="header">
<h:outputText value="Nova Pasta"
style="padding-right:15px;" />
</f:facet>
<f:facet name="controls">
<h:panelGroup>
<h:graphicImage value="../pages/img/geral/close.png"
styleClass="hidelink" id="hidelink4" />
<rich:componentControl for="pastaDeletePanel" attachTo="hidelink4"
operation="hide" event="onclick" />
</h:panelGroup>
</f:facet>
<h:form>
<a4j:outputPanel ajaxRendered="true" >
<rich:messages globalOnly="true" ></rich:messages>
<rich:scrollableDataTable value="#{mb.pastaMensagemBean.pastas}" var="pasta" id="pastaList" height="300px" width="250px" >
<rich:column width="180px" >
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{pasta.nome}" />
</rich:column>
<rich:column width="50px" >
<f:facet name="header">
<h:outputText value="Excluir" />
</f:facet>
<a4j:commandButton image="/pages/img/geral/delete.gif" action="#{mb.pastaMensagemBean.delete}" reRender="pastaList,pastas" >
<f:setPropertyActionListener value="#{pasta}" target="#{mb.pastaMensagemBean.pasta}"></f:setPropertyActionListener>
</a4j:commandButton>
</rich:column>
</rich:scrollableDataTable>
</a4j:outputPanel>
</h:form>
</rich:modalPanel>
<!-- Início modalPanel para delete de produto -->
<rich:modalPanel id="deletePanel" autosized="true" width="200">
<f:facet name="header">
<h:outputText value="Deletar a mensagem?"
style="padding-right:15px;" />
</f:facet>
<f:facet name="controls">
<h:panelGroup>
<h:graphicImage value="../pages/img/geral/close.png"
styleClass="hidelink" id="hidelink2" />
<rich:componentControl for="deletePanel" attachTo="hidelink2"
operation="hide" event="onclick" />
</h:panelGroup>
</f:facet>
<h:form>
<table width="100%">
<tbody>
<tr>
<td align="center" width="50%"><a4j:commandButton
value="Sim" ajaxSingle="true"
action="#{mb.usuarioMensagemBean.deletar}"
oncomplete="#{rich:component('deletePanel')}.hide();"
reRender="messagesTable" /></td>
<td align="center" width="50%"><a4j:commandButton
value="Cancelar"
onclick="#{rich:component('deletePanel')}.hide();return false;" />
</td>
</tr>
</tbody>
</table>
</h:form>
</rich:modalPanel>
<!-- Fim modalPanel para delete de produto -->
</div>
</div>
</div>
</div>
<div id=“footer”><div id=“logoTi”></div></div>
</f:view>
</body>
</html>[/code]
mensagens-read.jsp
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@taglib
uri="http://richfaces.org/rich" prefix="rich"%><%@taglib
uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Marrichi - Consultoria, Motivação, Palestras</title>
<link href="css/global.css" rel="stylesheet" type="text/css" />
<link href="css/forms.css" rel="stylesheet" type="text/css" />
<link href="css/links.css" rel="stylesheet" type="text/css" />
<link href="css/mensagens.css" rel="stylesheet" type="text/css" />
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<script type="text/javascript" src="editor/js/editor/tiny_mce.js"></script>
<script type="text/javascript" src="editor/js/editor-config.js"></script>
</head>
<body>
<f:view>
<div id="global">
<div id="header"><%@include file="header.jsp"%>
</div>
<div id="content">
<div id="titulos"><img /></div>
<div id="conteudoInterno">
<div id="conteudoMensagens">
<h:outputText value="#{mb.usuarioMensagemBean.message} " id="msg" ></h:outputText>
<div id="botaoVoltar">
<h:outputLink value="mensagens.jsf" >
<h:graphicImage value="img/site/btVoltar.jpg" style="border:0" />
</h:outputLink>
</div>
<h:form>
<h:panelGroup >
<h:outputText value="Pasta: " ></h:outputText>
<h:selectOneMenu immediate="true" id="switchFolder" value="#{mb.usuarioMensagemBean.pastaId}">
<f:selectItem itemValue="" itemLabel="" />
<f:selectItems value="#{mb.pastaMensagemBean.pastasItens}" ></f:selectItems>
<a4j:support event="onchange" action="#{mb.usuarioMensagemBean.switchPasta}" reRender="msg" />
</h:selectOneMenu>
<rich:message for="switchFolder" ></rich:message>
</h:panelGroup>
</h:form>
<h:form>
<rich:messages></rich:messages>
<rich:panel >
<h:commandLink action="#{mb.usuarioMensagemBean.verOriginal}" value="Ver mensagem original" rendered="#{mb.usuarioMensagemBean.usuarioMensagem.mensagem.resposta}" />
<h:panelGrid columns="2" >
<h:outputText value="De:" ></h:outputText>
<h:outputText value="#{mb.usuarioMensagemBean.mensagem.usuario.nomeResponsavel}" ></h:outputText>
<h:outputText value="Assunto:" ></h:outputText>
<h:outputText value="#{mb.usuarioMensagemBean.mensagem.assunto}" ></h:outputText>
<h:outputText rendered="#{mb.usuarioMensagemBean.mensagem.temAnexo}" value="Anexo:" ></h:outputText>
<h:outputLink rendered="#{mb.usuarioMensagemBean.mensagem.temAnexo}" value="../anexos/#{mb.usuarioMensagemBean.mensagem.urlAnexo}" target="_blank" >Baixar Anexo</h:outputLink>
<h:outputText value="Data:" ></h:outputText>
<h:outputText value="#{mb.usuarioMensagemBean.mensagem.dataCadastro}" >
<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss" />
</h:outputText>
</h:panelGrid>
<h:outputText escape="false" value="#{mb.usuarioMensagemBean.mensagem.mensagem}" ></h:outputText>
<br />
<h:commandButton value="Replicar a todos" action="#{mb.usuarioMensagemBean.replyToAll}" ></h:commandButton> <br />
<h:commandButton value="Enviar como mensagem" action="#{mb.usuarioMensagemBean.toMessage}" >
<f:setPropertyActionListener value="#{mb.usuarioMensagemBean.mensagem}" target="#{mb.mensagemBean.mensagem}"/>
</h:commandButton>
</rich:panel>
respostas:
<h:dataTable value="#{mb.usuarioMensagemBean.respostas}" var="resposta" >
<h:column>
<rich:panel >
<h:panelGrid columns="2" >
<h:outputText value="De: " ></h:outputText>
<h:outputText value="#{resposta.mensagem.usuario.nomeResponsavel}" />
<h:outputText rendered="#{resposta.mensagem.temAnexo}" value="Anexo:" ></h:outputText>
<h:outputLink rendered="#{resposta.mensagem.temAnexo}" value="../anexos/#{resposta.mensagem.urlAnexo}" target="_blank" >Baixar Anexo</h:outputLink>
<h:outputText value="Data: " ></h:outputText>
<h:outputText value="#{resposta.mensagem.dataCadastro}" >
<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss" />
</h:outputText>
</h:panelGrid>
<h:outputText escape="false" value="#{resposta.mensagem.mensagem}" ></h:outputText>
<br />
<h:commandButton value="Replicar" action="#{mb.usuarioMensagemBean.reply}" >
<f:setPropertyActionListener value="#{resposta.mensagem}" target="#{mb.usuarioMensagemBean.respostaResponder}" />
</h:commandButton>
<h:commandButton value="Enviar como mensagem" action="#{mb.usuarioMensagemBean.toMessage}" >
<f:setPropertyActionListener value="#{resposta.mensagem}" target="#{mb.mensagemBean.mensagem}"/>
</h:commandButton>
</rich:panel>
</h:column>
</h:dataTable>
</h:form>
</div>
</div>
</div>
</div>
<div id="footer"><div id="logoTi"><img /></div></div>
</f:view>
</body>
</html>
UsuarioMensagemBean.java
package com.tischeme.marrichi.bean;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.event.ActionEvent;
import org.richfaces.event.DataScrollerEvent;
import org.richfaces.event.UploadEvent;
import org.richfaces.model.UploadItem;
import com.tischeme.marrichi.bean.main.ManagedBean;
import com.tischeme.marrichi.bean.to.Diretorio;
import com.tischeme.marrichi.controller.FileTransfer;
import com.tischeme.marrichi.controller.MensagemController;
import com.tischeme.marrichi.controller.PastaController;
import com.tischeme.marrichi.controller.UsuarioMensagemController;
import com.tischeme.marrichi.exception.DatabaseException;
import com.tischeme.marrichi.exception.NoResultFoundException;
import com.tischeme.marrichi.paginators.UsuarioMensagemPaginator;
import com.tischeme.marrichi.persistence.dao.PastaDAO;
import com.tischeme.marrichi.persistence.to.Mensagem;
import com.tischeme.marrichi.persistence.to.Pasta;
import com.tischeme.marrichi.persistence.to.UsuarioMensagem;
import com.tischeme.marrichi.persistence.util.MessageHandler;
public class UsuarioMensagemBean {
private List<String> gruposSelecionados = new ArrayList<String>();
private String usuarios = "";
private MensagemController controller;
private UsuarioMensagemController usuarioMensagemController;
private String message;
private List<UsuarioMensagem> naoLeitores;
private List<UsuarioMensagem> leitores;
private Mensagem mensagem;
private UsuarioMensagem usuarioMensagem;
private List<UsuarioMensagem> respostas;
private Mensagem resposta2;
private Mensagem respostaResponder;
private boolean resposta = false;
private boolean toAll = false;
private String filtro;
private Pasta pasta;
private int pastaId = -2;
private String filtroPasta;
private UsuarioMensagemPaginator paginator;
private boolean anexado = false;
private int pageNumber = 1;
public String loadMessageAdmin() throws DatabaseException{
pastaId = -2;
filtrarPorPasta();
return "loadMessageAdmin";
}
public String loadMessage() throws DatabaseException{
pastaId = -2;
filtrarPorPasta();
return "loadMessage";
}
/**
* Exclui várias mensagens que estão selecionadas
* @return null
* @throws DatabaseException caso ocorra alguma anormalidade na execução
*/
public String deleteMany() throws DatabaseException{
for (UsuarioMensagem um : getPaginator().getUsuarioMensagens()) {
if(um.isSelected()){
getUsuarioMensagemController().delete(um);
}
}
return null;
}
/**
* Busca mensagem por assunto
* @return
* @throws DatabaseException
*/
public String buscarAssunto() throws DatabaseException{
getUsuarioMensagemController().findByAssunto(ManagedBean.getLoggedUser(), filtro);
return "";
}
public String buscarMensagem() throws DatabaseException{
getUsuarioMensagemController().findByMensagem(ManagedBean.getLoggedUser(), filtro);
return "";
}
/**
* Filtra mensagens por pasta
* @return
* @throws DatabaseException
*/
public String filtrarPorPasta() throws DatabaseException{
pageNumber = 1;
if(pastaId > 0){
pasta = new PastaController(Mensagem.MENSAGEM).findById(pastaId);
filtroPasta = pasta.getNome();
getUsuarioMensagemController().findByPasta(ManagedBean.getLoggedUser(), pasta);
}else{
if(pastaId == 0){
buscarTodas();
}else if(pastaId == -1){
filtrarEnviadas();
}else if(pastaId == -2){
filtrarRecebidas();
}
}
return null;
}
/**
* Filtra apenas as mensagens recebidas
* @return
* @throws DatabaseException
*/
public String filtrarRecebidas() throws DatabaseException{
this.pasta = new Pasta();
this.pastaId = -2;
filtroPasta = "Recebidas";
getUsuarioMensagemController().findRecebidas(ManagedBean.getLoggedUser());
return null;
}
private String buscarTodas() throws DatabaseException{
this.pasta = new Pasta();
this.pastaId = 0;
filtroPasta = "Todas";
getUsuarioMensagemController().findByUser(ManagedBean.getLoggedUser());
return null;
}
/**
* Filtra apenas as mensagens enviadas
* @return
* @throws DatabaseException
*/
public String filtrarEnviadas() throws DatabaseException{
this.pasta = new Pasta();
this.pastaId = -1;
filtroPasta = "Enviadas";
getUsuarioMensagemController().findEnviadas(ManagedBean.getLoggedUser());
return null;
}
/**
* Envia uma resposta a uma mensagem, neste caso como administrador
* @return
*/
public String enviarRespostaAdmin() {
if(ManagedBean.getLoggedUser() != null && getMensagem() != null){
resposta2.setDataCadastro(new Date());
resposta2.setUsuario(ManagedBean.getLoggedUser());
if(toAll){
resposta2.setMensagemOriginal(getMensagem());
}else{
resposta2.setMensagemOriginal(getRespostaResponder());
}
resposta2.setAssunto(getMensagem().getAssunto());
try{
getController().sendResponse(resposta2, toAll, usuarios, gruposSelecionados);
message = "Resposta enviada com sucesso.";
resposta = false;
resposta2 = null;
anexado = false;
usuarios = "";
gruposSelecionados = new ArrayList<String>();
return "ok";
} catch (DatabaseException e) {
e.printStackTrace();
message = "Envio de resposta falhou";
}
}else{
message = "Envio de resposta falhou";
}
return "";
}
/**
* Envia a resposta a uma mensagem, usuário comum
* @return
*/
public String enviarResposta() {
if(getUsuarioMensagem().getUsuario() != null && getUsuarioMensagem().getMensagem() != null){
// Quando o usuário envia a mensagem de respostas, ela vai somente para o administrador
resposta2.setDataCadastro(new Date());
resposta2.setUsuario(ManagedBean.getLoggedUser());
resposta2.setAssunto(getUsuarioMensagem().getMensagem().getAssunto());
resposta2.setMensagemOriginal(getUsuarioMensagem().getMensagem());
try{
getController().sendResponse(resposta2, false,null,null);
message = "Resposta enviada com sucesso.";
resposta = false;
resposta2 = null;
anexado = false;
} catch (DatabaseException e) {
e.printStackTrace();
message = "Envio de resposta falhou";
}
}else{
message = "Envio de resposta falhou";
}
return "";
}
/**
* Somente retorna a string, para fim de redirecionamento
* @return
*/
public String toMessage() {
return "message";
}
/**
* Somente retorna a string, para fim de redirecionamento
* @return
*/
public String responder(){
resposta = true;
return null;
}
/**
* Define os parâmetros necessários para a leitura de uma mensagem
* @return uma string de redirecionamento
*/
public String ler() throws DatabaseException{
if(usuarioMensagem != null && usuarioMensagem.isLida() == false){
usuarioMensagem.setLida(true);
usuarioMensagem.setDataLeitura(new Date());
getUsuarioMensagemController().update(usuarioMensagem);
}
resposta = false;
message = "";
return "ler";
}
/**
* Define os parâmetros necessários para a leitura de uma mensagem (administrador)
* @return uma string de redirecionamento
*/
public String lerAdmin() {
resposta = false;
message = "";
return "ler";
}
/**
* Exclui uma mensagem (usuarioMensagem)
* @return
* @throws DatabaseException
*/
public String deletar() throws DatabaseException{
getUsuarioMensagemController().delete(usuarioMensagem);
//getUsuarioMensagemController().findByUser(ManagedBean.getLoggedUser());
return "";
}
/**
* Exclui a mensagem
* @return
* @throws DatabaseException
*/
public String deletarAdmin() throws DatabaseException{
getController().delete(mensagem);
//getUsuarioMensagemController().findByUser(ManagedBean.getLoggedUser());
return "";
}
/**
* Monta uma lista contendo os usuários que não leram certa mensagem
* @return
* @throws DatabaseException
*/
public String verQuemNaoLeu() throws DatabaseException{
naoLeitores = getUsuarioMensagemController().buscarNaoLeitores(mensagem);
return "naoleitores";
}
/**
* Monta uma lista contendo os usuários que leram certa mensagem
* @return
* @throws DatabaseException
*/
public String verQuemLeu() throws DatabaseException{
leitores = getUsuarioMensagemController().buscarLeitores(mensagem);
return "leitores";
}
/**
* Redirecionameto para resposta
* @return
*/
public String reply(){
anexado = false;
toAll = false;
return "reply";
}
/**
* Redirecionameto para resposta (para todos)
* @return
*/
public String replyToAll(){
anexado = false;
toAll = true;
return "reply";
}
/**
* Troca a pasta de uma mensagem
* @return
* @throws DatabaseException
*/
public String switchPasta() throws DatabaseException{
usuarioMensagem.setPasta(getPastaId() != 0 ? new PastaDAO().findById(getPastaId()) : null );
getUsuarioMensagemController().update(usuarioMensagem);
message = "Mensagem movida para a pasta ";
message += usuarioMensagem.getPasta() == null ? "Sem pasta" : usuarioMensagem.getPasta().getNome();
return null;
}
public String verOriginal() throws DatabaseException{
UsuarioMensagem mensagemOriginal = null;
try{
mensagemOriginal = getUsuarioMensagemController().findByUsuarioMensagem(usuarioMensagem.getMensagem().getMensagemOriginal().getId(), ManagedBean.getLoggedUser().getId());
} catch (NoResultFoundException e) {
MessageHandler.addGlobalMessage(e.getMessage());
}
if (mensagemOriginal != null) {
setUsuarioMensagem(mensagemOriginal);
}
return "original";
}
/***
* Upload Listener
* @param event
* @throws Exception
*/
public void listener(UploadEvent event) throws Exception {
UploadItem item = event.getUploadItem();
int extDot = item.getFileName().lastIndexOf('.');
String extension = item.getFileName().substring(extDot);
FileTransfer fileTransfer = new FileTransfer();
String fileStored = fileTransfer.transfer(item.getFile(), extension, Diretorio.ANEXO);
System.out.println(fileStored);
getResposta2().setUrlAnexo(fileStored);
anexado = true;
}
// GETTERS AND SETTERS:
/**
* @return the mensagem
*/
public Mensagem getMensagem() {
if (mensagem == null) {
mensagem = new Mensagem();
}
return mensagem;
}
/**
* @param mensagem the mensagem to set
*/
public void setMensagem(Mensagem mensagem) {
this.mensagem = mensagem;
}
/**
* @return the controller
*/
private MensagemController getController() {
if(controller == null){
controller = new MensagemController(Mensagem.MENSAGEM);
}
return controller;
}
/**
* @return the usuarioMensagemController
* @throws DatabaseException
*/
private UsuarioMensagemController getUsuarioMensagemController() throws DatabaseException {
if (usuarioMensagemController == null) {
usuarioMensagemController = new UsuarioMensagemController(Mensagem.MENSAGEM);
}
return usuarioMensagemController;
}
/**
* @return the usuarioMensagem
*/
public UsuarioMensagem getUsuarioMensagem() {
if (usuarioMensagem == null) {
usuarioMensagem = new UsuarioMensagem();
}
return usuarioMensagem;
}
/**
* @param usuarioMensagem the usuarioMensagem to set
*/
public void setUsuarioMensagem(UsuarioMensagem usuarioMensagem) {
if(usuarioMensagem.getPasta() != null){
this.pasta = usuarioMensagem.getPasta();
this.pastaId = usuarioMensagem.getPasta().getId();
}else{
this.pasta = new Pasta();
//this.pastaId = 0;
}
this.usuarioMensagem = usuarioMensagem;
this.mensagem = usuarioMensagem.getMensagem();
}
/**
* @return the resposta
*/
public boolean isResposta() {
return resposta;
}
/**
* @return the email
*/
public Mensagem getResposta2() {
if (resposta2 == null) {
resposta2 = new Mensagem();
}
return resposta2;
}
/**
* @param email the email to set
*/
public void setResposta2(Mensagem resposta2) {
this.resposta2 = resposta2;
}
/**
* @return the message
*/
public String getMessage() {
return message;
}
/**
* @return the naoLeitores
*/
public List<UsuarioMensagem> getNaoLeitores() {
if(naoLeitores == null){
naoLeitores = new ArrayList<UsuarioMensagem>();
}
return naoLeitores;
}
/**
* @return the leitores
*/
public List<UsuarioMensagem> getLeitores() {
if(leitores == null){
leitores = new ArrayList<UsuarioMensagem>();
}
return leitores;
}
/**
* @return the respostas
* @throws DatabaseException
*/
public List<UsuarioMensagem> getRespostas() throws DatabaseException {
if (usuarioMensagem != null && ManagedBean.getLoggedUser() != null) {
respostas = getUsuarioMensagemController().pegarRespostas(getUsuarioMensagem().getMensagem(), ManagedBean.getLoggedUser());
}
return respostas;
}
/**
* @return the respostaResponder
*/
public Mensagem getRespostaResponder() {
return respostaResponder;
}
/**
* @param respostaResponder the respostaResponder to set
*/
public void setRespostaResponder(Mensagem respostaResponder) {
this.message = "";
this.respostaResponder = respostaResponder;
}
/**
* @return the toAll
*/
public boolean isToAll() {
return toAll;
}
public Pasta getPasta() {
return pasta == null ? pasta = new Pasta() : pasta;
}
public void setPasta(Pasta pasta) {
this.pasta = pasta;
}
public String getFiltroPasta() {
return filtroPasta == null ? filtroPasta = "Recebidas" : filtroPasta;
}
public int getPastaId() {
return pastaId;
}
public void setPastaId(int pastaId) {
this.pastaId = pastaId;
}
public String getFiltro() {
return filtro;
}
public void setFiltro(String filtro) {
this.filtro = filtro;
}
public boolean isAnexado() {
return anexado;
}
public List<String> getGruposSelecionados() {
return gruposSelecionados;
}
public void setGruposSelecionados(List<String> gruposSelecionados) {
this.gruposSelecionados = gruposSelecionados;
}
public String getUsuarios() {
return usuarios;
}
public void setUsuarios(String usuarios) {
this.usuarios = usuarios;
}
/**
* @return the paginator
* @throws DatabaseException
*/
public UsuarioMensagemPaginator getPaginator() throws DatabaseException {
return paginator == null ? paginator = new UsuarioMensagemPaginator(getUsuarioMensagemController()) : paginator;
}
public void event(ActionEvent event){
DataScrollerEvent scrollerEvent = (DataScrollerEvent)event;
pageNumber = scrollerEvent.getPage();
}
/**
* @return the pageNumber
*/
public int getPageNumber() {
return pageNumber;
}
/**
* @param pageNumber the pageNumber to set
*/
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
}
PastaController.java
package com.tischeme.marrichi.controller;
import java.util.List;
import com.tischeme.marrichi.bean.main.ManagedBean;
import com.tischeme.marrichi.exception.DatabaseException;
import com.tischeme.marrichi.persistence.dao.PastaDAO;
import com.tischeme.marrichi.persistence.dao.UsuarioMensagemDAO;
import com.tischeme.marrichi.persistence.to.Pasta;
import com.tischeme.marrichi.persistence.to.TipoMensagem;
import com.tischeme.marrichi.persistence.to.Usuario;
public class PastaController {
private PastaDAO pastaDAO;
private int tipoMensagem;
public PastaController(int tipoMensagem) {
this.tipoMensagem = tipoMensagem;
}
public List<Pasta> listPastas(Usuario usuario) throws DatabaseException{
return getPastaDAO().findByUsuario(usuario, tipoMensagem);
}
public Pasta persist(Pasta pasta) throws DatabaseException{
pasta.setUsuario(ManagedBean.getLoggedUser());
pasta.setTipoMensagem(new TipoMensagem(tipoMensagem));
return getPastaDAO().merge(pasta);
}
private PastaDAO getPastaDAO(){
return pastaDAO == null ? pastaDAO = new PastaDAO() : pastaDAO;
}
public Pasta findById(int id) throws DatabaseException {
return getPastaDAO().findById(id);
}
public boolean delete(Pasta pasta) throws DatabaseException {
UsuarioMensagemDAO dao = new UsuarioMensagemDAO(tipoMensagem);
dao.findByPasta(ManagedBean.getLoggedUser(), pasta);
if(dao.list().size() == 0){
getPastaDAO().makeTransient(pasta);
return true;
}else{
return false;
}
}
}
muito obrigado[/quote]