package gcom.gui.micromedicao;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.SetorComercial;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
import gcom.micromedicao.FiltroRota;
import gcom.micromedicao.Rota;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.List;
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;
/**
* [UC1000] Informar Medidor de Energia por Rota
*
* @author Hugo Leonardo
*
* @date 10/03/2010
*
*/
public class ExibirInformarMedidorEnergiaRotaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("filtrarColetaMedidorEnergia");
// Cria a sess�o
HttpSession sessao = httpServletRequest.getSession(false);
String tela = null;
String codigoSetorComercial = null;
String idLocalidade = null;
FiltrarColetaMedidorEnergiaActionForm form = (FiltrarColetaMedidorEnergiaActionForm) actionForm;
if (httpServletRequest.getParameter("tela") != null) {
tela = httpServletRequest.getParameter("tela");
sessao.setAttribute("tela", tela);
} else {
if (sessao.getAttribute("tela") != null) {
tela = (String) sessao.getAttribute("tela");
}
}
// atribui os valores q vem pelo request as variaveis
codigoSetorComercial = (String) form.getCodigoSetorComercial();
idLocalidade = (String) form.getIdLocalidade();
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
// seta o parametro para o controle de acesso a fucionalidade ou
// opera��o
httpServletRequest.setAttribute("tela", tela);
// Pega os codigos que o usuario digitou para a pesquisa direta
String objetoConsulta = (String) httpServletRequest
.getParameter("objetoConsulta");
form.setTipo("1");
if (objetoConsulta != null
&& !objetoConsulta.trim().equalsIgnoreCase("")) {
switch (Integer.parseInt(objetoConsulta)) {
// pesquisar Localidade
case 1:
pesquisarLocalidade(httpServletRequest, form);
break;
// pesquisar setor comercial
case 2:
if ((codigoSetorComercial != null && !codigoSetorComercial
.toString().trim().equalsIgnoreCase(""))
&& (idLocalidade != null && !idLocalidade.toString()
.trim().equalsIgnoreCase(""))) {
this.pesquisarSetorComercial(httpServletRequest, form, fachada, idLocalidade,
codigoSetorComercial);
}
break;
// pesquisar Rota
default:
pesquisarRota(httpServletRequest, form);
break;
}
}
return retorno;
}
private void pesquisarSetorComercial(HttpServletRequest httpServletRequest,
FiltrarColetaMedidorEnergiaActionForm form, Fachada fachada,
String idLocalidade, String codigoSetorComercial) {
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
if (idLocalidade != null
&& !idLocalidade.toString().trim()
.equalsIgnoreCase("")) {
// coloca parametro no filtro
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE, new Integer(
idLocalidade)));
}
filtroSetorComercial
.adicionarCaminhoParaCarregamentoEntidade("municipio");
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, new Integer(
codigoSetorComercial)));
// pesquisa
Collection setorComerciais = fachada.pesquisar(filtroSetorComercial,
SetorComercial.class.getName());
if (setorComerciais != null && !setorComerciais.isEmpty()) {
// O cliente foi encontrado
form.setCodigoSetorComercial(""
+ ((SetorComercial) ((List) setorComerciais).get(0))
.getCodigo());
form.setSetorComercialDescricao(((SetorComercial) ((List) setorComerciais)
.get(0)).getDescricao());
form.setSetorComercialNaoEncontrado("true");
} else {
form.setCodigoSetorComercial("");
form.setSetorComercialNaoEncontrado("exception");
form.setSetorComercialDescricao("Setor Comercial inexistente");
}
}
private void pesquisarLocalidade(HttpServletRequest httpServletRequest,
FiltrarColetaMedidorEnergiaActionForm form) {
Object local = form.getIdLocalidade();
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, local));
// Recupera Localidade
Collection colecaoLocalidade = this.getFachada().pesquisar(
filtroLocalidade, Localidade.class.getName());
if (colecaoLocalidade != null && !colecaoLocalidade.isEmpty()) {
Localidade localidade = (Localidade) Util
.retonarObjetoDeColecao(colecaoLocalidade);
form.setIdLocalidade(localidade.getId().toString());
form.setLocalidadeDescricao(localidade.getDescricao());
form.setLocalidadeNaoEncontrada("true");
} else {
form.setIdLocalidade(null);
form.setLocalidadeDescricao("Localidade inexistente");
form.setLocalidadeNaoEncontrada("exception");
}
}
private void pesquisarRota(HttpServletRequest httpServletRequest,
FiltrarColetaMedidorEnergiaActionForm form) {
String idRota = form.getRota();
if (idRota != null && !idRota.trim().equals("")) {
FiltroRota filtroRota = new FiltroRota();
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.ID_ROTA, form.getRota()));
Collection colecaoRotas = this.getFachada().pesquisar(filtroRota,
Rota.class.getName());
if (colecaoRotas != null && !colecaoRotas.isEmpty()) {
Rota rota = (Rota) Util.retonarObjetoDeColecao(colecaoRotas);
form.setRota(rota.getId().toString());
}
} else {
form.setRota(null);
}
}
}