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 java.util.Collection;
import java.util.Date;
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;
/**
* Action respons�vel por inserir um grupo e os acessos se informados
*
* @author Pedro Alexandre
* @date 28/06/2006
*/
public class InserirGrupoAction extends GcomAction {
/**
* <Breve descri��o sobre o caso de uso>
*
* [UC0278] - Inserir Grupo
*
* @author Pedro Alexandre
* @date 29/06/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");
grupo.setUltimaAlteracao(new Date());
//[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");
}
//[FS0001] - Verificar exist�ncia da descri��o
FiltroGrupo filtroGrupo = new FiltroGrupo();
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());
}
//Recupera os acessos dos grupos definidos pelo usu�rio
Collection grupoFuncionalidades = (Collection) sessao.getAttribute("grupoFuncionalidades");
//Passa o usu�rio logado para registrar opera��o.
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
//Cria uma inst�ncia da fachada
Fachada.getInstancia().inserirGrupo(grupo,grupoFuncionalidades, usuarioLogado);
//Monta p�gina de sucesso
montarPaginaSucesso(httpServletRequest, "Grupo de descri��o "
+ grupo.getDescricao() + " inserido com sucesso!",
"Inserir outro grupo", "exibirInserirGrupoAction.do?menu=sim",
"exibirAtualizarGrupoAction.do?idRegistroAtualizacao="
+ grupo.getId() , "Atualizar grupo inserido");
//Limpa a sess�o depois de inserir os dados
sessao.removeAttribute("grupo");
sessao.removeAttribute("grupoFuncionalidades");
//Retorna o mapeamento contido na vari�vel "retorno"
return retorno;
}
}