package gcom.gui.relatorio.cadastro;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import gcom.atendimentopublico.registroatendimento.FiltroMeioSolicitacao;
import gcom.atendimentopublico.registroatendimento.MeioSolicitacao;
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.cadastro.unidade.FiltroUnidadeOrganizacional;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.FiltroUsuario;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
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;
/**
* [UC1124] Gerar Relat�rio de Altera��es de CPF/CNPJ
*
* @author Mariana Victor
* @date 14/02/2011
*/
public class ExibirGerarRelatorioAlteracoesCpfCnpjAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("exibirGerarRelatorioAlteracoesCpfCnpj");
HttpSession sessao = httpServletRequest.getSession(false);
GerarRelatorioAlteracoesCpfCnpjActionForm form = (GerarRelatorioAlteracoesCpfCnpjActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
List colecaoUnidadeOrganizacional = new ArrayList();
List colecaoUsuario = new ArrayList();
if (sessao.getAttribute("colecaoUnidadeOrganizacional") != null
&& !sessao.getAttribute("colecaoUnidadeOrganizacional").equals("")) {
colecaoUnidadeOrganizacional = (List) sessao.getAttribute("colecaoUnidadeOrganizacional");
}
if (sessao.getAttribute("colecaoUsuario") != null
&& !sessao.getAttribute("colecaoUsuario").equals("")) {
colecaoUsuario = (List) sessao.getAttribute("colecaoUsuario");
}
// Carregar lista de Meios
if (sessao.getAttribute("colecaoMeiosSolicitacao") == null
|| sessao.getAttribute("colecaoMeiosSolicitacao").equals("")) {
FiltroMeioSolicitacao filtroMeioSolicitacao = new FiltroMeioSolicitacao();
filtroMeioSolicitacao.adicionarParametro(
new ParametroSimples(FiltroMeioSolicitacao.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO));
filtroMeioSolicitacao.setCampoOrderBy(FiltroMeioSolicitacao.DESCRICAO);
Collection<MeioSolicitacao> colecaoMeiosSolicitacao =
this.getFachada().pesquisar(filtroMeioSolicitacao, MeioSolicitacao.class.getName());
if(!Util.isVazioOrNulo(colecaoMeiosSolicitacao)){
sessao.setAttribute("colecaoMeiosSolicitacao",colecaoMeiosSolicitacao);
}
}
// Carregar lista das Ger�ncias Regionais
if (sessao.getAttribute("colecaoGerenciaRegional") == null
|| sessao.getAttribute("colecaoGerenciaRegional").equals("")) {
FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional();
Collection<GerenciaRegional> gerenciasRegionais = fachada.pesquisar(
filtroGerenciaRegional, GerenciaRegional.class.getName());
httpServletRequest.setAttribute("colecaoGerenciaRegional",
gerenciasRegionais);
}
// Carregar lista das Unidades de Neg�cio
if (sessao.getAttribute("colecaoUnidadeNegocio") == null
|| sessao.getAttribute("colecaoUnidadeNegocio").equals("")) {
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.setCampoOrderBy(FiltroUnidadeNegocio.NOME);
Collection<UnidadeNegocio> colecaoUnidadeNegocio = fachada.pesquisar(
filtroUnidadeNegocio, UnidadeNegocio.class.getName());
httpServletRequest.setAttribute("colecaoUnidadeNegocio",
colecaoUnidadeNegocio);
}
// Pesquisar Unidade Superior
if(Util.verificarNaoVazio(form.getIdUnidadeSuperior())){
pesquisarUnidadeSuperior(form,sessao);
}
//Pesquisar Unidade Organizacional
if(Util.verificarNaoVazio(form.getIdUnidadeOrganizacional())){
pesquisarUnidadeOrganizacional(form,sessao);
}
//Pesquisar Usuario
if(Util.verificarNaoVazio(form.getIdUsuario())){
pesquisarUsuario(form,sessao);
}
//Pesquisar Localidade
if(Util.verificarNaoVazio(form.getIdLocalidade())){
pesquisarLocalidade(form,sessao);
}
// Adicionar Unidade Organizacional
if (httpServletRequest.getParameter("adicionarUnidadeOrganizacional") != null
&& httpServletRequest.getParameter("adicionarUnidadeOrganizacional").equals("OK")
&& Util.verificarNaoVazio(form.getIdUnidadeOrganizacional())){
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID,
new Integer(form.getIdUnidadeOrganizacional())));
Collection colecaoUnidade = this.getFachada().pesquisar(
filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
if (!Util.isVazioOrNulo(colecaoUnidade)) {
UnidadeOrganizacional unidadeOrganizacional =
(UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidade);
if(!contem(colecaoUnidadeOrganizacional, unidadeOrganizacional)){
colecaoUnidadeOrganizacional.add(unidadeOrganizacional);
sessao.setAttribute("colecaoUnidadeOrganizacional", colecaoUnidadeOrganizacional);
form.setIdUnidadeOrganizacional("");
form.setDescUnidadeOrganizacional("");
}
}
}
// Adicionar Usu�rio
if (httpServletRequest.getParameter("adicionarUsuario") != null
&& httpServletRequest.getParameter("adicionarUsuario").equals("OK")
&& Util.verificarNaoVazio(form.getIdUsuario())){
FiltroUsuario filtroUsuario = new FiltroUsuario();
filtroUsuario.adicionarParametro(new ParametroSimples(
FiltroUsuario.ID,
new Integer(form.getIdUsuario())));
Collection colecaoUsuarioPesquisa = this.getFachada().pesquisar(
filtroUsuario, Usuario.class.getName());
if (!Util.isVazioOrNulo(colecaoUsuarioPesquisa)) {
Usuario usuario =
(Usuario) Util.retonarObjetoDeColecao(colecaoUsuarioPesquisa);
if(!colecaoUsuario.contains(usuario)){
colecaoUsuario.add(usuario);
sessao.setAttribute("colecaoUsuario", colecaoUsuario);
form.setIdUsuario("");
form.setDescUsuario("");
}
}
}
// Remover Unidade Organizacional
if (httpServletRequest.getParameter("removerUnidadeOrganizacional") != null
&& httpServletRequest.getParameter("removerUnidadeOrganizacional").equals("OK")
&& httpServletRequest.getParameter("idRegistro") != null
&& !httpServletRequest.getParameter("idRegistro").equals("")){
Integer posicao = new Integer(httpServletRequest.getParameter("idRegistro"));
if (posicao <= colecaoUnidadeOrganizacional.size()) {
colecaoUnidadeOrganizacional.remove(posicao - 1);
sessao.setAttribute("colecaoUnidadeOrganizacional", colecaoUnidadeOrganizacional);
}
}
//Remover Usu�rio
if (httpServletRequest.getParameter("removerUsuario") != null
&& httpServletRequest.getParameter("removerUsuario").equals("OK")
&& httpServletRequest.getParameter("idRegistro") != null
&& !httpServletRequest.getParameter("idRegistro").equals("")){
Integer posicao = new Integer(httpServletRequest.getParameter("idRegistro"));
if (posicao <= colecaoUsuario.size()) {
colecaoUsuario.remove(posicao - 1);
sessao.setAttribute("colecaoUsuario", colecaoUsuario);
}
}
if(colecaoUnidadeOrganizacional != null
&& !colecaoUnidadeOrganizacional.isEmpty()){
httpServletRequest.setAttribute("colecaoUnidadeVazia", "nao");
}
return retorno;
}
private void pesquisarUnidadeSuperior(GerarRelatorioAlteracoesCpfCnpjActionForm form, HttpSession sessao){
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID_UNIDADE_SUPERIOR,
new Integer(form.getIdUnidadeSuperior())));
filtroUnidadeOrganizacional.adicionarCaminhoParaCarregamentoEntidade(
FiltroUnidadeOrganizacional.UNIDADE_SUPERIOR);
Collection colecaoUnidadeSuperior = this.getFachada().pesquisar(
filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
if ( Util.isVazioOrNulo(colecaoUnidadeSuperior)) {
form.setIdUnidadeSuperior("");
form.setDescUnidadeSuperior("Unidade Superior Inexistente");
sessao.removeAttribute("unidadeSuperiorEncontrada");
return;
}
UnidadeOrganizacional unidadeOrganizacional = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidadeSuperior);
form.setIdUnidadeSuperior(unidadeOrganizacional.getUnidadeSuperior().getId().toString());
form.setDescUnidadeSuperior(unidadeOrganizacional.getUnidadeSuperior().getDescricao());
sessao.setAttribute("unidadeSuperiorEncontrada","");
}
private void pesquisarUnidadeOrganizacional(GerarRelatorioAlteracoesCpfCnpjActionForm form, HttpSession sessao){
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID,
new Integer(form.getIdUnidadeOrganizacional())));
Collection colecaoUnidadeOrganizacional = this.getFachada().pesquisar(
filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
if ( Util.isVazioOrNulo(colecaoUnidadeOrganizacional)) {
form.setIdUnidadeOrganizacional("");
form.setDescUnidadeOrganizacional("Unidade Organizacional Inexistente");
sessao.removeAttribute("unidadeOrganizacionalEncontrada");
return;
}
UnidadeOrganizacional unidadeOrganizacional = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidadeOrganizacional);
form.setIdUnidadeOrganizacional(unidadeOrganizacional.getId().toString());
form.setDescUnidadeOrganizacional(unidadeOrganizacional.getDescricao());
sessao.setAttribute("unidadeOrganizacionalEncontrada","");
}
private void pesquisarUsuario(GerarRelatorioAlteracoesCpfCnpjActionForm form, HttpSession sessao){
FiltroUsuario filtroUsuario = new FiltroUsuario();
filtroUsuario.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID, new Integer(form.getIdUsuario())));
Collection colecaoUsuario = this.getFachada().pesquisar(
filtroUsuario, Usuario.class.getName());
if ( Util.isVazioOrNulo(colecaoUsuario)) {
form.setIdUsuario("");
form.setDescUsuario("Usuario Inexistente");
sessao.removeAttribute("usuarioEncontrado");
return;
}
Usuario usuario = (Usuario) Util.retonarObjetoDeColecao(colecaoUsuario);
form.setIdUsuario(usuario.getId().toString());
form.setDescUsuario(usuario.getNomeUsuario());
sessao.setAttribute("usuarioEncontrado","");
}
private void pesquisarLocalidade(GerarRelatorioAlteracoesCpfCnpjActionForm form, HttpSession sessao){
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, new Integer(form.getIdLocalidade())));
Collection colecaoLocalidade = this.getFachada().pesquisar(
filtroLocalidade, Localidade.class.getName());
if ( Util.isVazioOrNulo(colecaoLocalidade)) {
form.setIdLocalidade("");
form.setDescLocalidade("Localidade Inexistente");
sessao.removeAttribute("localidadeEncontrada");
return;
}
Localidade localidade = (Localidade) Util.retonarObjetoDeColecao(colecaoLocalidade);
form.setIdLocalidade(localidade.getId().toString());
form.setDescLocalidade(localidade.getDescricao());
sessao.setAttribute("localidadeEncontrada","");
}
private boolean contem(List colecaoUnidadeOrganizacional, UnidadeOrganizacional unidadeOrganizacional) {
Iterator iterator = colecaoUnidadeOrganizacional.iterator();
while (iterator.hasNext()) {
UnidadeOrganizacional unidadeOrganizacionalIterator = (UnidadeOrganizacional) iterator.next();
if (unidadeOrganizacional.getId().equals(unidadeOrganizacionalIterator.getId()))
return true;
}
return false;
}
}