package gcom.gui.cadastro;
import gcom.cadastro.endereco.Cep;
import gcom.cadastro.endereco.CepTipo;
import gcom.cadastro.endereco.FiltroCep;
import gcom.cadastro.endereco.FiltroCepTipo;
import gcom.cadastro.geografico.Bairro;
import gcom.cadastro.geografico.FiltroBairro;
import gcom.cadastro.geografico.FiltroMunicipio;
import gcom.cadastro.geografico.Municipio;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Date;
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;
/**
* [UC0883] Inserir Cep
*
* @author Vin�cius Medeiros
* @date 10/02/2009
*/
public class InserirCepAction extends GcomAction {
/**
* Este caso de uso permite a inclus�o de um Cep
*
* [UC0883] Inserir Cep
*
*
* @author Vin�cius Medeiros
* @date 10/02/2009
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o caminho de retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
InserirCepActionForm inserirCepActionForm = (InserirCepActionForm) actionForm;
// Mudar isso quando houver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
//Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
String codigo = inserirCepActionForm.getCodigo();
String cepTipo = inserirCepActionForm.getCepTipo();
String municipioId = inserirCepActionForm.getMunicipioId();
String bairro = inserirCepActionForm.getBairro();
String bairroId = inserirCepActionForm.getBairroId();
String logradouro = inserirCepActionForm.getLogradouro();
Cep cep = new Cep();
Collection colecaoPesquisa = null;
// Verifica se o Tipo de CEP foi passado
if (cepTipo != null
&& !cepTipo.equalsIgnoreCase("")) {
FiltroCepTipo filtroCepTipo = new FiltroCepTipo();
filtroCepTipo.adicionarParametro(new ParametroSimples(
FiltroCepTipo.ID, cepTipo));
filtroCepTipo.adicionarParametro(new ParametroSimples(
FiltroCepTipo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Retorna Tipo de CEP
colecaoPesquisa = fachada.pesquisar(filtroCepTipo,
CepTipo.class.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
throw new ActionServletException(
"atencao.cep_tipo_inexistente");
} else {
CepTipo objetoCepTipo = (CepTipo) Util
.retonarObjetoDeColecao(colecaoPesquisa);
cep.setCepTipo(objetoCepTipo);
}
}
// Verifica se o c�digo foi passado
if (!"".equals(codigo)) {
Integer codigoFormatado = new Integer(Util.retirarFormatacaoCEP(inserirCepActionForm.getCodigo()));
cep.setCodigo(new Integer(codigoFormatado));
} else {
throw new ActionServletException("atencao.required", null,
"C�digo");
}
// Verifica se o municipio foi passado
if (municipioId != null
&& !municipioId.equalsIgnoreCase("")) {
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.ID, municipioId));
filtroMunicipio.adicionarCaminhoParaCarregamentoEntidade("unidadeFederacao");
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Retorna Municipio
colecaoPesquisa = fachada.pesquisar(filtroMunicipio,
Municipio.class.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.municipio_inexistente");
} else {
Municipio objetoMunicipio = (Municipio) Util
.retonarObjetoDeColecao(colecaoPesquisa);
cep.setMunicipio(objetoMunicipio.getNome());
cep.setSigla(objetoMunicipio.getUnidadeFederacao().getSigla());
}
}
// Verifica se o bairro foi passado
if (bairroId != null
&& !bairroId.equalsIgnoreCase("")) {
FiltroBairro filtroBairro = new FiltroBairro();
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.CODIGO, bairroId));
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.NOME,bairro));
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Retorna Bairro
colecaoPesquisa = fachada.pesquisar(filtroBairro,
Bairro.class.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.bairro_inexistente");
} else {
Bairro objetoBairro = (Bairro) Util
.retonarObjetoDeColecao(colecaoPesquisa);
cep.setBairro(objetoBairro.getNome());
}
}
if(!"".equals(inserirCepActionForm.getLogradouro())) {
cep.setDescricaoTipoLogradouro(inserirCepActionForm.getLogradouroTipo());
}
cep.setUltimaAlteracao(new Date());
cep.setIndicadorUso(ConstantesSistema.INDICADOR_USO_ATIVO);
if(!"".equals(inserirCepActionForm.getLogradouro())) {
cep.setLogradouro(logradouro);
}
FiltroCep filtroCep = new FiltroCep();
filtroCep.adicionarParametro(
new ParametroSimples(
FiltroCep.CODIGO,
cep.getCodigo()));
colecaoPesquisa =
(Collection) this.getFachada().pesquisar(
filtroCep, Cep.class.getName());
if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) {
// Caso j� haja um CEP com o c�digo passado
throw new ActionServletException("atencao.cep_ja_cadastrado",
null,cep.getCodigo().toString());
} else {
Integer cepId = (Integer) this.getFachada().inserir(cep);
montarPaginaSucesso(httpServletRequest,
"CEP " + codigo + " inserido com sucesso.",
"Inserir outro CEP",
"exibirInserirCepAction.do?menu=sim",
"exibirAtualizarCepAction.do?idRegistroAtualizacao="+ cepId,
"Atualizar CEP Inserido");
sessao.removeAttribute("InserirCepActionForm");
sessao.removeAttribute("colecaoCepTipo");
sessao.removeAttribute("colecaoLogradouroTipo");
sessao.removeAttribute("colecaoUnidadeFederacao");
sessao.removeAttribute("colecaoCep");
sessao.removeAttribute("colecaoCep2");
return retorno;
}
}
}