package gcom.gui.cadastro.unidade;
import gcom.cadastro.unidade.FiltroUnidadeOrganizacional;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ComparacaoTexto;
import gcom.util.filtro.ComparacaoTextoCompleto;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Map;
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;
/**
* @author Rafael Pinto
*
* @created 26/07/2006
*/
public class PesquisarUnidadeOrganizacionalAction 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) {
ActionForward retorno = actionMapping.findForward("listaUnidadeOrganizacionalResultado");
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
PesquisarUnidadeOrganizacionalActionForm pesquisarUnidadeOrganizacionalActionForm
= (PesquisarUnidadeOrganizacionalActionForm) actionForm;
String tipoUnidade = (String) sessao.getAttribute("tipoUnidade");
String indicadorTramite = (String) sessao.getAttribute("indicadorTramite");
// Recupera os par�metros do form
String unidadeTipo = pesquisarUnidadeOrganizacionalActionForm.getUnidadeTipo();
String nivel = pesquisarUnidadeOrganizacionalActionForm.getNivelHierarquico();
String localidade = pesquisarUnidadeOrganizacionalActionForm.getIdLocalidade();
String gerenciaRegional = pesquisarUnidadeOrganizacionalActionForm.getGerenciaRegional();
String descricao = pesquisarUnidadeOrganizacionalActionForm.getDescricao();
String sigla = pesquisarUnidadeOrganizacionalActionForm.getSigla();
String empresa = pesquisarUnidadeOrganizacionalActionForm.getIdEmpresa();
String unidadeSuperior = pesquisarUnidadeOrganizacionalActionForm.getIdUnidadeSuperior();
String unidadeCentralizadora = pesquisarUnidadeOrganizacionalActionForm.getIdUnidadeCentralizadora();
String meioSolicitacao = pesquisarUnidadeOrganizacionalActionForm.getMeioSolicitacao();
String unidadeEsgoto = pesquisarUnidadeOrganizacionalActionForm.getUnidadeEsgoto();
String unidadeAbreRegistro = pesquisarUnidadeOrganizacionalActionForm.getUnidadeAbreRegistro();
String unidadeAceita = pesquisarUnidadeOrganizacionalActionForm.getUnidadeAceita();
String tipoPesquisa = pesquisarUnidadeOrganizacionalActionForm.getTipoPesquisa();
// filtro para a pesquisa da unidade organizacional
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional.setCampoOrderBy(FiltroUnidadeOrganizacional.DESCRICAO);
boolean peloMenosUmParametroInformado = false;
// Insere os par�metros informados no filtro
if ( tipoUnidade != null && !tipoUnidade.equals("") ) {
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.UNIDADE_TIPO_CODIGO, tipoUnidade));
}else {
if (unidadeTipo != null && !unidadeTipo.trim().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.ID_UNIDADE_TIPO, unidadeTipo));
}
}
if(indicadorTramite != null && indicadorTramite.equals("1")){
filtroUnidadeOrganizacional.adicionarParametro( new ParametroSimples(
FiltroUnidadeOrganizacional.INDICADOR_TRAMITE, ConstantesSistema.SIM));
}
if (nivel != null && !nivel.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.UNIDADE_TIPO_NIVEL, nivel));
}
if (localidade != null && !localidade.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.ID_LOCALIDADE, localidade));
}
if (gerenciaRegional != null &&
!gerenciaRegional.trim().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.GERENCIAL_REGIONAL, gerenciaRegional));
}
if (descricao != null && !descricao.equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (tipoPesquisa != null &&
tipoPesquisa.equals(ConstantesSistema.TIPO_PESQUISA_COMPLETA.toString())) {
filtroUnidadeOrganizacional.adicionarParametro(
new ComparacaoTextoCompleto(FiltroUnidadeOrganizacional.DESCRICAO, descricao));
} else {
filtroUnidadeOrganizacional.adicionarParametro(
new ComparacaoTexto(FiltroUnidadeOrganizacional.DESCRICAO, descricao));
}
}
if (sigla != null && !sigla.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.SIGLA, sigla));
}
if (empresa != null && !empresa.trim().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.EMPRESA, empresa));
}
if (unidadeSuperior != null && !unidadeSuperior.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.ID_UNIDADE_SUPERIOR, unidadeSuperior));
}
if (unidadeCentralizadora != null &&
!unidadeCentralizadora.trim().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.ID_UNIDADE_CENTRALIZADORA,
unidadeCentralizadora));
}
if (unidadeEsgoto != null && !unidadeEsgoto.trim().equals("") && !unidadeEsgoto.trim().equals("3")) {
peloMenosUmParametroInformado = true;
if(!unidadeEsgoto.trim().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO)){
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.INDICADOR_ESGOTO,unidadeEsgoto));
}
}
if (unidadeAbreRegistro != null && !unidadeAbreRegistro.trim().equals("") && !unidadeAbreRegistro.trim().equals("3")) {
peloMenosUmParametroInformado = true;
if(!unidadeAbreRegistro.trim().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO)){
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.INDICADOR_ABERTURA_RA,unidadeAbreRegistro));
}
}
if (unidadeAceita != null && !unidadeAceita.trim().equals("") && !unidadeAceita.trim().equals("3")) {
peloMenosUmParametroInformado = true;
if(!unidadeAceita.trim().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO)){
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.INDICADOR_TRAMITE,unidadeAceita));
}
}
if (meioSolicitacao != null &&
!meioSolicitacao.trim().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
filtroUnidadeOrganizacional.adicionarParametro(
new ParametroSimples(FiltroUnidadeOrganizacional.MEIO_SOLICITACAO, meioSolicitacao));
}
// Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
// adiciona as depend�ncias para serem mostradas na p�gina
filtroUnidadeOrganizacional.adicionarCaminhoParaCarregamentoEntidade("unidadeTipo");
Collection colecaoUnidadeOrganizacional = null;
// Aciona o controle de pagina��o para que sejam pesquisados apenas
// os registros que aparecem na p�gina
Map resultado = controlarPaginacao(httpServletRequest, retorno,
filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
colecaoUnidadeOrganizacional = (Collection) resultado.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
// Coloca a cole��o na sess�o
sessao.setAttribute("colecaoUnidadeOrganizacional",colecaoUnidadeOrganizacional);
if(resultado.isEmpty()){
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "unidade organizacional");
}
/*colecaoUnidadeOrganizacional =
fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
if (colecaoUnidadeOrganizacional == null || colecaoUnidadeOrganizacional.isEmpty()) {
// Nenhuma cliente cadastrado
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "unidade organizacional");
//} else if (colecaoUnidadeOrganizacional.size() > ConstantesSistema.NUMERO_MAXIMO_REGISTROS_PESQUISA) {
// Muitos registros encontrados
//throw new ActionServletException("atencao.pesquisa.muitosregistros");
} else {
// Aciona o controle de pagina��o para que sejam pesquisados apenas
// os registros que aparecem na p�gina
Map resultado = controlarPaginacao(httpServletRequest, retorno,
filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
colecaoUnidadeOrganizacional = (Collection) resultado.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
// Coloca a cole��o na sess�o
sessao.setAttribute("colecaoUnidadeOrganizacional",colecaoUnidadeOrganizacional);
}*/
return retorno;
}
}