package gcom.gui.cadastro.imovel;
import gcom.cadastro.endereco.Cep;
import gcom.cadastro.endereco.FiltroLogradouro;
import gcom.cadastro.endereco.FiltroLogradouroBairro;
import gcom.cadastro.endereco.FiltroLogradouroCep;
import gcom.cadastro.endereco.Logradouro;
import gcom.cadastro.endereco.LogradouroBairro;
import gcom.cadastro.endereco.LogradouroCep;
import gcom.cadastro.geografico.Bairro;
import gcom.gui.GcomAction;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
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;
/**
* [UC1202]Exibir a P�gina de transferir im�veis para outro Logradouro.
*
* @author Davi Menezes
* @date 03/08/2011
*/
public class ExibirTransferirImovelLogradouroAction extends GcomAction {
private static final int LOGRADOURO_ORIGEM = 1;
private static final int LOGRADOURO_DESTINO = 2;
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("transferirImovel");
boolean idLogradouroNaoEncontrado = true;
HttpSession session = httpServletRequest.getSession(false);
Collection<Bairro> colecaoBairros = null;
Collection<Cep> colecaoCep = null;
int qtdBairros = 0, qtdCep = 0;
TransferirImovelLogradouroActionForm form = (TransferirImovelLogradouroActionForm) actionForm;
if(Util.verificarNaoVazio(form.getLogradouroImovelOrigemFiltro())){
idLogradouroNaoEncontrado = this.pesquisarLogradouro(LOGRADOURO_ORIGEM, form, httpServletRequest);
}
//Pesquisar o Logradouro Destino e trazer as cole��es de bairro e cep
if(Util.verificarNaoVazio(form.getLogradouroImovelDestinoFiltro())){
idLogradouroNaoEncontrado = this.pesquisarLogradouro(LOGRADOURO_DESTINO, form, httpServletRequest);
String idLogradouro = form.getLogradouroImovelDestinoFiltro();
if(!idLogradouroNaoEncontrado){
FiltroLogradouroBairro filtroBairro = new FiltroLogradouroBairro();
filtroBairro.adicionarCaminhoParaCarregamentoEntidade(FiltroLogradouroBairro.BAIRRO);
filtroBairro.adicionarParametro(new ParametroSimples(FiltroLogradouroBairro.ID_LOGRADOURO, idLogradouro));
FiltroLogradouroCep filtroCep = new FiltroLogradouroCep();
filtroCep.adicionarCaminhoParaCarregamentoEntidade(FiltroLogradouroCep.CEP);
filtroCep.adicionarParametro(new ParametroSimples(FiltroLogradouroCep.ID_LOGRADOURO, idLogradouro));
Collection colecaoLogradouroBairro = getFachada().pesquisar(filtroBairro,LogradouroBairro.class.getName());
Collection colecaoLogradouroCep = getFachada().pesquisar(filtroCep,LogradouroCep.class.getName());
Iterator iteratorBairro = colecaoLogradouroBairro.iterator();
Iterator iteratorCep = colecaoLogradouroCep.iterator();
colecaoBairros = new ArrayList();
colecaoCep = new ArrayList();
while(iteratorBairro.hasNext()) {
LogradouroBairro logradouroBairro = (LogradouroBairro) iteratorBairro.next();
colecaoBairros.add(logradouroBairro.getBairro());
}
while(iteratorCep.hasNext()) {
LogradouroCep logradouroCep = (LogradouroCep) iteratorCep.next();
colecaoCep.add(logradouroCep.getCep());
}
qtdBairros = colecaoBairros.size();
qtdCep = colecaoCep.size();
}
}
session.setAttribute("quantidadeBairros", qtdBairros);
session.setAttribute("quantidadeCep", qtdCep);
session.setAttribute("colecaoBairros", colecaoBairros);
session.setAttribute("colecaoCep", colecaoCep);
return retorno;
}
/**
* Pesquisar pelo logradouro
* @param Logradouro origem ou destino
* @param TransferirImovelLogradouroActionForm
* @param httpServletRequest
*/
public boolean pesquisarLogradouro(Integer atributoToSet, TransferirImovelLogradouroActionForm form, HttpServletRequest httpServletRequest){
FiltroLogradouro filtroLogradouro = new FiltroLogradouro();
filtroLogradouro.adicionarCaminhoParaCarregamentoEntidade(FiltroLogradouro.LOGRADOUROTIPO);
filtroLogradouro.adicionarCaminhoParaCarregamentoEntidade(FiltroLogradouro.LOGRADOUROTITULO);
if(atributoToSet == LOGRADOURO_ORIGEM) {
filtroLogradouro.adicionarParametro(new ParametroSimples(FiltroLogradouro.ID, Integer.parseInt(form.getLogradouroImovelOrigemFiltro())));
} else if(atributoToSet == LOGRADOURO_DESTINO){
filtroLogradouro.adicionarParametro(new ParametroSimples(FiltroLogradouro.ID, Integer.parseInt(form.getLogradouroImovelDestinoFiltro())));
}
// filtroLogradouro.adicionarParametro(new ParametroSimples(FiltroLogradouro.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO));
Collection logradouroEncontrado = this.getFachada().pesquisar(filtroLogradouro, Logradouro.class.getName());
Logradouro logradouro = (Logradouro) Util.retonarObjetoDeColecao(logradouroEncontrado);
httpServletRequest.removeAttribute("idLogradouroNaoEncontrado");
if(logradouro != null){
String logradouroFormatado = "";
if(logradouro.getLogradouroTipo() != null){
logradouroFormatado = logradouro.getLogradouroTipo().getDescricaoAbreviada();
}
if(logradouro.getLogradouroTitulo() != null){
logradouroFormatado = logradouroFormatado + " " + logradouro.getLogradouroTitulo().getDescricaoAbreviada();
}
logradouroFormatado = logradouroFormatado + " " + logradouro.getNome();
if(atributoToSet == LOGRADOURO_ORIGEM) {
form.setLogradouroImovelOrigemFiltro(String.valueOf(logradouro.getId()));
form.setDescricaoLogradouroImovelOrigemFiltro(logradouroFormatado);
} else if(atributoToSet == LOGRADOURO_DESTINO) {
form.setLogradouroImovelDestinoFiltro(String.valueOf(logradouro.getId()));
form.setDescricaoLogradouroImovelDestinoFiltro(logradouroFormatado);
}
httpServletRequest.setAttribute("idLogradouroNaoEncontrado", "false");
return false;
} else {
if(atributoToSet == LOGRADOURO_ORIGEM) {
form.setLogradouroImovelOrigemFiltro("");
form.setDescricaoLogradouroImovelOrigemFiltro("Logradouro Inexistente");
} else if(atributoToSet == LOGRADOURO_DESTINO) {
form.setLogradouroImovelDestinoFiltro("");
form.setDescricaoLogradouroImovelDestinoFiltro("Logradouro Inexistente");
}
// exception
httpServletRequest.setAttribute("idLogradouroNaoEncontrado", "true");
return true;
}
}
}