package gcom.gui.operacional.abastecimento;
import gcom.cadastro.geografico.Bairro;
import gcom.cadastro.geografico.BairroArea;
import gcom.cadastro.geografico.FiltroBairro;
import gcom.cadastro.geografico.FiltroBairroArea;
import gcom.cadastro.geografico.FiltroMunicipio;
import gcom.cadastro.geografico.Municipio;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* [UC0414] - Informar Programa��o de Abastecimento e Manuten��o
*
* [SB0008] - Copiar Programa��o de Abastecimento
*
* @author Rafael Pinto
*
* @date 30/11/2006
*/
public class ExibirCopiarProgramacaoAbastecimentoManutencaoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("copiarProgramacaoAbastecimentoManutencao");
InformarProgramacaoAbastecimentoManutencaoActionForm form =
(InformarProgramacaoAbastecimentoManutencaoActionForm) actionForm;
String tipoOperacao = httpServletRequest.getParameter("tipoOperacao");
if(tipoOperacao != null && !tipoOperacao.equals("") && tipoOperacao.equals("C")){
String mesAnoReferencia = form.getMesAnoReferencia();
String idMunicipio = form.getMunicipioCopiar();
String idBairro = form.getBairroCopiar();
String areaBairro = form.getAreaBairroCopiar();
Collection colecaoProgramacaoAbastecimento =
this.getFachada().consultarProgramacaoAbastecimento(idMunicipio,
idBairro,areaBairro, mesAnoReferencia);
if(colecaoProgramacaoAbastecimento == null || colecaoProgramacaoAbastecimento.isEmpty()){
this.pesquisarAreaBairro(new Integer(areaBairro),form);
String[] msg = new String[2];
msg[0] = form.getNomeAreaBairroCopiar();
msg[1] = form.getMesAnoReferencia();
throw new ActionServletException("atencao.ja_existe_programacao_abastecimento_na_area",
null,msg);
}
form.setAbastecimentoProgramacao(colecaoProgramacaoAbastecimento);
httpServletRequest.setAttribute("fechaPopup", "true");
}else{
// Flag indicando que o usu�rio fez uma consulta a partir da tecla Enter
String objetoConsulta = httpServletRequest.getParameter("objetoConsulta");
String tipoConsulta = httpServletRequest.getParameter("tipoConsulta");
//[UC0075] - Pesquisar Municipio
if (objetoConsulta != null && !objetoConsulta.trim().equals("") &&
objetoConsulta.trim().equals("1")) {
// Faz a consulta de Municipio
this.pesquisarMunicipio(form);
//[UC0141] - Pesquisar Bairro
}else if (objetoConsulta != null && !objetoConsulta.trim().equals("") &&
objetoConsulta.trim().equals("2")) {
// Faz a consulta de Documento Cobran�a
this.pesquisarBairro(form,httpServletRequest);
}else if (tipoConsulta != null && !tipoConsulta.equals("")) {
String idCampoEnviarDados = httpServletRequest.getParameter("idCampoEnviarDados");
String descricaoCampoEnviarDados = httpServletRequest.getParameter("descricaoCampoEnviarDados");
if (tipoConsulta.equals("municipio")) {
form.setMunicipioCopiar(idCampoEnviarDados);
form.setNomeMunicipioCopiar(descricaoCampoEnviarDados);
form.setBairroCopiar(null);
form.setNomeBairroCopiar(null);
form.setAreaBairroCopiar(null);
form.setNomeAreaBairroCopiar(null);
}else if (tipoConsulta.equals("bairro")) {
form.setBairroCopiar(idCampoEnviarDados);
form.setNomeBairroCopiar(descricaoCampoEnviarDados);
this.montarAreaBairroPorId(httpServletRequest,new Integer(idCampoEnviarDados));
}
}else{
this.resetPopup(form);
}
this.setaRequest(httpServletRequest,form);
}
return retorno;
}
/**
* Reseta informa��es vindas do popup
*
* @author Rafael Pinto
* @date 14/11/2006
*
* @param InformarProgramacaoAbastecimentoManutencaoActionForm
*/
private void resetPopup(InformarProgramacaoAbastecimentoManutencaoActionForm form) {
form.setMunicipioCopiar(null);
form.setNomeMunicipioCopiar(null);
form.setBairroCopiar(null);
form.setNomeBairroCopiar(null);
form.setAreaBairroCopiar(null);
form.setNomeAreaBairroCopiar(null);
}
/**
* [UC0075] - Pesquisar Municipio
*
* [FS0001] - Verificar exist�ncia do munic�pio
*
* @author Rafael Pinto
* @date 13/11/2006
*/
private void pesquisarMunicipio(InformarProgramacaoAbastecimentoManutencaoActionForm form) {
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
filtroMunicipio.adicionarParametro(
new ParametroSimples(FiltroMunicipio.ID,new Integer(form.getMunicipioCopiar())));
filtroMunicipio.adicionarParametro(
new ParametroSimples(FiltroMunicipio.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO));
// Pesquisa de acordo com os par�metros informados no filtro
Collection colecaoMunicipio =
this.getFachada().pesquisar(filtroMunicipio,Municipio.class.getName());
// Verifica se a pesquisa retornou algum objeto para a cole��o
if (colecaoMunicipio != null && !colecaoMunicipio.isEmpty()) {
// Obt�m o objeto da cole��o pesquisada
Municipio municipio =
(Municipio) Util.retonarObjetoDeColecao(colecaoMunicipio);
form.setMunicipioCopiar(municipio.getId().toString());
form.setNomeMunicipioCopiar(municipio.getNome());
} else {
form.setMunicipioCopiar(null);
form.setNomeMunicipioCopiar("Munic�pio inexistente");
}
}
/**
* [UC0075] - Pesquisar Bairro
*
* [FS0002] - Verificar informa��o do municipio
* [FS0003] - Verificar exist�ncia do bairro
*
* @author Rafael Pinto
* @date 13/11/2006
*/
private void pesquisarBairro(InformarProgramacaoAbastecimentoManutencaoActionForm form,
HttpServletRequest httpServletRequest) {
//[FS0002] - Verificar informa��o do municipio
String codigoMunicipio = form.getMunicipioCopiar();
if(codigoMunicipio == null || codigoMunicipio.equals("")){
throw new ActionServletException("atencao.filtrar_informar_municipio");
}
FiltroBairro filtroBairro = new FiltroBairro();
filtroBairro.adicionarParametro(
new ParametroSimples(FiltroBairro.CODIGO,new Integer(form.getBairroCopiar())));
filtroBairro.adicionarParametro(
new ParametroSimples(FiltroBairro.MUNICIPIO_ID,new Integer(codigoMunicipio)));
filtroBairro.adicionarParametro(
new ParametroSimples(FiltroBairro.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO));
// Pesquisa de acordo com os par�metros informados no filtro
Collection colecaoBairro =
this.getFachada().pesquisar(filtroBairro,Bairro.class.getName());
// Verifica se a pesquisa retornou algum objeto para a cole��o
if (colecaoBairro != null && !colecaoBairro.isEmpty()) {
// Obt�m o objeto da cole��o pesquisada
Bairro bairro =
(Bairro) Util.retonarObjetoDeColecao(colecaoBairro);
this.montarAreaBairroPorId(httpServletRequest,new Integer(bairro.getId()));
form.setBairroCopiar(""+bairro.getCodigo());
form.setNomeBairroCopiar(bairro.getNome());
} else {
form.setBairroCopiar(null);
form.setNomeBairroCopiar("Bairro inexistente");
}
}
/**
* Pesquisa Area do Bairro pelo Id
*
* @author Rafael Pinto
* @date 13/11/2006
*/
private void montarAreaBairroPorId(HttpServletRequest request,Integer id){
// Parte que passa as cole��es necess�rias no jsp
Collection colecaoAreaBairro = new ArrayList();
FiltroBairroArea filtroBairroArea = new FiltroBairroArea();
filtroBairroArea.adicionarParametro(new ParametroSimples(FiltroBairroArea.ID_BAIRRO,id));
colecaoAreaBairro =
this.getFachada().pesquisar(filtroBairroArea, BairroArea.class.getName());
if (colecaoAreaBairro != null && !colecaoAreaBairro.isEmpty()) {
request.setAttribute("colecaoAreaBairroCopiar", colecaoAreaBairro);
} else {
throw new ActionServletException("atencao.naocadastrado", null,"�rea do Bairro");
}
}
/**
* Seta os request com os id encontrados
*
* @author Rafael Pinto
* @date 01/12/2006
*/
private void setaRequest(HttpServletRequest httpServletRequest,
InformarProgramacaoAbastecimentoManutencaoActionForm form){
//Municipio
if(form.getMunicipioCopiar() != null &&
!form.getMunicipioCopiar().equals("") &&
form.getNomeMunicipioCopiar() != null &&
!form.getNomeMunicipioCopiar().equals("")){
httpServletRequest.setAttribute("municipioEncontrado","true");
}
//Bairro
if(form.getBairroCopiar() != null && !form.getBairroCopiar().equals("") &&
form.getNomeBairroCopiar() != null && !form.getNomeBairroCopiar().equals("")){
httpServletRequest.setAttribute("bairroEncontrado","true");
}
}
/**
* Pesquisa Area do Bairro pelo Id
*
* @author Rafael Pinto
* @date 13/11/2006
*/
private void pesquisarAreaBairro(Integer idArea,InformarProgramacaoAbastecimentoManutencaoActionForm form){
// Parte que passa as cole��es necess�rias no jsp
Collection colecaoAreaBairro = new ArrayList();
FiltroBairroArea filtroBairroArea = new FiltroBairroArea();
filtroBairroArea.adicionarParametro(new ParametroSimples(FiltroBairroArea.ID,idArea));
colecaoAreaBairro =
this.getFachada().pesquisar(filtroBairroArea, BairroArea.class.getName());
if (colecaoAreaBairro != null && !colecaoAreaBairro.isEmpty()) {
BairroArea bairroArea =
(BairroArea) Util.retonarObjetoDeColecao(colecaoAreaBairro);
form.setNomeAreaBairroCopiar(bairroArea.getNome());
} else {
throw new ActionServletException("atencao.naocadastrado", null,"�rea do Bairro");
}
}
}