package gcom.gui.seguranca.acesso.usuario;
import gcom.cadastro.localidade.FiltroGerenciaRegional;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroUnidadeNegocio;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.UnidadeNegocio;
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.FiltroUsuarioAbrangencia;
import gcom.seguranca.acesso.usuario.FiltroUsuarioGrupo;
import gcom.seguranca.acesso.usuario.FiltroUsuarioSituacao;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.acesso.usuario.UsuarioAbrangencia;
import gcom.seguranca.acesso.usuario.UsuarioGrupo;
import gcom.seguranca.acesso.usuario.UsuarioSituacao;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
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;
/**
* Action que exibe o menu
*
* @author S�vio Luiz
* @date 02/05/2006
*/
public class ExibirAtualizarUsuarioAcessosUsuarioAction extends GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("atualizarUsuarioAcessoUsuario");
AtualizarUsuarioDadosGeraisActionForm form = (AtualizarUsuarioDadosGeraisActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
// Usuario logado no sistema
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
// Usuario que vai ser cadastrado no sistema, usado s� nessa
// funcionalidade
Usuario usuarioParaAtualizar = (Usuario) sessao
.getAttribute("usuarioParaAtualizar");
String[] grupo = (String[]) sessao.getAttribute("grupo");
String onLoad = httpServletRequest.getParameter("onLoad");
if (onLoad != null && !onLoad.equals("")) {
if (form.getIdElo() != null
&& !form.getIdElo().equals("")
&& (usuarioParaAtualizar.getLocalidadeElo() == null || (usuarioParaAtualizar
.getLocalidadeElo() != null
&& usuarioParaAtualizar.getLocalidadeElo().getId() != null && !form
.getIdElo().equals(
usuarioParaAtualizar.getLocalidadeElo()
.getId().toString())))) {
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, form.getIdElo()));
Collection coll = Fachada.getInstancia().pesquisar(
filtroLocalidade, Localidade.class.getSimpleName());
if (coll != null && !coll.isEmpty()) {
Localidade l = (Localidade) coll.iterator().next();
if (l.getLocalidade() != null
&& !l.getId().equals(l.getLocalidade().getId())) {
throw new ActionServletException(
"atencao.localidade.nao.elo");
}
usuarioParaAtualizar.setLocalidadeElo(l);
form.setIdElo(l.getId().toString());
form.setNomeElo(l.getDescricao());
form.setEloNaoEncontrada("false");
} else {
usuarioParaAtualizar.setLocalidadeElo(null);
form.setIdElo("");
form.setNomeElo("Elo inexistente.");
form.setEloNaoEncontrada("true");
}
} else {
if (form.getIdElo() != null && !form.getIdElo().equals("")) {
form.setIdElo(usuarioParaAtualizar.getLocalidadeElo()
.getId().toString());
form.setNomeElo(usuarioParaAtualizar.getLocalidadeElo()
.getDescricao());
form.setEloNaoEncontrada("false");
}
}
if (form.getIdLocalidade() != null
&& !form.getIdLocalidade().equals("")
&& (usuarioParaAtualizar.getLocalidade() == null || (usuarioParaAtualizar
.getLocalidade() != null
&& usuarioParaAtualizar.getLocalidade().getId() != null && !form
.getIdLocalidade().equals(
usuarioParaAtualizar.getLocalidade()
.getId().toString())))) {
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, form.getIdLocalidade()));
Collection coll = Fachada.getInstancia().pesquisar(
filtroLocalidade, Localidade.class.getSimpleName());
if (coll != null && !coll.isEmpty()) {
Localidade l = (Localidade) coll.iterator().next();
usuarioParaAtualizar.setLocalidade(l);
form.setIdLocalidade(l.getId().toString());
form.setNomeLocalidade(l.getDescricao());
form.setLocalidadeNaoEncontrada("false");
} else {
usuarioParaAtualizar.setLocalidade(null);
form.setIdLocalidade("");
form.setNomeLocalidade(" Localidade inexistente.");
form.setLocalidadeNaoEncontrada("true");
}
} else {
if (form.getIdLocalidade() != null
&& !form.getIdLocalidade().equals("")) {
form.setLocalidadeNaoEncontrada("false");
form.setIdLocalidade(""
+ usuarioParaAtualizar.getLocalidade().getId());
form.setNomeLocalidade(usuarioParaAtualizar.getLocalidade()
.getDescricao());
}
}
} else {
if (usuarioParaAtualizar != null) {
if (grupo != null) {
form.setGrupo(grupo);
}
if (usuarioParaAtualizar.getUsuarioAbrangencia() != null
&& usuarioParaAtualizar.getUsuarioAbrangencia().getId() != null)
form.setAbrangencia(usuarioParaAtualizar
.getUsuarioAbrangencia().getId().toString());
if (usuarioParaAtualizar.getGerenciaRegional() != null
&& usuarioParaAtualizar.getGerenciaRegional().getId() != null)
form.setGerenciaRegional(usuarioParaAtualizar
.getGerenciaRegional().getId().toString());
if (usuarioParaAtualizar.getUnidadeNegocio() != null
&& usuarioParaAtualizar.getUnidadeNegocio().getId() != null)
form.setUnidadeNegocio(usuarioParaAtualizar
.getUnidadeNegocio().getId().toString());
if ("".equals(form.getIdElo())) {
if (usuarioParaAtualizar.getLocalidadeElo() != null) {
if (usuarioParaAtualizar.getLocalidadeElo().getId() != null)
form.setIdElo(usuarioParaAtualizar
.getLocalidadeElo().getId().toString());
if (usuarioParaAtualizar.getLocalidadeElo()
.getDescricao() != null)
form.setNomeElo(usuarioParaAtualizar
.getLocalidadeElo().getDescricao());
}
}
if ("".equals(form.getIdLocalidade())) {
if (usuarioParaAtualizar.getLocalidade() != null) {
if (usuarioParaAtualizar.getLocalidade().getId() != null)
form.setIdLocalidade(usuarioParaAtualizar
.getLocalidade().getId().toString());
if (usuarioParaAtualizar.getLocalidade().getDescricao() != null)
form.setNomeLocalidade(usuarioParaAtualizar
.getLocalidade().getDescricao());
}
}
}
}
Collection colecaoUsuarioAbrangencia = null;
if (sessao.getAttribute("collUsuarioAbrangencia") == null
|| sessao.getAttribute("collUsuarioAbrangencia").equals("")) {
// caso o usu�rio que esteja efetuando a inser��o n�o
// seja
// do grupo de administradores
FiltroUsuarioGrupo filtroUsuarioGrupo = new FiltroUsuarioGrupo();
filtroUsuarioGrupo.adicionarParametro(new ParametroSimples(
FiltroUsuarioGrupo.USUARIO_ID, usuario.getId()));
filtroUsuarioGrupo.adicionarParametro(new ParametroSimples(
FiltroUsuarioGrupo.GRUPO_ID, Grupo.ADMINISTRADOR));
Collection colecaoUsuarioGrupo = Fachada.getInstancia().pesquisar(
filtroUsuarioGrupo, UsuarioGrupo.class.getName());
if (colecaoUsuarioGrupo != null && !colecaoUsuarioGrupo.isEmpty()) {
colecaoUsuarioAbrangencia = Fachada.getInstancia().pesquisar(
new FiltroUsuarioAbrangencia(),
UsuarioAbrangencia.class.getSimpleName());
} else {
Integer idUsuarioAbrangencia = usuario.getUsuarioAbrangencia()
.getId();
FiltroUsuarioAbrangencia filtroUsuarioAbrangencia = new FiltroUsuarioAbrangencia();
filtroUsuarioAbrangencia
.adicionarParametro(new ParametroSimples(
FiltroUsuarioAbrangencia.ID,
idUsuarioAbrangencia));
colecaoUsuarioAbrangencia = Fachada.getInstancia().pesquisar(
filtroUsuarioAbrangencia,
UsuarioAbrangencia.class.getName());
// caso exista mais de uma abrang�ncia na pesquisa passando o id
// da
// abrang�ncia como superior
boolean mesmoNivel = true;
// cria um boolean para verificar se existe o usus�rio
// abrangencia
// que est� sendo atualizado na cole��o de usuarios abrangencia
// permitido para o usu�rio logado do usu�rio
boolean achouUsuarioAbrangencia = false;
Collection usuarioAbrangenciaParaPesquisa = new ArrayList();
Iterator iteratorUsuarioAbrangencia = colecaoUsuarioAbrangencia
.iterator();
while (iteratorUsuarioAbrangencia.hasNext()) {
UsuarioAbrangencia usuarioAbrangencia = (UsuarioAbrangencia) iteratorUsuarioAbrangencia
.next();
if (usuarioParaAtualizar.getUsuarioAbrangencia() != null
&& usuarioAbrangencia.getId().equals(
usuarioParaAtualizar
.getUsuarioAbrangencia().getId())) {
achouUsuarioAbrangencia = true;
}
}
usuarioAbrangenciaParaPesquisa
.addAll(colecaoUsuarioAbrangencia);
// enquanto exista mais usu�rio abrang�ncia(s)
while (mesmoNivel) {
Collection colecaoUsuarioAbrangenciaPorSuperior = Fachada
.getInstancia()
.pesquisarUsuarioAbrangenciaPorSuperior(
usuarioAbrangenciaParaPesquisa,
idUsuarioAbrangencia);
if (colecaoUsuarioAbrangenciaPorSuperior != null
&& !colecaoUsuarioAbrangenciaPorSuperior.isEmpty()) {
Iterator iteratorUsuarioAbrangenciaSuperior = colecaoUsuarioAbrangenciaPorSuperior
.iterator();
// verifica se existe na cole��o de usuarios
// abrang�ncias o
// usuario abrang�ncia do usuario atualizar
while (iteratorUsuarioAbrangenciaSuperior.hasNext()) {
UsuarioAbrangencia usuarioAbrangencia = (UsuarioAbrangencia) iteratorUsuarioAbrangenciaSuperior
.next();
if (usuarioParaAtualizar.getUsuarioAbrangencia() != null
&& usuarioAbrangencia.getId().equals(
usuarioParaAtualizar
.getUsuarioAbrangencia()
.getId())) {
achouUsuarioAbrangencia = true;
}
}
colecaoUsuarioAbrangencia
.addAll(colecaoUsuarioAbrangenciaPorSuperior);
usuarioAbrangenciaParaPesquisa = new ArrayList();
usuarioAbrangenciaParaPesquisa
.addAll(colecaoUsuarioAbrangenciaPorSuperior);
} else {
mesmoNivel = false;
}
}
// se n�o achou o usu�rio abrangencia do usu�rio que est�
// atualizando na cole��o de usu�rios abrangencias ent�o inseri
// essa
// abrangencia na cole��o e n�o permite altera��o
if (!achouUsuarioAbrangencia) {
filtroUsuarioAbrangencia = new FiltroUsuarioAbrangencia();
filtroUsuarioAbrangencia
.adicionarParametro(new ParametroSimples(
FiltroUsuarioAbrangencia.ID,
usuarioParaAtualizar
.getUsuarioAbrangencia().getId()));
Collection colecaoUsuarioAbrangenciaAdicionar = Fachada
.getInstancia().pesquisar(filtroUsuarioAbrangencia,
UsuarioAbrangencia.class.getName());
colecaoUsuarioAbrangencia
.addAll(colecaoUsuarioAbrangenciaAdicionar);
sessao.setAttribute(
"desabilitaUsuarioAbrangencia", "1");
}
}
// caso exista mais de uma abrang�ncia na pesquisa passando o id da
// abrang�ncia como superior
sessao.setAttribute("collUsuarioAbrangencia",
colecaoUsuarioAbrangencia);
Collection colecaoGrupo = null;
// caso o usu�rio que esteja efetuando a inser��o n�o
// seja
// do grupo de administradores
if (colecaoUsuarioGrupo != null && !colecaoUsuarioGrupo.isEmpty()) {
FiltroGrupo filtroGrupo = new FiltroGrupo();
filtroGrupo.setCampoOrderBy(FiltroGrupo.DESCRICAO);
filtroGrupo.adicionarParametro(new ParametroSimples(
FiltroGrupo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
colecaoGrupo = Fachada.getInstancia().pesquisar(
filtroGrupo, Grupo.class.getSimpleName());
} else {
Collection colecaoGrupoUsuario = (Collection)sessao.getAttribute("colecaoGruposUsuario");
colecaoGrupo = new ArrayList();
Collection colecaoGrupoParaSelecao = Fachada.getInstancia()
.pesquisarGruposUsuarioAcesso(colecaoGrupoUsuario);
colecaoGrupo.addAll(colecaoGrupoParaSelecao);
boolean primeiraVez = true;
String grupoNaoDesabilitado = "";
for (int i = 0; i < grupo.length; i++) {
boolean achouGrupo = true;
Iterator iteratorGrupo = colecaoGrupoParaSelecao.iterator();
while (iteratorGrupo.hasNext()) {
Grupo grupoParaAtualizar = (Grupo) iteratorGrupo.next();
if (new Integer(grupo[i]).equals(grupoParaAtualizar
.getId())) {
achouGrupo = false;
}
}
if (achouGrupo) {
if (primeiraVez) {
grupoNaoDesabilitado = grupoNaoDesabilitado
+ grupo[i];
primeiraVez = false;
} else {
grupoNaoDesabilitado = grupoNaoDesabilitado + ","
+ grupo[i];
}
FiltroGrupo filtroGrupo = new FiltroGrupo();
filtroGrupo.setCampoOrderBy(FiltroGrupo.DESCRICAO);
filtroGrupo.adicionarParametro(new ParametroSimples(
FiltroGrupo.ID, grupo[i]));
Collection colecaoGrupoSelecionado = Fachada
.getInstancia().pesquisar(filtroGrupo,
Grupo.class.getName());
Grupo grupoSelecionado = (Grupo) Util
.retonarObjetoDeColecao(colecaoGrupoSelecionado);
colecaoGrupo.add(grupoSelecionado);
}
}
form.setGrupoNaoDesabilitados(grupoNaoDesabilitado);
}
sessao.setAttribute("collGrupo", colecaoGrupo);
}
if (sessao.getAttribute("collGerenciaRegional") == null
|| sessao.getAttribute("collGerenciaRegional").equals("")) {
FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional();
filtroGerenciaRegional.adicionarParametro(new ParametroSimples(
FiltroGerenciaRegional.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoGerenciaRegional = Fachada.getInstancia()
.pesquisar(filtroGerenciaRegional,
GerenciaRegional.class.getSimpleName());
sessao
.setAttribute("collGerenciaRegional",
colecaoGerenciaRegional);
}
if (sessao.getAttribute("collUnidadeNegocio") == null
|| sessao.getAttribute("collUnidadeNegocio").equals("")) {
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(
FiltroUnidadeNegocio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoUnidadeNegocio = Fachada.getInstancia()
.pesquisar(filtroUnidadeNegocio,
UnidadeNegocio.class.getSimpleName());
sessao.setAttribute("collUnidadeNegocio", colecaoUnidadeNegocio);
}
if (sessao.getAttribute("collUsuarioSituacao") == null
|| sessao.getAttribute("collUsuarioSituacao").equals("")) {
FiltroUsuarioSituacao filtroUsuarioSituacao = new FiltroUsuarioSituacao(FiltroUsuarioSituacao.DESCRICAO);
filtroUsuarioSituacao.adicionarParametro(new ParametroSimples(
FiltroUsuarioSituacao.INDICADOR_DE_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoUsuarioSituacao = Fachada.getInstancia()
.pesquisar(filtroUsuarioSituacao,
UsuarioSituacao.class.getSimpleName());
sessao.setAttribute("collUsuarioSituacao", colecaoUsuarioSituacao);
}
sessao.setAttribute("processo","2");
return retorno;
}
}