package gcom.gui.seguranca.acesso;
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.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 Thiago Ten�rio
* @created 21 de Julho de 2005
*/
public class PesquisarUnidadeEmpresaAction 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("listaUnidadeEmpresaResultado");
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
UnidadeEmpresaActionForm unidadeEmpresaActionForm = (UnidadeEmpresaActionForm) actionForm;
// Recupera os par�metros do form
String idUnidade = unidadeEmpresaActionForm.getCodigoUnidade();
String nomeUnidade = unidadeEmpresaActionForm.getNomeUnidade();
String siglaUnidade = unidadeEmpresaActionForm.getSiglaUnidade();
String nivelHiearquia = unidadeEmpresaActionForm.getNivelHiearquia();
String idUnidadeSuperior = unidadeEmpresaActionForm.getIdUnidadeSuperior();
// filtro para a pesquisa de endereco do cliente
FiltroUnidadeOrganizacional filtroUnidadeEmpresa = new FiltroUnidadeOrganizacional();
filtroUnidadeEmpresa.setCampoOrderBy(FiltroUnidadeOrganizacional.DESCRICAO);
boolean peloMenosUmParametroInformado = false;
// Insere os par�metros informados no filtro
if (idUnidade != null
&& !idUnidade.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeEmpresa.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID, idUnidade));
}
if (nomeUnidade != null && !nomeUnidade.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeEmpresa.adicionarParametro(new ComparacaoTexto(
FiltroUnidadeOrganizacional.DESCRICAO, nomeUnidade));
}
if (siglaUnidade != null && !siglaUnidade.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeEmpresa.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.SIGLA, siglaUnidade));
}
if (nivelHiearquia != null && !nivelHiearquia.equals("" +(ConstantesSistema.NUMERO_NAO_INFORMADO))) {
peloMenosUmParametroInformado = true;
filtroUnidadeEmpresa.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID_UNIDADE_SUPERIOR, nivelHiearquia));
}
if (idUnidadeSuperior != null && !idUnidadeSuperior.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeEmpresa.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID_UNIDADE_SUPERIOR, idUnidadeSuperior));
}
// Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
filtroUnidadeEmpresa
.adicionarCaminhoParaCarregamentoEntidade("empresa");
filtroUnidadeEmpresa
.adicionarCaminhoParaCarregamentoEntidade("unidadeNivel");
Collection colecaoUnidadesEmpresas = null;
// Obt�m a inst�ncia da Fachada
//Fachada fachada = Fachada.getInstancia();
// pesquisa os endere�os do cliente
// colecaoUnidadesEmpresas = fachada
// .pesquisar(filtroUnidadeEmpresa, UnidadeOrganizacional.class.getName());
Map resultado = controlarPaginacao(httpServletRequest, retorno,
filtroUnidadeEmpresa, UnidadeOrganizacional.class.getName());
colecaoUnidadesEmpresas = (Collection) resultado
.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
if (colecaoUnidadesEmpresas == null || colecaoUnidadesEmpresas.isEmpty()) {
// Nenhuma cliente cadastrado
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "unidade empresa");
} else if (colecaoUnidadesEmpresas.size() > ConstantesSistema.NUMERO_MAXIMO_REGISTROS_PESQUISA) {
// Muitos registros encontrados
throw new ActionServletException("atencao.pesquisa.muitosregistros");
} else {
// Coloca a cole��o na sess�o
sessao.setAttribute("colecaoUnidadesEmpresas",
colecaoUnidadesEmpresas);
}
return retorno;
}
}