package gcom.gui.relatorio.seguranca;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.empresa.FiltroEmpresa;
import gcom.cadastro.funcionario.FiltroFuncionario;
import gcom.cadastro.funcionario.Funcionario;
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.ActionServletException;
import gcom.gui.seguranca.acesso.usuario.FiltrarUsuarioActionForm;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.seguranca.RelatorioManterUsuario;
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.FiltroUsuarioTipo;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.acesso.usuario.UsuarioAbrangencia;
import gcom.seguranca.acesso.usuario.UsuarioSituacao;
import gcom.seguranca.acesso.usuario.UsuarioTipo;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
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 pela exibi��o do relat�rio de bairro manter
*
* @author Arthur Carvalho
* @created 09/04/2008
*/
public class GerarRelatorioUsuarioManterAction extends
ExibidorProcessamentoTarefaRelatorio {
/**
* < <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) {
// cria a vari�vel de retorno
ActionForward retorno = null;
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
FiltrarUsuarioActionForm filtrarUsuarioActionForm = (FiltrarUsuarioActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
FiltroUsuarioGrupo filtroUsuarioGrupo = (FiltroUsuarioGrupo) sessao
.getAttribute("filtroUsuarioGrupo");
// Inicio da parte que vai mandar os parametros para o relat�rio
// Tipo do Usu�rio
String idTipoUsuario = filtrarUsuarioActionForm.getUsuarioTipo();
UsuarioTipo usuarioTipo = null;
if (idTipoUsuario != null
&& !idTipoUsuario.equals("")) {
FiltroUsuarioTipo filtroUsuarioTipo = new FiltroUsuarioTipo();
filtroUsuarioTipo.adicionarParametro(new ParametroSimples(
FiltroUsuarioTipo.ID, idTipoUsuario));
Collection colecaoTiposUsuario = fachada.pesquisar(
filtroUsuarioTipo, UsuarioTipo.class.getName());
if (colecaoTiposUsuario != null && !colecaoTiposUsuario.isEmpty()) {
// O tipo do usu�rio foi encontrado
usuarioTipo = (UsuarioTipo) Util
.retonarObjetoDeColecao(colecaoTiposUsuario);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null, "Tipo Usu�rio");
}
}
// Empresa
String idEmpresa = filtrarUsuarioActionForm.getEmpresa();
Empresa empresa = null;
if (idEmpresa != null
&& !idEmpresa.equals("")) {
FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
filtroEmpresa.adicionarParametro(new ParametroSimples(
FiltroEmpresa.ID, idEmpresa));
Collection colecaoEmpresa = fachada.pesquisar(filtroEmpresa,
Empresa.class.getName());
if (colecaoEmpresa != null && !colecaoEmpresa.isEmpty()) {
empresa = (Empresa) Util.retonarObjetoDeColecao(colecaoEmpresa);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null, "Empresa");
}
}
// Funcion�rio
String idFuncionario = filtrarUsuarioActionForm.getIdFuncionario();
Funcionario funcionario = null;
if (idFuncionario != null && !idFuncionario.trim().equals("")) {
FiltroFuncionario filtroFuncionario = new FiltroFuncionario();
filtroFuncionario.adicionarParametro(new ParametroSimples(
FiltroEmpresa.ID, idFuncionario));
Collection colecaoFuncionario = fachada.pesquisar(
filtroFuncionario, Funcionario.class.getName());
if (colecaoFuncionario != null && !colecaoFuncionario.isEmpty()) {
funcionario = (Funcionario) Util
.retonarObjetoDeColecao(colecaoFuncionario);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null, "Funcion�rio");
}
}
// Unidade de Lota��o
String idUnidadeLotacao = filtrarUsuarioActionForm.getIdLotacao();
UnidadeOrganizacional unidadeLotacao = null;
if (idUnidadeLotacao != null && !idUnidadeLotacao.trim().equals("")) {
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional
.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID, idUnidadeLotacao));
Collection colecaoUnidadeOrganizacional = fachada.pesquisar(
filtroUnidadeOrganizacional, UnidadeOrganizacional.class
.getName());
if (colecaoUnidadeOrganizacional != null
&& !colecaoUnidadeOrganizacional.isEmpty()) {
unidadeLotacao = (UnidadeOrganizacional) Util
.retonarObjetoDeColecao(colecaoUnidadeOrganizacional);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null, "Unidade Lota��o");
}
}
// Situa��o do Usu�rio
String idUsuarioSituacao = filtrarUsuarioActionForm
.getUsuarioSituacao();
UsuarioSituacao usuarioSituacao = null;
if (idUsuarioSituacao != null && !idUsuarioSituacao.equals("")) {
FiltroUsuarioSituacao filtroUsuarioSituacao = new FiltroUsuarioSituacao();
filtroUsuarioSituacao.adicionarParametro(new ParametroSimples(
FiltroUsuarioSituacao.ID, idUsuarioSituacao));
Collection colecaoUsuarioSituacao = fachada.pesquisar(
filtroUsuarioSituacao, UsuarioSituacao.class.getName());
if (colecaoUsuarioSituacao != null
&& !colecaoUsuarioSituacao.isEmpty()) {
usuarioSituacao = (UsuarioSituacao) Util
.retonarObjetoDeColecao(colecaoUsuarioSituacao);
} else {
throw new ActionServletException("atencao._inexistente", null,
"Situa��o do Usu�rio");
}
}
// Abrang�ncia do Acesso
String idAbrangencia = filtrarUsuarioActionForm.getAbrangencia();
UsuarioAbrangencia usuarioAbrangencia = null;
if (idAbrangencia != null && !idAbrangencia.equals("")) {
FiltroUsuarioAbrangencia filtroUsuarioAbrangencia = new FiltroUsuarioAbrangencia();
filtroUsuarioAbrangencia.adicionarParametro(new ParametroSimples(
FiltroUsuarioAbrangencia.ID, idAbrangencia));
Collection colecaoUsuarioAbrangencia = fachada.pesquisar(
filtroUsuarioAbrangencia, UsuarioAbrangencia.class
.getName());
if (colecaoUsuarioAbrangencia != null
&& !colecaoUsuarioAbrangencia.isEmpty()) {
usuarioAbrangencia = (UsuarioAbrangencia) Util
.retonarObjetoDeColecao(colecaoUsuarioAbrangencia);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,
"Abrang�ncia Acesso");
}
}
// Ger�ncia Regional
String idGerenciaRegional = filtrarUsuarioActionForm
.getGerenciaRegional();
GerenciaRegional gerenciaRegional = null;
if (idGerenciaRegional != null && !idGerenciaRegional.equals("")) {
FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional();
filtroGerenciaRegional.adicionarParametro(new ParametroSimples(
FiltroGerenciaRegional.ID, idGerenciaRegional));
Collection colecaoGerenciaRegional = fachada.pesquisar(
filtroGerenciaRegional, GerenciaRegional.class.getName());
if (colecaoGerenciaRegional != null
&& !colecaoGerenciaRegional.isEmpty()) {
gerenciaRegional = (GerenciaRegional) Util
.retonarObjetoDeColecao(colecaoGerenciaRegional);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,
"Ger�ncia Regional");
}
}
// Unidade de Neg�cio
String idUnidadeNegocio = filtrarUsuarioActionForm.getUnidadeNegocio();
UnidadeNegocio unidadeNegocio = null;
if (idUnidadeNegocio != null && !idUnidadeNegocio.equals("")) {
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(
FiltroUnidadeNegocio.ID, idUnidadeNegocio));
Collection colecaoUnidadeNegocio = fachada.pesquisar(
filtroUnidadeNegocio, UnidadeNegocio.class.getName());
if (colecaoUnidadeNegocio != null
&& !colecaoUnidadeNegocio.isEmpty()) {
unidadeNegocio = (UnidadeNegocio) Util
.retonarObjetoDeColecao(colecaoUnidadeNegocio);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null, "Unidade Neg�cio");
}
}
// Elo P�lo
String idElo = filtrarUsuarioActionForm.getIdElo();
Localidade elo = null;
if (idElo != null && !idElo.trim().equals("")) {
FiltroLocalidade filtroElo = new FiltroLocalidade();
filtroElo.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, idElo));
filtroElo.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID_ELO, idElo));
Collection colecaoElo = fachada.pesquisar(filtroElo,
Localidade.class.getName());
if (colecaoElo != null && !colecaoElo.isEmpty()) {
elo = (Localidade) Util.retonarObjetoDeColecao(colecaoElo);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null, "Elo P�lo");
}
}
// Localidade
String idLocalidade = filtrarUsuarioActionForm.getIdLocalidade();
Localidade localidade = null;
if (idLocalidade != null && !idLocalidade.trim().equals("")) {
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, idLocalidade));
Collection colecaoLocalidade = fachada.pesquisar(filtroLocalidade,
Localidade.class.getName());
if (colecaoLocalidade != null && !colecaoLocalidade.isEmpty()) {
localidade = (Localidade) Util
.retonarObjetoDeColecao(colecaoLocalidade);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null, "Localidade");
}
}
// Grupo
String[] idsGrupos = filtrarUsuarioActionForm.getGrupo();
Collection<Grupo> colecaoGruposParametro = new ArrayList<Grupo>();
if (idsGrupos != null) {
for (int i = 0; i < idsGrupos.length; i++) {
if (!idsGrupos[i].equals("")) {
FiltroGrupo filtroGrupo = new FiltroGrupo();
filtroGrupo.adicionarParametro(new ParametroSimples(FiltroGrupo.ID, idsGrupos[i]));
Collection colecaoGrupo = fachada.pesquisar(filtroGrupo, Grupo.class.getName());
if (colecaoGrupo != null && !colecaoGrupo.isEmpty()) {
Grupo grupo = (Grupo) Util.retonarObjetoDeColecao(colecaoGrupo);
colecaoGruposParametro.add(grupo);
}
}
}
}
// Per�odo Cadastramento Acesso
String periodoCadastramentoInicial = filtrarUsuarioActionForm.getDataCadastramentoInicial();
String periodoCadastramentoFinal = filtrarUsuarioActionForm.getDataCadastramentoFinal();
Date dataCadastramentoInicial = null;
Date dataCadastramentoFinal = null;
if (periodoCadastramentoInicial != null && !periodoCadastramentoInicial.trim().equals("")) {
dataCadastramentoInicial = Util.converteStringParaDate(periodoCadastramentoInicial);
}
if (periodoCadastramentoFinal != null && !periodoCadastramentoFinal.trim().equals("")) {
dataCadastramentoFinal = Util.converteStringParaDate(periodoCadastramentoFinal);
}
// Per�odo Expira��o
String periodoExpiracaoInicial = filtrarUsuarioActionForm.getDataExpiracaoInicial();
String periodoExpiracaoFinal = filtrarUsuarioActionForm.getDataExpiracaoFinal();
Date dataExpiracaoInicial = null;
Date dataExpiracaoFinal = null;
if (periodoExpiracaoInicial != null && !periodoExpiracaoInicial.trim().equals("")) {
dataExpiracaoInicial = Util.converteStringParaDate(periodoExpiracaoInicial);
}
if (periodoExpiracaoFinal != null && !periodoExpiracaoFinal.trim().equals("")) {
dataExpiracaoFinal = Util.converteStringParaDate(periodoExpiracaoFinal);
}
// seta os parametros que ser�o mostrados no relat�rio
// Fim da parte que vai mandar os parametros para o relat�rio
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
RelatorioManterUsuario relatorio = new RelatorioManterUsuario(
(Usuario) (httpServletRequest.getSession(false))
.getAttribute("usuarioLogado"));
relatorio.addParametro("filtroUsuarioGrupo", filtroUsuarioGrupo);
relatorio.addParametro("usuarioTipo", usuarioTipo);
relatorio.addParametro("empresa", empresa);
relatorio.addParametro("funcionario", funcionario);
relatorio.addParametro("nomeUsuario", filtrarUsuarioActionForm.getNome());
relatorio.addParametro("unidadeLotacao", unidadeLotacao);
relatorio.addParametro("usuarioSituacao", usuarioSituacao);
relatorio.addParametro("login", filtrarUsuarioActionForm.getLoginUsuario());
relatorio.addParametro("usuarioAbrangencia", usuarioAbrangencia);
relatorio.addParametro("gerenciaRegional", gerenciaRegional);
relatorio.addParametro("unidadeNegocio", unidadeNegocio);
relatorio.addParametro("elo", elo);
relatorio.addParametro("localidade", localidade);
relatorio.addParametro("colecaoGruposParametro", colecaoGruposParametro);
relatorio.addParametro("dataCadastramentoInicial", dataCadastramentoInicial);
relatorio.addParametro("dataCadastramentoFinal", dataCadastramentoFinal);
relatorio.addParametro("dataExpiracaoInicial", dataExpiracaoInicial);
relatorio.addParametro("dataExpiracaoFinal", dataExpiracaoFinal);
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorio.addParametro("tipoFormatoRelatorio", Integer
.parseInt(tipoRelatorio));
retorno = processarExibicaoRelatorio(relatorio, tipoRelatorio,
httpServletRequest, httpServletResponse, actionMapping);
// devolve o mapeamento contido na vari�vel retorno
return retorno;
}
}