package gcom.gui.cadastro.imovel; import gcom.cadastro.cliente.ClienteImovel; import gcom.cadastro.cliente.ClienteImovelEconomia; import gcom.cadastro.cliente.ClienteRelacaoTipo; import gcom.cadastro.cliente.FiltroClienteImovel; import gcom.cadastro.cliente.FiltroClienteImovelEconomia; import gcom.cadastro.imovel.FiltroImovel; import gcom.cadastro.imovel.FiltroImovelSubCategoria; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.ImovelSubcategoria; import gcom.cadastro.imovel.bean.ImovelSubcategoriaHelper; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ConectorOr; import gcom.util.filtro.FiltroParametro; import gcom.util.filtro.Intervalo; import gcom.util.filtro.ParametroNaoNulo; import gcom.util.filtro.ParametroNulo; import gcom.util.filtro.ParametroSimples; import gcom.util.filtro.ParametroSimplesDiferenteDe; import java.util.ArrayList; import java.util.Calendar; 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; /** * Action ConsultarRelacaoClienteImovelAction * * @author thiago toscano * @date 10/03/2006 */ public class ExibirImovelRelacaoClienteImovelAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse httpServletResponse) { ConsultarRelacaoClienteImovelActionForm form = (ConsultarRelacaoClienteImovelActionForm) actionForm; if ( !Util.verificarNaoVazio(form.getIdImovel())) { throw new ActionServletException("erro.parametro.nao.informado", null, "idImovel"); } HttpSession sessao = request.getSession(false); obterImovelInformadoESetarSessao(form, sessao); setarColecaoClienteImovelSessao(form, sessao); setarColecaoImovelSubcategoriaHelperSessao(form, sessao); return actionMapping.findForward("exibir"); } /** * Consulta o Imovel informado pelo usuario e ent�o seta-o na sess�o. * *@since 14/09/2009 *@author Marlon Patrick */ private void obterImovelInformadoESetarSessao(ConsultarRelacaoClienteImovelActionForm form, HttpSession sessao) { FiltroImovel filtroImovel = criarFiltroConsultarImovelInformadoUsuario(form); Collection<Imovel> colecaoImoveis = Fachada.getInstancia().pesquisar(filtroImovel,Imovel.class.getSimpleName()); if (Util.isVazioOrNulo(colecaoImoveis)) { throw new ActionServletException("atencao.pesquisa.nenhumresultado"); } sessao.setAttribute("imovel",colecaoImoveis.iterator().next()); } /** * Cria uma colec�o de ImovelSubcategoriaHelper e seta-a na sess�o. * *@since 14/09/2009 *@author Marlon Patrick */ private void setarColecaoImovelSubcategoriaHelperSessao(ConsultarRelacaoClienteImovelActionForm form, HttpSession sessao) { FiltroImovelSubCategoria filtroImovelSubCategoria = criarFiltroImovelSubCategoria(form); Collection<ImovelSubcategoria> colecaoImovelSubCategoria = Fachada.getInstancia().pesquisar(filtroImovelSubCategoria,ImovelSubcategoria.class.getSimpleName()); Collection<ImovelSubcategoriaHelper> colecaoImovelSubCategoriaHelper = criarColecaoImovelSubcategoriaHelper( form, colecaoImovelSubCategoria); sessao.setAttribute("collImovelSubCategoriaHelper",colecaoImovelSubCategoriaHelper); } /** *[UC ] - *[SB ] - *[FS ] - * * comment * *@since 14/09/2009 *@author Marlon Patrick */ private Collection<ImovelSubcategoriaHelper> criarColecaoImovelSubcategoriaHelper( ConsultarRelacaoClienteImovelActionForm form, Collection<ImovelSubcategoria> colecaoImovelSubCategoria) { Collection<ImovelSubcategoriaHelper> colecaoImovelSubCategoriaHelper = new ArrayList<ImovelSubcategoriaHelper>(); if ( !Util.isVazioOrNulo(colecaoImovelSubCategoria)) { Iterator<ImovelSubcategoria> it = colecaoImovelSubCategoria.iterator(); while (it.hasNext()) { ImovelSubcategoria imovelSubcategoria = it.next(); FiltroClienteImovelEconomia filtroClienteImovelEconomia = criarFiltroClienteImovelEconomia( form, imovelSubcategoria); Collection<ClienteImovelEconomia> colecaoClienteImovelEconomia = Fachada.getInstancia().pesquisar(filtroClienteImovelEconomia, ClienteImovelEconomia.class.getSimpleName()); ImovelSubcategoriaHelper imovelSubcategoriaHelper = new ImovelSubcategoriaHelper(); imovelSubcategoriaHelper.setCategoria(imovelSubcategoria.getComp_id().getSubcategoria().getCategoria().getDescricao()); imovelSubcategoriaHelper.setSubcategoria(imovelSubcategoria.getComp_id().getSubcategoria().getDescricao()); imovelSubcategoriaHelper.setQuantidadeEconomias(imovelSubcategoria.getQuantidadeEconomias()); imovelSubcategoriaHelper.setColecaoImovelEconomia(colecaoClienteImovelEconomia); colecaoImovelSubCategoriaHelper.add(imovelSubcategoriaHelper); } } return colecaoImovelSubCategoriaHelper; } /** *[UC ] - *[SB ] - *[FS ] - * * comment * *@since 14/09/2009 *@author Marlon Patrick */ private FiltroClienteImovelEconomia criarFiltroClienteImovelEconomia( ConsultarRelacaoClienteImovelActionForm form, ImovelSubcategoria imovelSubcategoria) { FiltroClienteImovelEconomia filtroClienteImovelEconomia = new FiltroClienteImovelEconomia(); filtroClienteImovelEconomia.setConsultaSemLimites(true); filtroClienteImovelEconomia.adicionarParametro( new ParametroSimples (FiltroClienteImovelEconomia.IMOVEL_ID,form.getIdImovel())); filtroClienteImovelEconomia.adicionarParametro( new ParametroSimples (FiltroClienteImovelEconomia.SUBCATEGORIA_ID,imovelSubcategoria.getComp_id().getSubcategoria().getId())); filtroClienteImovelEconomia.adicionarParametro(new ParametroSimples(FiltroClienteImovelEconomia.CLIENTE_RELACAO_TIPO, ClienteRelacaoTipo.USUARIO)); filtroClienteImovelEconomia.adicionarParametro(new ParametroNulo(FiltroClienteImovelEconomia.FIM_RELACAO_MOTIVO)); filtroClienteImovelEconomia.adicionarParametro(new ParametroNulo(FiltroClienteImovelEconomia.DATA_FIM_RELACAO)); filtroClienteImovelEconomia.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovelEconomia.IMOVEL_ECONOMIA); filtroClienteImovelEconomia.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovelEconomia.IMOVEL_ECONOMIEA_AREA_CONSTRUIDA_FAIXA); return filtroClienteImovelEconomia; } /** *[UC ] - *[SB ] - *[FS ] - * * comment * *@since 14/09/2009 *@author Marlon Patrick */ private FiltroImovelSubCategoria criarFiltroImovelSubCategoria( ConsultarRelacaoClienteImovelActionForm form) { FiltroImovelSubCategoria filtroImovelSubCategoria = new FiltroImovelSubCategoria(); filtroImovelSubCategoria.setConsultaSemLimites(true); filtroImovelSubCategoria.adicionarCaminhoParaCarregamentoEntidade(FiltroImovelSubCategoria.SUBCATEGORIA); filtroImovelSubCategoria.adicionarCaminhoParaCarregamentoEntidade(FiltroImovelSubCategoria.SUBCATEGORIA_CATEGORIA); filtroImovelSubCategoria.adicionarParametro(new ParametroSimples(FiltroImovelSubCategoria.IMOVEL_ID,form.getIdImovel())); return filtroImovelSubCategoria; } /** *[UC ] - *[SB ] - *[FS ] - * * comment * *@since 14/09/2009 *@author Marlon Patrick */ private void setarColecaoClienteImovelSessao( ConsultarRelacaoClienteImovelActionForm form, HttpSession sessao) { FiltroClienteImovel filtroClienteImovel = criarFiltroClienteImovel(form); Collection<ClienteImovel> colecaoClienteImoveis = Fachada.getInstancia().pesquisar(filtroClienteImovel,ClienteImovel.class.getSimpleName()); sessao.setAttribute("collClienteImovel",colecaoClienteImoveis); } /** *[UC ] - *[SB ] - *[FS ] - * * comment * *@since 14/09/2009 *@author Marlon Patrick */ private FiltroClienteImovel criarFiltroClienteImovel( ConsultarRelacaoClienteImovelActionForm form) { FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel(); filtroClienteImovel.setConsultaSemLimites(true); filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.IMOVEL_ID,form.getIdImovel())); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CLIENTE); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("clienteRelacaoTipo"); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("clienteImovelFimRelacaoMotivo"); if (form.getIdClienteRelacaoTipo() != null && !"".equals(form.getIdClienteRelacaoTipo())) { filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.CLIENTE_RELACAO_TIPO, form.getIdClienteRelacaoTipo())); } if (form.getIdClienteImovelFimRelacaoMotivo() != null && !"".equals(form.getIdClienteImovelFimRelacaoMotivo())) { filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.FIM_RELACAO_MOTIVO, form.getIdClienteImovelFimRelacaoMotivo())); } if (form.getPeriodoInicialDataInicioRelacao() != null && !"".equals(form.getPeriodoInicialDataInicioRelacao())) { Date periodoInicialDataInicioRelacao = Util.converteStringParaDate(form.getPeriodoInicialDataInicioRelacao()); Date periodoFinalDataInicioRelacao = null; if (form.getPeriodoFinalDataInicioRelacao() == null || form.getPeriodoFinalDataInicioRelacao().equals("")) { periodoFinalDataInicioRelacao = periodoInicialDataInicioRelacao; } else { periodoFinalDataInicioRelacao = Util.converteStringParaDate(form.getPeriodoFinalDataInicioRelacao()); } Calendar diInicio = Calendar.getInstance(); diInicio.setTime(periodoInicialDataInicioRelacao); diInicio.set(Calendar.HOUR, 0); diInicio.set(Calendar.MINUTE, 0); diInicio.set(Calendar.SECOND, 0); Calendar diFim = Calendar.getInstance(); diFim.setTime(periodoFinalDataInicioRelacao); diFim.set(Calendar.HOUR, 0); diFim.set(Calendar.MINUTE, 0); diFim.set(Calendar.SECOND, 0); filtroClienteImovel.adicionarParametro(new Intervalo(FiltroClienteImovel.DATA_INICIO_RELACAO, diInicio.getTime(), diFim.getTime())); } if (form.getPeriodoInicialDataFimRelacao() != null && !"".equals(form.getPeriodoInicialDataFimRelacao())) { Date periodoInicialDataFimRelacao = Util.converteStringParaDate(form.getPeriodoInicialDataFimRelacao()); Date periodoFinalDataFimRelacao = null; if (form.getPeriodoFinalDataFimRelacao() == null || form.getPeriodoFinalDataFimRelacao().equals("")) { periodoFinalDataFimRelacao = periodoInicialDataFimRelacao; } else { periodoFinalDataFimRelacao = Util.converteStringParaDate(form.getPeriodoFinalDataFimRelacao()); } Calendar diInicio = Calendar.getInstance(); diInicio.setTime(periodoInicialDataFimRelacao); diInicio.set(Calendar.HOUR, 0); diInicio.set(Calendar.MINUTE, 0); diInicio.set(Calendar.SECOND, 0); Calendar diFim = Calendar.getInstance(); diFim.setTime(periodoFinalDataFimRelacao); diFim.set(Calendar.HOUR, 0); diFim.set(Calendar.MINUTE, 0); diFim.set(Calendar.SECOND, 0); filtroClienteImovel.adicionarParametro(new Intervalo(FiltroClienteImovel.DATA_FIM_RELACAO, diInicio.getTime(), diFim.getTime())); } if (form.getSituacaoRelacao() != null && form.getSituacaoRelacao().equalsIgnoreCase("1")) { filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO)); } else if (form.getSituacaoRelacao() != null && form.getSituacaoRelacao().equalsIgnoreCase("2")) { filtroClienteImovel.adicionarParametro(new ParametroNaoNulo(FiltroClienteImovel.DATA_FIM_RELACAO)); } else { filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO, FiltroParametro.CONECTOR_OR, 2)); filtroClienteImovel.adicionarParametro(new ParametroNaoNulo(FiltroClienteImovel.DATA_FIM_RELACAO)); } return filtroClienteImovel; } /** *[UC ] - *[SB ] - *[FS ] - * * comment * *@since 14/09/2009 *@author Marlon Patrick */ private FiltroImovel criarFiltroConsultarImovelInformadoUsuario( ConsultarRelacaoClienteImovelActionForm form) { FiltroImovel filtroImovel = new FiltroImovel(); filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, form.getIdImovel())); filtroImovel.adicionarParametro(new ParametroNulo(FiltroImovel.INDICADOR_IMOVEL_EXCLUIDO, ConectorOr.CONECTOR_OR, 2)); filtroImovel.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroImovel.INDICADOR_IMOVEL_EXCLUIDO, ConstantesSistema.SIM)); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOCALIDADE); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.SETOR_COMERCIAL); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.QUADRA); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOGRADOURO); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOGRADOURO_TIPO); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOGRADOURO_TITULO); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.BAIRRO); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.SETOR_COMERCIAL_MUNICIPIO); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.SETOR_COMERCIAL_MUNICIPIO_UF); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.MUNICIPIO); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.CEP); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.UNIDADE_FEDERACAO); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LIGACAO_AGUA_SITUACAO); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LIGACAO_ESGOTO_SITUACAO); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.ENDERECO_REFERENCIA); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOGRADOURO_TIPO_PERIMETRO_INICIAL); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOGRADOURO_TITULO_PERIMETRO_INICIAL); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOGRADOURO_TIPO_PERIMETRO_FINAL); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOGRADOURO_TITULO_PERIMETRO_FINAL); return filtroImovel; } }