package gcom.gui.faturamento;
import gcom.cadastro.localidade.FiltroGerenciaRegional;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.SetorComercial;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.FiltroRota;
import gcom.micromedicao.Rota;
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;
import org.apache.struts.validator.DynaValidatorForm;
public class ExibirSelecionarRotaAction extends GcomAction {
private String localidadeID;
private Collection colecaoPesquisa;
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o retorno
ActionForward retorno = actionMapping
.findForward("exibirSelecionarRota");
//Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
//Obt�m a sess�o
HttpSession sessao = httpServletRequest.getSession(false);
//Formul�rio de pesquisa
DynaValidatorForm pesquisarActionForm = (DynaValidatorForm) actionForm;
Integer grupoSelecionado = (Integer) sessao.getAttribute("faturamentoGrupoId");
//Limpar formul�rio, caso necess�rio
if (httpServletRequest.getParameter("limparForm") != null){
pesquisarActionForm.set("idGrupoFaturamento", String
.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO));
pesquisarActionForm.set("idGerenciaRegional", String
.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO));
pesquisarActionForm.set("idLocalidade", "");
pesquisarActionForm.set("descricaoLocalidade", "");
pesquisarActionForm.set("numeroSetorComercial", "");
pesquisarActionForm.set("descricaoSetorComercial", "");
pesquisarActionForm.set("idRota", "");
pesquisarActionForm.set("descricaoRota", "");
//Retira da sess�o a cole��o de rotas que foi selecionada anteriormente
sessao.removeAttribute("colecaoRotasSelecionadas");
}
//Grupo de faturamento (Carregar cole��o)
sessao.removeAttribute("colecaoGrupoFaturamento");
Collection colecaoFaturamentoGrupo = fachada.
pesquisarFaturamentoGrupoComCronogramaMensalParaMesCorrenteSemGupoSelecionado(
grupoSelecionado);
sessao.setAttribute("colecaoGrupoFaturamento", colecaoFaturamentoGrupo);
/*if (sessao.getAttribute("colecaoGrupoFaturamento") == null) {
Collection colecaoFaturamentoGrupo;
FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo(
FiltroFaturamentoGrupo.DESCRICAO);
filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples(
FiltroFaturamentoGrupo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroFaturamentoGrupo.adicionarParametro(new ParametroSimplesDiferenteDe(
FiltroFaturamentoGrupo.ID,grupo));
colecaoFaturamentoGrupo = fachada.pesquisar(filtroFaturamentoGrupo,
FaturamentoGrupo.class.getName());
if (colecaoFaturamentoGrupo == null
|| colecaoFaturamentoGrupo.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.nenhum_registro_tabela", null,
"FATURAMENTO_GRUPO");
} else {
sessao.setAttribute("colecaoGrupoFaturamento",
colecaoFaturamentoGrupo);
}
}*/
//Gerencia Regional (Carregar cole��o)
if (sessao.getAttribute("colecaoGerenciaRegional") == null) {
Collection colecaoGerenciaRegional;
FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional(
FiltroGerenciaRegional.NOME_ABREVIADO);
filtroGerenciaRegional.adicionarParametro(new ParametroSimples(
FiltroGerenciaRegional.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
colecaoGerenciaRegional = fachada.pesquisar(filtroGerenciaRegional,
GerenciaRegional.class.getName());
if (colecaoGerenciaRegional == null
|| colecaoGerenciaRegional.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.nenhum_registro_tabela", null,
"GERENCIA_REGIONAL");
} else {
sessao.setAttribute("colecaoGerenciaRegional",
colecaoGerenciaRegional);
}
}
String objetoConsulta = (String) httpServletRequest
.getParameter("objetoConsulta");
if (objetoConsulta != null
&& !objetoConsulta.trim().equalsIgnoreCase("")) {
//Recebe o valor do campo idLocalidade do formul�rio.
if (pesquisarActionForm.get("idLocalidade") != null) {
localidadeID = (String) pesquisarActionForm.get("idLocalidade");
}
switch (Integer.parseInt(objetoConsulta)) {
//Localidade
case 1:
pesquisarLocalidade(pesquisarActionForm, fachada,
httpServletRequest);
break;
//Setor Comercial
case 2:
pesquisarLocalidade(pesquisarActionForm, fachada,
httpServletRequest);
pesquisarSetorComercial(pesquisarActionForm, fachada,
httpServletRequest);
break;
//Rota
case 3:
pesquisarLocalidade(pesquisarActionForm, fachada,
httpServletRequest);
SetorComercial setorComercial = pesquisarSetorComercial(pesquisarActionForm,
fachada, httpServletRequest);
if (setorComercial != null){
pesquisarRota(pesquisarActionForm, fachada, httpServletRequest, setorComercial);
}
else{
pesquisarActionForm.set("idRota", "");
pesquisarActionForm.set("descricaoRota", "Informe Setor Comercial");
httpServletRequest.setAttribute("corRotaMensagem", "exception");
httpServletRequest.setAttribute("nomeCampo", "numeroSetorComercial");
}
break;
default:
break;
}
}
//Tratamento dos registros retornados por um popup
//Tipo de consulta retonada pelo popup
if (httpServletRequest.getParameter("tipoConsulta") != null){
String tipoConsulta = (String) httpServletRequest.getParameter("tipoConsulta");
//Define onde ser� exibido os dados retornados pela consulta realizada pelo popup
if (tipoConsulta.equalsIgnoreCase("localidade")){
pesquisarActionForm.set("idLocalidade", String.valueOf(httpServletRequest
.getParameter("idCampoEnviarDados")));
pesquisarActionForm.set("descricaoLocalidade", String.valueOf(httpServletRequest
.getParameter("descricaoCampoEnviarDados")));
}
else{
pesquisarActionForm.set("numeroSetorComercial", String.valueOf(httpServletRequest
.getParameter("idCampoEnviarDados")));
pesquisarActionForm.set("descricaoSetorComercial", String.valueOf(httpServletRequest
.getParameter("descricaoCampoEnviarDados")));
}
}
//devolve o mapeamento de retorno
return retorno;
}
/**
*
* @param pesquisarActionForm
* @param fachada
* @param httpServletRequest
*/
private void pesquisarLocalidade(DynaValidatorForm pesquisarActionForm,
Fachada fachada, HttpServletRequest httpServletRequest) {
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, localidadeID));
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
//Retorna localidade
colecaoPesquisa = fachada.pesquisar(filtroLocalidade, Localidade.class
.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
//Localidade nao encontrada
//Limpa os campos localidadeID e localidadeNome do formul�rio
httpServletRequest.setAttribute("corLocalidade", "exception");
pesquisarActionForm.set("idLocalidade", "");
pesquisarActionForm.set("descricaoLocalidade",
"Localidade inexistente");
httpServletRequest.setAttribute("nomeCampo", "idLocalidade");
} else {
Localidade objetoLocalidade = (Localidade) Util
.retonarObjetoDeColecao(colecaoPesquisa);
pesquisarActionForm.set("idLocalidade", String
.valueOf(objetoLocalidade.getId()));
pesquisarActionForm.set("descricaoLocalidade", objetoLocalidade
.getDescricao());
httpServletRequest.setAttribute("corLocalidade", "valor");
httpServletRequest.setAttribute("nomeCampo", "numeroSetorComercial");
}
}
/**
*
* @param pesquisarActionForm
* @param fachada
* @param httpServletRequest
*/
private SetorComercial pesquisarSetorComercial(DynaValidatorForm pesquisarActionForm,
Fachada fachada, HttpServletRequest httpServletRequest) {
SetorComercial objetoSetorComercial = null;
if (localidadeID == null || localidadeID.trim().equalsIgnoreCase("")) {
//Limpa os campos numeroSetorComercial e idSetorComercial do
// formulario
pesquisarActionForm.set("numeroSetorComercial", "");
pesquisarActionForm.set("idSetorComercial", "");
pesquisarActionForm.set("descricaoSetorComercial",
"Informe a localidade.");
httpServletRequest.setAttribute("corSetorComercial", "exception");
httpServletRequest.setAttribute("nomeCampo", "idLocalidade");
} else {
//Recebe o valor do campo numeroSetorComercial do formul�rio.
String setorComercialCD = (String) pesquisarActionForm
.get("numeroSetorComercial");
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE, localidadeID));
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,
setorComercialCD));
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
//Retorna setorComercial
colecaoPesquisa = fachada.pesquisar(filtroSetorComercial,
SetorComercial.class.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
//setorComercial nao encontrado
//Limpa os campos numeroSetorComercial e idSetorComercial do
// formulario
pesquisarActionForm.set("numeroSetorComercial", "");
pesquisarActionForm.set("idSetorComercial", "");
pesquisarActionForm.set("descricaoSetorComercial",
"Setor comercial inexistente.");
httpServletRequest.setAttribute("corSetorComercial",
"exception");
httpServletRequest.setAttribute("nomeCampo", "numeroSetorComercial");
} else {
objetoSetorComercial = (SetorComercial) Util
.retonarObjetoDeColecao(colecaoPesquisa);
pesquisarActionForm.set("numeroSetorComercial", String
.valueOf(objetoSetorComercial.getCodigo()));
pesquisarActionForm.set("idSetorComercial", String
.valueOf(objetoSetorComercial.getId()));
pesquisarActionForm.set("descricaoSetorComercial",
objetoSetorComercial.getDescricao());
httpServletRequest.setAttribute("corSetorComercial", "valor");
httpServletRequest.setAttribute("nomeCampo", "idRota");
}
}
return objetoSetorComercial;
}
/**
*
* @param pesquisarActionForm
* @param fachada
* @param httpServletRequest
*/
private Rota pesquisarRota(DynaValidatorForm pesquisarActionForm,
Fachada fachada, HttpServletRequest httpServletRequest, SetorComercial setorComercial) {
Rota objetoRota = null;
if (setorComercial == null) {
pesquisarActionForm.set("idRota", "");
pesquisarActionForm.set("descricaoRota", "Informe Setor Comercial");
httpServletRequest.setAttribute("corRotaMensagem", "exception");
httpServletRequest.setAttribute("nomeCampo", "numeroSetorComercial");
} else {
//Recebe o valor do campo rotaID do formul�rio.
String rotaCodigo = (String) pesquisarActionForm.get("idRota");
FiltroRota filtroRota = new FiltroRota();
//Objetos que ser�o retornados pelo hibernate.
filtroRota.adicionarCaminhoParaCarregamentoEntidade("leituraTipo");
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.SETOR_COMERCIAL_ID, setorComercial.getId()));
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.CODIGO_ROTA, rotaCodigo));
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
//Retorna Rota
colecaoPesquisa = fachada.pesquisar(filtroRota, Rota.class
.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
//Rota nao encontrada
//Limpa o campo idRota do formul�rio
pesquisarActionForm.set("idRota", "");
pesquisarActionForm.set("descricaoRota",
"Rota inexistente.");
httpServletRequest.setAttribute("corRotaMensagem",
"exception");
httpServletRequest.setAttribute("nomeCampo", "idRota");
} else {
objetoRota = (Rota) Util
.retonarObjetoDeColecao(colecaoPesquisa);
pesquisarActionForm.set("idRota", String.valueOf(objetoRota
.getCodigo()));
pesquisarActionForm.set("descricaoRota", objetoRota
.getLeituraTipo().getDescricao());
httpServletRequest.setAttribute("corRotaMensagem", "valor");
httpServletRequest.setAttribute("nomeCampo", "botaoSelecionar");
}
}
return objetoRota;
}
}