package gcom.gui.cadastro.endereco;
import gcom.cadastro.endereco.FiltroLogradouro;
import gcom.cadastro.endereco.Logradouro;
import gcom.cadastro.endereco.LogradouroTipo;
import gcom.cadastro.endereco.LogradouroTitulo;
import gcom.cadastro.geografico.FiltroMunicipio;
import gcom.cadastro.geografico.Municipio;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.interceptor.RegistradorOperacao;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.acesso.usuario.UsuarioAcao;
import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroNulo;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Date;
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;
/**
* Action respons�vel pela inser��o do logradouro
*
* @author S�vio Luiz, Raphael Rossiter
* @created 15 de Julho de 2005
*/
public class InserirLogradouroAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
LogradouroActionForm logradouroActionForm = (LogradouroActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
// Recupera a vari�vel para indicar se o usu�rio apertou o bot�o de
// confirmar da tela de
// confirma��o do wizard
String confirmado = httpServletRequest.getParameter("confirmado");
RegistradorOperacao registradorOperacao = new RegistradorOperacao(
Operacao.OPERACAO_LOGRADOURO_INSERIR,
new UsuarioAcaoUsuarioHelper(usuario,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
/*
* [UC0107] Registrar Transa��o Operacao operacao = new Operacao();
* operacao.setId(Operacao.OPERACAO_LOGRADOURO_INSERIR);
*
* OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
* operacaoEfetuada.setOperacao(operacao);
*/
// Bairro bairro = null;
Municipio municipio = null;
String idMunicipio = (String) logradouroActionForm.getIdMunicipio();
// String codigoBairro = (String)
// logradouroActionForm.getCodigoBairro();
if (idMunicipio != null && !idMunicipio.trim().equals("")
&& Integer.parseInt(idMunicipio) > 0) {
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.ID, idMunicipio));
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection municipioEncontrado = fachada.pesquisar(filtroMunicipio,
Municipio.class.getName());
if (municipioEncontrado != null && !municipioEncontrado.isEmpty()) {
municipio = ((Municipio) ((List) municipioEncontrado).get(0));
} else {
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "munic�pio");
}
}
// Verifica se o c�digo foi digitado
/*
* if (codigoBairro != null && !codigoBairro.trim().equals("") &&
* Integer.parseInt(codigoBairro) > 0) { FiltroBairro filtroBairro = new
* FiltroBairro();
*
* filtroBairro.adicionarParametro(new ParametroSimples(
* FiltroBairro.CODIGO, codigoBairro));
* filtroBairro.adicionarParametro(new ParametroSimples(
* FiltroBairro.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
* // verifica se o bairro pesquisado � de um municipio existente if
* (idMunicipio != null && !idMunicipio.trim().equals("") &&
* Integer.parseInt(idMunicipio) > 0) {
*
* filtroBairro.adicionarParametro(new ParametroSimples(
* FiltroBairro.MUNICIPIO_ID, idMunicipio)); }
*
* Collection bairroEncontrado = fachada.pesquisar(filtroBairro,
* Bairro.class.getName());
*
* if (bairroEncontrado != null && !bairroEncontrado.isEmpty()) { //O
* bairro foi encontrado bairro = ((Bairro) ((List)
* bairroEncontrado).get(0));
* } else { throw new ActionServletException(
* "atencao.pesquisa.nenhumresultado", null, "bairro"); } }
*/
LogradouroTipo logradouroTipo = new LogradouroTipo();
if (logradouroActionForm.getIdTipo() != null
&& !logradouroActionForm.getIdTipo().equals(0)) {
logradouroTipo.setId(new Integer(""
+ logradouroActionForm.getIdTipo()));
} else {
throw new ActionServletException("atencao.required", null, "Tipo");
}
LogradouroTitulo logradouroTitulo = null;
if (logradouroActionForm.getIdTitulo() != null
&& !logradouroActionForm.getIdTitulo().equals(0)) {
logradouroTitulo = new LogradouroTitulo();
logradouroTitulo.setId(new Integer(""
+ logradouroActionForm.getIdTitulo()));
}
Short indicadorDeUso = ConstantesSistema.INDICADOR_USO_ATIVO;
Collection colecaoBairros = (Collection) sessao
.getAttribute("colecaoBairrosSelecionadosUsuario");
Collection colecaoCeps = (Collection) sessao
.getAttribute("colecaoCepSelecionadosUsuario");
if (colecaoBairros == null || colecaoBairros.isEmpty()) {
throw new ActionServletException("atencao.required", null,
"Bairro(s)");
}
if (colecaoCeps == null || colecaoCeps.isEmpty()) {
throw new ActionServletException("atencao.required", null, "CEP(s)");
}
Logradouro logradouro = new Logradouro(logradouroActionForm.getNome(),
logradouroActionForm.getNomePopular(), indicadorDeUso,
new Date(), municipio, logradouroTitulo, logradouroTipo);
/*
* [UC0107] Registrar Transa��o
* logradouro.setOperacaoEfetuada(operacaoEfetuada);
* logradouro.adicionarUsuario(Usuario.USUARIO_TESTE,
* UsuarioAcao.USUARIO_ACAO_TESTE);
*/
registradorOperacao.registrarOperacao(logradouro);
FiltroLogradouro filtroLogradouro = new FiltroLogradouro();
filtroLogradouro.adicionarParametro(new ParametroSimples(
FiltroLogradouro.ID_LOGRADOUROTIPO, logradouro
.getLogradouroTipo().getId()));
filtroLogradouro.adicionarParametro(new ParametroSimples(
FiltroLogradouro.ID_MUNICIPIO, logradouro.getMunicipio()
.getId()));
filtroLogradouro.adicionarParametro(new ParametroSimples(
FiltroLogradouro.NOME, logradouro.getNome()));
if (logradouro.getLogradouroTitulo() == null
|| logradouro.getLogradouroTitulo().equals("")) {
filtroLogradouro.adicionarParametro(new ParametroNulo(
FiltroLogradouro.ID_LOGRADOUROTITULO));
} else {
filtroLogradouro.adicionarParametro(new ParametroSimples(
FiltroLogradouro.ID_LOGRADOUROTITULO, logradouro
.getLogradouroTitulo().getId()));
}
Collection logradouros = fachada.pesquisar(filtroLogradouro,
Logradouro.class.getName());
if (logradouros != null && !logradouros.isEmpty()) {
if (confirmado == null || !confirmado.trim().equalsIgnoreCase("ok")) {
httpServletRequest.setAttribute("caminhoActionConclusao",
"/gsan/inserirLogradouroAction.do");
// Monta a p�gina de confirma��o para perguntar se o usu�rio
// quer inserir
// o logradouro cadastrado com este Tipo, T�tulo e Nome para
// este Munic�pio
return montarPaginaConfirmacao(
"atencao.logradouro_ja_existente.confirmacao",
httpServletRequest, actionMapping);
}
}
Integer codigoLogradouro = fachada.inserirLogradouro(logradouro,
colecaoBairros, colecaoCeps);
montarPaginaSucesso(httpServletRequest, "Logradouro de c�digo "
+ codigoLogradouro + " inserido com sucesso.",
"Inserir outro Logradouro",
"exibirInserirLogradouroAction.do?menu=sim",
"exibirAtualizarLogradouroAction.do?idRegistroAtualizacao="
+ codigoLogradouro, "Atualizar Logradouro Inserido");
return retorno;
}
}