package gcom.gui.seguranca.acesso;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.FiltroFuncionalidade;
import gcom.seguranca.acesso.Funcionalidade;
import gcom.seguranca.acesso.FuncionalidadeDependencia;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
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;
/**
* Descri��o da classe
*
* @author R�mulo Aur�lio
* @date 03/05/2006
*/
public class AtualizarAdicionarFuncionalidadeDependenciaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("atualizarFuncionalidadeDependenciaAction");
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
AtualizarAdicionarFuncionalidadeDependenciaActionForm atualizarAdicionarFuncionalidadeDependenciaActionForm = (AtualizarAdicionarFuncionalidadeDependenciaActionForm) actionForm;
String idFuncionalidade = atualizarAdicionarFuncionalidadeDependenciaActionForm
.getComp_id();
Collection colecaoFuncionalidadeDependencia = null;
Collection colecaoFuncionalidade = null;
if (sessao.getAttribute("colecaoFuncionalidadeTela") != null) {
colecaoFuncionalidadeDependencia = (Collection) sessao
.getAttribute("colecaoFuncionalidadeTela");
} else {
colecaoFuncionalidadeDependencia = new ArrayList();
}
// testa se a funcionalidade ja foi adicionada
if (idFuncionalidade != null && !idFuncionalidade.equalsIgnoreCase("")) {
if (colecaoFuncionalidadeDependencia != null
&& !colecaoFuncionalidadeDependencia.isEmpty()) {
FuncionalidadeDependencia funcionalidade = null;
Iterator iterator = colecaoFuncionalidadeDependencia.iterator();
while (iterator.hasNext()) {
funcionalidade = (FuncionalidadeDependencia) iterator.next();
if(funcionalidade.getComp_id().getFuncionalidadeId().equals(
new Integer(idFuncionalidade))) {
// Esta funcionalidade � igual a principal
throw new ActionServletException(
"atencao.funcionalidade.igual_principal");
}
if (funcionalidade.getComp_id().getFuncionalidadeDependenciaId().equals(
new Integer(idFuncionalidade))) {
// Esta funcionalidade ja foi informada
throw new ActionServletException(
"atencao.funcionalidade.ja_informada");
}
}
}
FiltroFuncionalidade filtroFuncionalidade = new FiltroFuncionalidade();
filtroFuncionalidade
.adicionarParametro(new ParametroSimples(
FiltroFuncionalidade.ID,
idFuncionalidade));
colecaoFuncionalidade = fachada.pesquisar(
filtroFuncionalidade,
Funcionalidade.class.getName());
}
if (colecaoFuncionalidade != null && !colecaoFuncionalidade.isEmpty()) {
FuncionalidadeDependencia funcionalidadeDependencia = new FuncionalidadeDependencia();
funcionalidadeDependencia.setFuncionalidadeDependencia((Funcionalidade) colecaoFuncionalidade.iterator().next());
colecaoFuncionalidadeDependencia.add(funcionalidadeDependencia);
sessao.setAttribute("colecaoFuncionalidadeTela", colecaoFuncionalidadeDependencia);
httpServletRequest.setAttribute("reload", true);
}
return retorno;
}
}