package gcom.gui.cadastro.geografico;
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.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
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;
/**
* Description of the Class
*
* @author compesa
* @created 29 de Junho de 2004
*/
public class InserirBairroAction extends GcomAction {
/**
* Description of the Method
*
* @param actionMapping
* Description of the Parameter
* @param actionForm
* Description of the Parameter
* @param httpServletRequest
* Description of the Parameter
* @param httpServletResponse
* Description of the Parameter
* @return Description of the Return Value
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
BairroActionForm bairroActionForm = (BairroActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO);
/*
* [UC0107] Registrar Transa��o
*
*/
// RegistradorOperacao registradorOperacao = new RegistradorOperacao(
// Operacao.OPERACAO_BAIRRO_INSERIR,
// new UsuarioAcaoUsuarioHelper(Usuario.USUARIO_TESTE,
// UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
//
// Operacao operacao = new Operacao();
// operacao.setId(Operacao.OPERACAO_BAIRRO_INSERIR);
//
// OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
// operacaoEfetuada.setOperacao(operacao);
// [UC0107] -Fim- Registrar Transa��o
Collection colecaoBairroArea = null;
if (sessao.getAttribute("colecaoBairroArea") != null){
colecaoBairroArea = (Collection)sessao.getAttribute("colecaoBairroArea");
}
String idMunicipio = (String) bairroActionForm.getIdMunicipio();
Municipio municipio = null;
if (idMunicipio != null && !idMunicipio.equals("")) {
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.ID, idMunicipio));
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection municipios = fachada.pesquisar(filtroMunicipio,
Municipio.class.getName());
if (municipios != null && !municipios.isEmpty()) {
// O municipio foi encontrado
Iterator municipioIterator = municipios.iterator();
municipio = (Municipio) municipioIterator.next();
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null, "Munic�pio");
}
}
int codigoBairro = 0;
String codigoBairroPesquisar = (String) bairroActionForm
.getCodigoBairro();
FiltroBairro filtroBairro = new FiltroBairro();
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.CODIGO, codigoBairroPesquisar));
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.MUNICIPIO_ID, idMunicipio));
filtroBairro.adicionarCaminhoParaCarregamentoEntidade("municipio");
Collection bairros = fachada.pesquisar(filtroBairro, Bairro.class
.getName());
if (bairros != null && !bairros.isEmpty()) {
Bairro bairro = (Bairro) bairros.iterator().next();
throw new ActionServletException(
"atencao.pesquisa_bairro_ja_cadastrada",codigoBairroPesquisar, bairro.getMunicipio().getNome());
} else {
codigoBairro = Integer.parseInt(codigoBairroPesquisar);
}
Integer codigoBairroPrefeitura = null;
if (bairroActionForm.getCodigoBairroPrefeitura() != null
&& !bairroActionForm.getCodigoBairroPrefeitura()
.equalsIgnoreCase("")) {
codigoBairroPrefeitura = new Integer(bairroActionForm
.getCodigoBairroPrefeitura());
}
Short indicadorDeUso = ConstantesSistema.INDICADOR_USO_ATIVO;
// cria o objeto bairro para ser inserido
Bairro bairro = new Bairro(codigoBairro, bairroActionForm
.getNomeBairro(), codigoBairroPrefeitura, indicadorDeUso,
new Date(), municipio);
// verifica se o bairro ja existe no cadastro - Tiago Moreno
FiltroBairro filtroBairroExistente = new FiltroBairro();
filtroBairroExistente.adicionarParametro(new ParametroSimples(
FiltroBairro.MUNICIPIO_ID, bairro.getMunicipio().getId()));
filtroBairroExistente.adicionarParametro(new ParametroSimples(
FiltroBairro.NOME, bairro.getNome()));
filtroBairroExistente
.adicionarCaminhoParaCarregamentoEntidade("municipio");
Collection collectionBairro = (Collection) fachada.pesquisar(
filtroBairroExistente, Bairro.class.getName());
if (collectionBairro != null && !collectionBairro.isEmpty()) {
throw new ActionServletException(
"atencao.bairro_existente_municipio");
}
if (colecaoBairroArea == null || colecaoBairroArea.isEmpty()){
throw new ActionServletException("atencao.campo_selecionado.obrigatorio",null,"�reas do Bairro");
}
Integer codigoBairroInserido = (Integer) fachada.inserirBairro(bairro,colecaoBairroArea,usuarioLogado);
// montando p�gina de sucesso
montarPaginaSucesso(httpServletRequest, "Bairro de c�digo "
+ bairro.getCodigo() + " do munic�pio "
+ bairro.getMunicipio().getNome() + " inserido com sucesso.",
"Inserir outro Bairro", "exibirInserirBairroAction.do?limparForm=ok",
"exibirAtualizarBairroAction.do?idRegistroAtualizacao="
+ codigoBairroInserido, "Atualizar Bairro Inserido");
return retorno;
}
}