package gcom.gui.seguranca.acesso;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.FiltroGrupo;
import gcom.seguranca.acesso.Grupo;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.filtro.ParametroSimples;
import gcom.util.filtro.ParametroSimplesDiferenteDe;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* Atualiza os dados do grupo e seus acessos relacionados
*
* @author Pedro Alexandre
* @date 03/07/2006
*/
public class AtualizarGrupoAction extends GcomAction {
/**
* <Breve descri��o sobre o caso de uso>
*
* [UC0279] - Manter Grupo
*
* @author Pedro Alexandre
* @date 03/07/2006
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o mapeamento de retorno para a tela de sucesso
ActionForward retorno = actionMapping.findForward("telaSucesso");
//Cria uma inst�ncia da sess�o
HttpSession sessao = httpServletRequest.getSession(false);
//Recupera o grupo da sess�o
Grupo grupo = (Grupo) sessao.getAttribute("grupo");
//Recupera os acessos do grupo da sess�o
Collection grupoFuncionalidades = (Collection) sessao.getAttribute("grupoFuncionalidades");
//[FS0002] - Verificar preenchimento dos campos
if(grupo.getDescricao() == null){
throw new ActionServletException("atencao.naoinformado",null, "Descri��o do Grupo");
}
//[FS0002] - Verificar preenchimento dos campos
if(grupo.getDescricaoAbreviada() == null){
throw new ActionServletException("atencao.naoinformado",null, "Descri��o Abreviada do Grupo");
}
//[FS002] - Verificar preenchimento dos campos
if (grupo.getIndicadorSuperintendencia() == null){
throw new ActionServletException("atencao.naoinformado",null, "Indicador de Superintend�ncia");
}
//[FS0006] - Verificar exist�ncia da descri��o
FiltroGrupo filtroGrupo = new FiltroGrupo();
filtroGrupo.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroGrupo.ID,grupo.getId()));
filtroGrupo.adicionarParametro(new ParametroSimples(FiltroGrupo.DESCRICAO, grupo.getDescricao()));
Collection colecaoGrupo = Fachada.getInstancia().pesquisar(filtroGrupo, Grupo.class.getSimpleName());
if (colecaoGrupo != null && !colecaoGrupo.isEmpty()) {
throw new ActionServletException("atencao.grupo.descricao_ja_existe",null,grupo.getDescricao());
}
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
//Chama o met�do para atualizar o grupo
Fachada.getInstancia().atualizarGrupo(grupo,grupoFuncionalidades,usuarioLogado);
//Monta a tela de sucesso
if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
montarPaginaSucesso(httpServletRequest, "Grupo "+grupo.getDescricao()+" atualizado com sucesso.",
"Manter outro grupo", "exibirManterGrupoAction.do?menu=sim");
}
//Limpa a sess�o
sessao.removeAttribute("grupo");
sessao.removeAttribute("grupoFuncionalidades");
//Retorna o mapeamento contido na vari�vel "retorno"
return retorno;
}
}