package gcom.gui.cadastro.imovel; import gcom.cadastro.cliente.FiltroRamoAtividade; import gcom.cadastro.cliente.RamoAtividade; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.FiltroCategoria; import gcom.cadastro.imovel.FiltroSubCategoria; import gcom.cadastro.imovel.ImovelRamoAtividade; import gcom.cadastro.imovel.ImovelRamoAtividadePK; import gcom.cadastro.imovel.ImovelSubcategoria; import gcom.cadastro.imovel.ImovelSubcategoriaPK; import gcom.cadastro.imovel.Subcategoria; 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.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; 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; import org.apache.struts.validator.DynaValidatorForm; /** * Classe respon�vel pelo recebimento dos dados das categorias e subcategoria do im�vel * * @author Raphael Rossiter * @date 11/05/2009 */ public class ExibirInserirImovelSubCategoriaAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("inserirImovelSubCategoria"); HttpSession sessao = httpServletRequest.getSession(false); DynaValidatorForm inserirImovelActionForm = (DynaValidatorForm) actionForm; Collection colecaoImovelSubCategorias = null; Collection colecaoImovelRamoAtividade = null; Fachada fachada = Fachada.getInstancia(); sessao.removeAttribute("gis"); Collection categorias = null; Collection ramosAtividades = null; Collection subCategorias = null; String botaoAdicionar = httpServletRequest.getParameter("botaoAdicionar"); String botaoAdicionar1 = httpServletRequest.getParameter("botaoAdicionar1"); if (botaoAdicionar == null && httpServletRequest.getParameter("confirmado") != null) { botaoAdicionar = (String) sessao.getAttribute("botaoAdicionar"); } else { sessao.removeAttribute("botaoAdicionar"); } if (botaoAdicionar1 == null && httpServletRequest.getParameter("confirmado") != null) { botaoAdicionar1 = (String) sessao.getAttribute("botaoAdicionar1"); }else { sessao.removeAttribute("botaoAdicionar1"); } if (sessao.getAttribute("colecaoImovelSubCategorias") != null) { colecaoImovelSubCategorias = (Collection) sessao.getAttribute("colecaoImovelSubCategorias"); } else { colecaoImovelSubCategorias = new ArrayList(); } if (sessao.getAttribute("colecaoImovelRamosAtividade") != null) { colecaoImovelRamoAtividade = (Collection) sessao.getAttribute("colecaoImovelRamosAtividade"); } else { colecaoImovelRamoAtividade = new ArrayList(); } if(sessao.getAttribute("ramosAtividades") != null){ ramosAtividades = (Collection) sessao.getAttribute("ramosAtividades"); } if (botaoAdicionar != null && !botaoAdicionar.equals("")) { short quantidadeEconomia = new Short(inserirImovelActionForm.get( "quantidadeEconomia").toString()).shortValue(); Short qtdUniadePrivativa = null; Short qtdUniadeColetiva = null; //QUANTIDADE DE UNIDADES COM INSTALA��ES PRIVATIVAS if (inserirImovelActionForm.get("qtdUnidadePrivativa") != null && !((inserirImovelActionForm.get("qtdUnidadePrivativa").toString())).equals("")){ qtdUniadePrivativa = new Short(inserirImovelActionForm.get( "qtdUnidadePrivativa").toString()).shortValue(); } //QUANTIDADE DE UNIDADES COM INSTALA��ES COLETIVAS if (inserirImovelActionForm.get("qtdUnidadeColetiva") != null && !((inserirImovelActionForm.get("qtdUnidadeColetiva").toString())).equals("")){ qtdUniadeColetiva = new Short(inserirImovelActionForm.get( "qtdUnidadeColetiva").toString()).shortValue(); } FiltroCategoria filtroCategoria = new FiltroCategoria(); filtroCategoria.adicionarParametro(new ParametroSimples( FiltroCategoria.CODIGO, inserirImovelActionForm.get("idCategoria"))); Collection colecaoCategoria = fachada.pesquisar(filtroCategoria, Categoria.class.getName()); Categoria categoriaNaBase = (Categoria) Util .retonarObjetoDeColecao(colecaoCategoria); //[FS0018] - Verificar quantidade de economias if (categoriaNaBase.getConsumoMaximoEconomiasValidacao() < new Integer(quantidadeEconomia)) { if (httpServletRequest.getParameter("confirmado") == null) { httpServletRequest.setAttribute("destino", "4"); sessao.setAttribute("botaoAdicionar", botaoAdicionar); retorno = montarPaginaConfirmacaoWizard( "atencao.usuario.limite_ultrapassado_economias_validacao", httpServletRequest, actionMapping, ""+categoriaNaBase.getConsumoMaximoEconomiasValidacao()); } else if (httpServletRequest.getParameter("confirmado").equalsIgnoreCase("ok")) { adicionaObjetoColecao(inserirImovelActionForm, sessao, colecaoImovelSubCategorias, quantidadeEconomia, qtdUniadePrivativa, qtdUniadeColetiva); sessao.removeAttribute(botaoAdicionar); } } else { adicionaObjetoColecao(inserirImovelActionForm, sessao, colecaoImovelSubCategorias, quantidadeEconomia, qtdUniadePrivativa, qtdUniadeColetiva); } } else { if (inserirImovelActionForm.get("idCategoria") != null && !inserirImovelActionForm.get("idCategoria").equals("0") && !inserirImovelActionForm.get("idCategoria").equals("")) { String idCategoria = (String) inserirImovelActionForm.get("idCategoria"); String idSubCategoria = (String) inserirImovelActionForm.get("idSubCategoria"); FiltroSubCategoria filtroSubCategoria = new FiltroSubCategoria( FiltroSubCategoria.DESCRICAO); filtroSubCategoria.adicionarParametro(new ParametroSimples( FiltroSubCategoria.CATEGORIA_ID, idCategoria)); filtroSubCategoria.adicionarParametro(new ParametroSimples( FiltroSubCategoria.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); subCategorias = fachada.pesquisar(filtroSubCategoria, Subcategoria.class.getName()); //[FS0001] - Verificar exist�ncia de dados (SUBCATEGORIA) if (subCategorias == null || subCategorias.isEmpty()) { throw new ActionServletException("atencao.categoria.sub_categoria.inexistente"); } else { Iterator isubCategorias = subCategorias.iterator(); while (isubCategorias.hasNext()) { Subcategoria sub = (Subcategoria) isubCategorias.next(); if (sub.getId().toString().equals(idSubCategoria)) { inserirImovelActionForm.set("textoSelecionadoSubCategoria", sub.getDescricao()); } } sessao.setAttribute("subCategorias", subCategorias); } // Serve para setar a categoria quando o usuario selecionar s� a // sub categoria } else if (inserirImovelActionForm.get("idCategoria").toString().trim().equalsIgnoreCase("0") && !inserirImovelActionForm.get("idSubCategoria").toString().trim().equalsIgnoreCase("0") && (httpServletRequest.getParameter("subCategoriaEscolhida") != null && httpServletRequest.getParameter("subCategoriaEscolhida").trim().equalsIgnoreCase("1"))) { FiltroSubCategoria filtroSubCategoria = new FiltroSubCategoria(); filtroSubCategoria.adicionarCaminhoParaCarregamentoEntidade(FiltroSubCategoria.CATEGORIA); filtroSubCategoria.adicionarParametro(new ParametroSimples( FiltroSubCategoria.ID, inserirImovelActionForm.get("idSubCategoria").toString())); Collection subCategoriasTeste = fachada.pesquisar( filtroSubCategoria, Subcategoria.class.getName()); Subcategoria subCategoria = (Subcategoria) subCategoriasTeste.iterator().next(); filtroSubCategoria.limparListaParametros(); filtroSubCategoria.adicionarParametro(new ParametroSimples( FiltroSubCategoria.CATEGORIA_ID, subCategoria.getCategoria().getId())); subCategorias = fachada.pesquisar(filtroSubCategoria, Subcategoria.class.getName()); sessao.setAttribute("subCategorias", subCategorias); inserirImovelActionForm.set("idCategoria", subCategoria.getCategoria().getId().toString()); inserirImovelActionForm.set("textoSelecionadoCategoria", subCategoria.getCategoria().getDescricao()); } else if (inserirImovelActionForm.get("idCategoria").equals("") || inserirImovelActionForm.get("idCategoria").equals("0") || inserirImovelActionForm.get("idCategoria") == null) { //CARREGAMENTO INICIAL DA ABA DE CATEGORIAS E SUBCATEGORIAS FiltroCategoria filtroCategoria = new FiltroCategoria( FiltroCategoria.DESCRICAO); filtroCategoria.adicionarParametro(new ParametroSimples( FiltroCategoria.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); categorias = fachada.pesquisar(filtroCategoria, Categoria.class.getName()); //[FS0001] - Verificar exist�ncia de dados (CATEGORIA) if (categorias == null || categorias.equals("")) { throw new ActionServletException("atencao.naocadastrado", null, "categoria"); } else { if (inserirImovelActionForm.get("textoSelecionadoCategoria") == null || inserirImovelActionForm.get("textoSelecionadoCategoria").equals("")) { inserirImovelActionForm.set("textoSelecionadoCategoria", ((Categoria) ((List) categorias).get(0)).getDescricao()); } else { inserirImovelActionForm.set("textoSelecionadoCategoria", ""); } FiltroSubCategoria filtroSubCategoria = new FiltroSubCategoria( FiltroSubCategoria.DESCRICAO); filtroSubCategoria.adicionarParametro(new ParametroSimples( FiltroSubCategoria.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); // [FS0001] - Verificar exist�ncia de dados (SUBCATEGORIA) subCategorias = fachada.pesquisar(filtroSubCategoria, Subcategoria.class.getName()); if (subCategorias == null || subCategorias.isEmpty()) { throw new ActionServletException("atencao.naocadastrado", null, "Subcategoria"); } else { if (inserirImovelActionForm.get("textoSelecionadoSubCategoria") == null || inserirImovelActionForm.get("textoSelecionadoSubCategoria").equals("")) { inserirImovelActionForm.set("textoSelecionadoSubCategoria", ((Subcategoria) ((List) subCategorias).get(0)).getDescricao()); } else { inserirImovelActionForm.set("textoSelecionadoSubCategoria", ""); inserirImovelActionForm.set("idSubCategoria", ""); } } // COLOCANDO NA SESS�O sessao.setAttribute("categorias", categorias); sessao.setAttribute("subCategorias", subCategorias); } } } sessao.setAttribute("colecaoImovelSubCategorias",colecaoImovelSubCategorias); Collection ramosAtividades1 = null; boolean carregou = false; if(ramosAtividades == null || ramosAtividades.isEmpty()){ FiltroRamoAtividade filtroRamoAtividade = new FiltroRamoAtividade(FiltroRamoAtividade.DESCRICAO); filtroRamoAtividade.adicionarParametro(new ParametroSimples( FiltroRamoAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); ramosAtividades = fachada.pesquisar(filtroRamoAtividade, RamoAtividade.class.getName()); if (ramosAtividades == null || ramosAtividades.equals("")) { throw new ActionServletException("atencao.naocadastrado", null, "ramo de atividade"); }else{ if (inserirImovelActionForm.get("textoSelecionadoRamoAtividade") == null || inserirImovelActionForm.get("textoSelecionadoRamoAtividade").equals("")) { inserirImovelActionForm.set("textoSelecionadoRamoAtividade", ((RamoAtividade) ((List) ramosAtividades).get(0)).getDescricao()); }else{ inserirImovelActionForm.set("textoSelecionadoRamoAtividade", ""); inserirImovelActionForm.set("idRamoAtividade", ""); } } carregou = true; sessao.setAttribute("ramosAtividades", ramosAtividades); } if (botaoAdicionar1 != null && !botaoAdicionar1.equals("")) { if (inserirImovelActionForm.get("idRamoAtividade") != null && !inserirImovelActionForm.get("idRamoAtividade").equals("0") && !inserirImovelActionForm.get("idRamoAtividade").equals("")) { String idRamoAtividade = (String) inserirImovelActionForm.get("idRamoAtividade"); FiltroRamoAtividade filtroRamoAtividade = new FiltroRamoAtividade( FiltroRamoAtividade.DESCRICAO); filtroRamoAtividade.adicionarParametro(new ParametroSimples( FiltroRamoAtividade.ID,idRamoAtividade)); filtroRamoAtividade.adicionarParametro(new ParametroSimples( FiltroRamoAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); ramosAtividades1 = fachada.pesquisar(filtroRamoAtividade, RamoAtividade.class.getName()); //[FS0001] - Verificar exist�ncia de dados (SUBCATEGORIA) if (ramosAtividades1 == null || ramosAtividades1.isEmpty()) { throw new ActionServletException("atencao.ramos.atividade.inexistente"); } else { Iterator iramosAtividades = ramosAtividades1.iterator(); while (iramosAtividades.hasNext()) { RamoAtividade rat = (RamoAtividade) iramosAtividades.next(); if (rat.getId().toString().equals(idRamoAtividade)) { /* Adicionado por Hugo fernando 07/04/2010 Objetivo: Previnir erro de Duplicate key na base de dados. Verifica se o ramo de atividade j� foi adicionado, n�o deixando adicionar RA iguais. */ for (Iterator iter = colecaoImovelRamoAtividade.iterator(); iter.hasNext();) { ImovelRamoAtividade imovelRamoAtividadeColecao = (ImovelRamoAtividade) iter.next(); String idRamoAtividadeJaAdd = imovelRamoAtividadeColecao.getComp_id().getRamo_atividade().getId().toString(); if(idRamoAtividade.equals(idRamoAtividadeJaAdd)){ throw new ActionServletException("atencao.ramo_atividade_ja_adicionado"); } } inserirImovelActionForm.set("textoSelecionadoRamoAtividade", rat.getDescricao()); adicionaObjetoColecao(inserirImovelActionForm,sessao,colecaoImovelRamoAtividade); break; } } sessao.setAttribute("ramosAtividades", ramosAtividades); } // Serve para setar a categoria quando o usuario selecionar s� a // sub categoria } }else if((inserirImovelActionForm.get("idRamoAtividade").equals("") || inserirImovelActionForm.get("idRamoAtividade").equals("0") || inserirImovelActionForm.get("idRamoAtividade") == null) && !carregou){ FiltroRamoAtividade filtroRamoAtividade = new FiltroRamoAtividade(FiltroRamoAtividade.DESCRICAO); filtroRamoAtividade.adicionarParametro(new ParametroSimples( FiltroRamoAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); ramosAtividades = fachada.pesquisar(filtroRamoAtividade, RamoAtividade.class.getName()); if (ramosAtividades == null || ramosAtividades.equals("")) { throw new ActionServletException("atencao.naocadastrado", null, "ramo de atividade"); }else{ if (inserirImovelActionForm.get("textoSelecionadoRamoAtividade") == null || inserirImovelActionForm.get("textoSelecionadoRamoAtividade").equals("")) { inserirImovelActionForm.set("textoSelecionadoRamoAtividade", ((RamoAtividade) ((List) ramosAtividades).get(0)).getDescricao()); }else{ inserirImovelActionForm.set("textoSelecionadoRamoAtividade", ""); inserirImovelActionForm.set("idRamoAtividade", ""); } } sessao.setAttribute("ramosAtividades", ramosAtividades); } sessao.setAttribute("colecaoImovelRamosAtividade",colecaoImovelRamoAtividade); return retorno; } private void adicionaObjetoColecao( DynaValidatorForm inserirImovelActionForm, HttpSession sessao, Collection colecaoImovelSubCategorias, short quantidadeEconomia, Short quantidadeUnidadesPrivativas, Short quantidadeUnidadesColetivas) { Categoria categoria = new Categoria(); categoria.setId(new Integer(inserirImovelActionForm.get("idCategoria").toString())); categoria.setDescricao(new String(inserirImovelActionForm.get("textoSelecionadoCategoria").toString())); Subcategoria subCategoria = new Subcategoria(); subCategoria.setId(new Integer(inserirImovelActionForm.get("idSubCategoria").toString())); subCategoria.setDescricao((String) inserirImovelActionForm.get("textoSelecionadoSubCategoria")); subCategoria.setCategoria(categoria); ImovelSubcategoriaPK imovelSubcategoriaPK = new ImovelSubcategoriaPK(null, subCategoria); ImovelSubcategoria imovelSubCategoria = new ImovelSubcategoria( imovelSubcategoriaPK, quantidadeEconomia, quantidadeUnidadesPrivativas, quantidadeUnidadesColetivas, new Date()); if (!colecaoImovelSubCategorias.contains(imovelSubCategoria)) { colecaoImovelSubCategorias.add(imovelSubCategoria); inserirImovelActionForm.set("idSubCategoriaImovel", imovelSubCategoria.getComp_id().getSubcategoria().getId().toString()); sessao.setAttribute("colecaoImovelSubCategorias", colecaoImovelSubCategorias); } else { throw new ActionServletException("atencao.ja_cadastradado.sub_categoria"); } inserirImovelActionForm.set("quantidadeEconomia", null); inserirImovelActionForm.set("qtdUnidadePrivativa", null); inserirImovelActionForm.set("qtdUnidadeColetiva", null); sessao.removeAttribute("botaoAdicionar"); } private void adicionaObjetoColecao( DynaValidatorForm inserirImovelActionForm, HttpSession sessao, Collection colecaoImoveisRamoAtividades) { RamoAtividade ramoAtividade = new RamoAtividade(); ramoAtividade.setId(new Integer(inserirImovelActionForm.get("idRamoAtividade").toString())); ramoAtividade.setDescricao(new String(inserirImovelActionForm.get("textoSelecionadoRamoAtividade").toString())); ImovelRamoAtividadePK imovelRamoAtividadePK = new ImovelRamoAtividadePK(null, ramoAtividade); ImovelRamoAtividade imovelRamoAtividade = new ImovelRamoAtividade( imovelRamoAtividadePK, new Date()); if (!colecaoImoveisRamoAtividades.contains(imovelRamoAtividade)) { colecaoImoveisRamoAtividades.add(imovelRamoAtividade); inserirImovelActionForm.set("idRamoAtividade", imovelRamoAtividade.getComp_id().getRamo_atividade().getId().toString()); sessao.setAttribute("colecaoImovelRamosAtividade", colecaoImoveisRamoAtividades); } else { throw new ActionServletException("atencao.ja_cadastradado.ramo.atividade"); } sessao.removeAttribute("botaoAdicionar1"); } }