package gcom.gui.cadastro.unidade;
import gcom.atendimentopublico.registroatendimento.FiltroMeioSolicitacao;
import gcom.atendimentopublico.registroatendimento.MeioSolicitacao;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.empresa.FiltroEmpresa;
import gcom.cadastro.localidade.FiltroGerenciaRegional;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.unidade.FiltroUnidadeOrganizacional;
import gcom.cadastro.unidade.FiltroUnidadeTipo;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.cadastro.unidade.UnidadeTipo;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
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 define o pr�-processamento da p�gina de pesquisa unidade organizacional
*
* @author Rafael Pinto
* @created 25/07/2006
*/
public class ExibirPesquisarUnidadeOrganizacionalAction extends GcomAction {
/**
* Description of the Method
*
* @param actionMapping
* Description of the Parameter
* @param actionForm
* Description of the Parameter
* @param httpServletRequest
* Description of the Parameter
* @param httpServletResponse
* Description of the Parameter
* @return Description of the Return Value
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("exibirPesquisarUnidadeOrganizacional");
// Obt�m a inst�ncia da Fachada
Fachada fachada = Fachada.getInstancia();
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
PesquisarUnidadeOrganizacionalActionForm pesquisarUnidadeOrganizacionalActionForm =
(PesquisarUnidadeOrganizacionalActionForm) actionForm;
// Flag indicando que o usu�rio fez uma consulta a partir da tecla Enter
String objetoConsulta = httpServletRequest.getParameter("objetoConsulta");
// Flag indicando que o usu�rio fez uma consulta com o UNID_ICTRAMITE = 1
String indicadorTramite = httpServletRequest.getParameter("indicadorTramite");
if (indicadorTramite != null && !indicadorTramite.trim().equals("") &&
indicadorTramite.trim().equals("1")) {
sessao.setAttribute("indicadorTramite", indicadorTramite);
}
//Flag indicando que o usu�rio fez uma consulta a partir do pesquisar Unidade Repavimentadora
String tipoUnidade = httpServletRequest.getParameter("tipoUnidade");
sessao.setAttribute("tipoUnidade", tipoUnidade);
if (objetoConsulta != null && !objetoConsulta.trim().equals("") &&
objetoConsulta.trim().equals("1")) {
// Faz a consulta de Localidade
pesquisarLocalidade(httpServletRequest, retorno,pesquisarUnidadeOrganizacionalActionForm);
}
if (objetoConsulta != null && !objetoConsulta.trim().equals("") &&
objetoConsulta.trim().equals("2")) {
// Faz a consulta de Unidade
pesquisarUnidadeOrganizacional(httpServletRequest, retorno,pesquisarUnidadeOrganizacionalActionForm);
}
// Parte que passa as cole��es necess�rias no jsp
Collection colecaoUnidadeTipo = (Collection) sessao.getAttribute("colecaoUnidadeTipo");
if(colecaoUnidadeTipo == null){
FiltroUnidadeTipo filtroUnidadeTipo = new FiltroUnidadeTipo();
filtroUnidadeTipo.adicionarParametro(new ParametroSimples(
FiltroUnidadeTipo.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO));
filtroUnidadeTipo.setCampoOrderBy(FiltroUnidadeTipo.DESCRICAO);
colecaoUnidadeTipo =
fachada.pesquisar(filtroUnidadeTipo, UnidadeTipo.class.getName());
if (colecaoUnidadeTipo != null && !colecaoUnidadeTipo.isEmpty()) {
sessao.setAttribute("colecaoUnidadeTipo", colecaoUnidadeTipo);
} else {
throw new ActionServletException("atencao.naocadastrado", null,
"Unidade Tipo");
}
}
Collection colecaoGerenciaRegional = (Collection) sessao.getAttribute("colecaoGerenciaRegional");
if(colecaoGerenciaRegional == null){
FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional();
filtroGerenciaRegional.adicionarParametro(new ParametroSimples(
FiltroGerenciaRegional.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO));
filtroGerenciaRegional.setCampoOrderBy(FiltroGerenciaRegional.NOME);
colecaoGerenciaRegional =
fachada.pesquisar(filtroGerenciaRegional, GerenciaRegional.class.getName());
if (colecaoGerenciaRegional != null && !colecaoGerenciaRegional.isEmpty()) {
sessao.setAttribute("colecaoGerenciaRegional", colecaoGerenciaRegional);
} else {
throw new ActionServletException("atencao.naocadastrado", null,
"Ger�ncial Regional");
}
}
Collection colecaoMeioSolicitacao = (Collection) sessao.getAttribute("colecaoMeioSolicitacao");
if(colecaoMeioSolicitacao == null){
FiltroMeioSolicitacao filtroMeioSolicitacao = new FiltroMeioSolicitacao();
filtroMeioSolicitacao.adicionarParametro(new ParametroSimples(
FiltroMeioSolicitacao.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO));
filtroMeioSolicitacao.setCampoOrderBy(FiltroMeioSolicitacao.DESCRICAO);
colecaoMeioSolicitacao =
fachada.pesquisar(filtroMeioSolicitacao, MeioSolicitacao.class.getName());
if (colecaoMeioSolicitacao != null && !colecaoMeioSolicitacao.isEmpty()) {
sessao.setAttribute("colecaoMeioSolicitacao", colecaoMeioSolicitacao);
} else {
throw new ActionServletException("atencao.naocadastrado", null,
"Meio Solicita��o");
}
}
Collection colecaoUnidadeCentralizadora =
(Collection) sessao.getAttribute("colecaoUnidadeCentralizadora");
if(colecaoUnidadeCentralizadora == null || colecaoUnidadeCentralizadora.isEmpty()){
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO));
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.UNIDADE_TIPO_CODIGO,
UnidadeTipo.UNIDADE_TIPO_CENTRALIZADORA));
filtroUnidadeOrganizacional.setCampoOrderBy(FiltroMeioSolicitacao.DESCRICAO);
colecaoUnidadeCentralizadora =
fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
if (colecaoUnidadeCentralizadora != null && !colecaoUnidadeCentralizadora.isEmpty()) {
sessao.setAttribute("colecaoUnidadeCentralizadora", colecaoUnidadeCentralizadora);
}
}
Collection colecaoEmpresa =
(Collection) sessao.getAttribute("colecaoEmpresa");
if(colecaoEmpresa == null){
// Filtro para obter empresa ativo de id informado
FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
filtroEmpresa.adicionarParametro(new ParametroSimples(
FiltroEmpresa.INDICADORUSO,ConstantesSistema.INDICADOR_USO_ATIVO));
filtroEmpresa.setCampoOrderBy(FiltroEmpresa.DESCRICAO);
colecaoEmpresa =
fachada.pesquisar(filtroEmpresa, Empresa.class.getName());
if (colecaoEmpresa != null && !colecaoEmpresa.isEmpty()) {
sessao.setAttribute("colecaoEmpresa", colecaoEmpresa);
} else {
throw new ActionServletException("atencao.naocadastrado", null,
"Empresa");
}
}
if (httpServletRequest.getParameter("caminhoRetornoTelaPesquisaUnidadeOrganizacional") != null) {
sessao.setAttribute("caminhoRetornoTelaPesquisaUnidadeOrganizacional",
httpServletRequest.getParameter("caminhoRetornoTelaPesquisaUnidadeOrganizacional"));
}
if (httpServletRequest.getParameter("tipoUnidade") != null &&
!httpServletRequest.getParameter("tipoUnidade").equals("")) {
sessao.setAttribute("tipoUnidade",httpServletRequest.getParameter("tipoUnidade"));
}
if (httpServletRequest.getParameter("tipoConsulta") != null &&
!httpServletRequest.getParameter("tipoConsulta").equals("")) {
if (httpServletRequest.getParameter("tipoConsulta").equals("unidadeSuperior")) {
pesquisarUnidadeOrganizacionalActionForm.setIdUnidadeSuperior(
httpServletRequest.getParameter("idCampoEnviarDados"));
pesquisarUnidadeOrganizacionalActionForm.setDescricaoUnidadeSuperior(
httpServletRequest.getParameter("descricaoCampoEnviarDados"));
httpServletRequest.setAttribute("idUnidadeEncontrada","true");
}else if (httpServletRequest.getParameter("tipoConsulta").equals("localidade")) {
pesquisarUnidadeOrganizacionalActionForm.setIdLocalidade(
httpServletRequest.getParameter("idCampoEnviarDados"));
pesquisarUnidadeOrganizacionalActionForm.setDescricaoLocalidade(
httpServletRequest.getParameter("descricaoCampoEnviarDados"));
httpServletRequest.setAttribute("idLocalidadeEncontrada","true");
}
}
if(httpServletRequest.getParameter("limparForm") != null){
pesquisarUnidadeOrganizacionalActionForm.setUnidadeTipo(ConstantesSistema.NUMERO_NAO_INFORMADO + "");
pesquisarUnidadeOrganizacionalActionForm.setNivelHierarquico("");
pesquisarUnidadeOrganizacionalActionForm.setIdLocalidade("");
pesquisarUnidadeOrganizacionalActionForm.setDescricaoLocalidade("");
pesquisarUnidadeOrganizacionalActionForm.setGerenciaRegional(ConstantesSistema.NUMERO_NAO_INFORMADO + "");
pesquisarUnidadeOrganizacionalActionForm.setDescricao("");
pesquisarUnidadeOrganizacionalActionForm.setSigla("");
pesquisarUnidadeOrganizacionalActionForm.setIdEmpresa(ConstantesSistema.NUMERO_NAO_INFORMADO + "");
pesquisarUnidadeOrganizacionalActionForm.setIdUnidadeSuperior("");
pesquisarUnidadeOrganizacionalActionForm.setDescricaoUnidadeSuperior("");
pesquisarUnidadeOrganizacionalActionForm.setIdUnidadeCentralizadora(ConstantesSistema.NUMERO_NAO_INFORMADO + "");
pesquisarUnidadeOrganizacionalActionForm.setUnidadeEsgoto("3");
pesquisarUnidadeOrganizacionalActionForm.setUnidadeAbreRegistro("3");
pesquisarUnidadeOrganizacionalActionForm.setUnidadeAceita("3");
pesquisarUnidadeOrganizacionalActionForm.setMeioSolicitacao(ConstantesSistema.NUMERO_NAO_INFORMADO + "");
}
this.setaRequest(httpServletRequest,pesquisarUnidadeOrganizacionalActionForm);
if(pesquisarUnidadeOrganizacionalActionForm.getTipoPesquisa() == null){
pesquisarUnidadeOrganizacionalActionForm.setTipoPesquisa(ConstantesSistema.TIPO_PESQUISA_INICIAL.toString());
}
return retorno;
}
private void pesquisarLocalidade(
HttpServletRequest httpServletRequest, ActionForward retorno,
PesquisarUnidadeOrganizacionalActionForm pesquisarUnidadeOrganizacionalActionForm) {
// Filtro para obter o localidade ativo de id informado
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(
new ParametroSimples(FiltroLocalidade.ID,
new Integer(pesquisarUnidadeOrganizacionalActionForm.getIdLocalidade() )));
// Pesquisa de acordo com os par�metros informados no filtro
Collection colecaoLocalidade = Fachada.getInstancia()
.pesquisar(filtroLocalidade,Localidade.class.getName());
// Verifica se a pesquisa retornou algum objeto para a cole��o
if (colecaoLocalidade != null && !colecaoLocalidade.isEmpty()) {
// Obt�m o objeto da cole��o pesquisada
Localidade localidade = (Localidade) Util.retonarObjetoDeColecao(colecaoLocalidade);
// Exibe o c�digo e a descri��o pesquisa na p�gina
httpServletRequest.setAttribute("idLocalidadeEncontrada","true");
pesquisarUnidadeOrganizacionalActionForm.setIdLocalidade(localidade.getId().toString());
pesquisarUnidadeOrganizacionalActionForm.setDescricaoLocalidade(localidade.getDescricao());
} else {
pesquisarUnidadeOrganizacionalActionForm.setDescricaoLocalidade("Localidade inexistente");
pesquisarUnidadeOrganizacionalActionForm.setIdLocalidade("");
}
}
private void pesquisarUnidadeOrganizacional(
HttpServletRequest httpServletRequest, ActionForward retorno,
PesquisarUnidadeOrganizacionalActionForm pesquisarUnidadeOrganizacionalActionForm) {
// Filtro para obter unidade organizacional ativo de id informado
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
String idUnidade = pesquisarUnidadeOrganizacionalActionForm.getIdUnidadeSuperior();
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.ID, idUnidade));
// Pesquisa de acordo com os par�metros informados no filtro
Collection colecaoUnidade = Fachada.getInstancia()
.pesquisar(filtroUnidadeOrganizacional,UnidadeOrganizacional.class.getName());
// Verifica se a pesquisa retornou algum objeto para a cole��o
if (colecaoUnidade != null && !colecaoUnidade.isEmpty()) {
// Obt�m o objeto da cole��o pesquisada
UnidadeOrganizacional unidadeOrganizacional =
(UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidade);
// Exibe o c�digo e a descri��o pesquisa na p�gina
httpServletRequest.setAttribute("idUnidadeSuperiorEncontrada","true");
pesquisarUnidadeOrganizacionalActionForm.setIdUnidadeSuperior(unidadeOrganizacional.getId().toString());
pesquisarUnidadeOrganizacionalActionForm.setDescricaoUnidadeSuperior(unidadeOrganizacional.getDescricao());
} else {
pesquisarUnidadeOrganizacionalActionForm.setDescricaoUnidadeSuperior("Unidade Organizacional inexistente");
pesquisarUnidadeOrganizacionalActionForm.setIdUnidadeSuperior("");
}
}
/**
* Seta os request com os id encontrados
*
* @author Rafael Pinto
* @date 16/08/2006
*/
private void setaRequest(HttpServletRequest httpServletRequest,
PesquisarUnidadeOrganizacionalActionForm pesquisarUnidadeOrganizacionalActionForm){
// Localidade
if(pesquisarUnidadeOrganizacionalActionForm.getIdLocalidade() != null &&
!pesquisarUnidadeOrganizacionalActionForm.getIdLocalidade().equals("") &&
pesquisarUnidadeOrganizacionalActionForm.getDescricaoLocalidade() != null &&
!pesquisarUnidadeOrganizacionalActionForm.getDescricaoLocalidade().equals("")){
httpServletRequest.setAttribute("idLocalidadeEncontrada","true");
}
// Unidade Superior
if(pesquisarUnidadeOrganizacionalActionForm.getIdUnidadeSuperior() != null &&
!pesquisarUnidadeOrganizacionalActionForm.getIdUnidadeSuperior().equals("") &&
pesquisarUnidadeOrganizacionalActionForm.getDescricaoUnidadeSuperior() != null &&
!pesquisarUnidadeOrganizacionalActionForm.getDescricaoUnidadeSuperior().equals("")){
httpServletRequest.setAttribute("idUnidadeEncontrada","true");
}
}
}