package gcom.gui.relatorio.cadastro.atualizacaocadastral; import gcom.cadastro.localidade.FiltroLocalidade; import gcom.cadastro.localidade.FiltroSetorComercial; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.localidade.SetorComercial; import gcom.fachada.Fachada; import gcom.gui.GcomAction; import gcom.gui.cadastro.atualizacaocadastral.ExibirFiltrarAlteracaoAtualizacaoCadastralAction; import gcom.gui.cadastro.atualizacaocadastral.FilterClassParameters; import gcom.gui.cadastro.atualizacaocadastral.FiltrarAlteracaoAtualizacaoCadastralActionForm; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.DescriptorEntity; import gcom.util.filtro.Filtro; import gcom.util.filtro.ParametroSimples; import java.lang.reflect.Method; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.jboss.logging.Logger; public class ExibirGerarRelatorioRelacaoImoveisRotaAction extends GcomAction { private static Logger logger = Logger.getLogger(ExibirGerarRelatorioRelacaoImoveisRotaAction.class); public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("exibirGerarRelatorioRelacaoImoveisRota"); RelatorioRelacaoImoveisRotaActionForm form = (RelatorioRelacaoImoveisRotaActionForm) actionForm; try { if (StringUtils.isNotEmpty(httpServletRequest.getParameter("filterClass"))){ preencherCampoDescricao(form, httpServletRequest); } HttpSession sessao = httpServletRequest.getSession(false); } catch (Exception e) { logger.error("Erro ao filtrar Cadastro", e); } return retorno; } private void preencherCampoDescricao(RelatorioRelacaoImoveisRotaActionForm form, HttpServletRequest httpServletRequest) throws Exception { String filterClass = "gcom.cadastro.localidade."+ httpServletRequest.getParameter("filterClass"); FilterClassParameters filter = null; String fieldName = null; String fieldLocalidade = httpServletRequest.getParameter("fieldLocalidade"); if (filterClass.contains("FiltroLocalidade")) { fieldName = fieldLocalidade; filter = buildFiltroLocalidade(form, filterClass, fieldLocalidade); } else if (filterClass.contains("FiltroSetorComercial")){ fieldName = httpServletRequest.getParameter("fieldSetorComercial"); filter = buildFiltroSetorComercial(form, httpServletRequest, filterClass, fieldName, fieldLocalidade); } DescriptorEntity entidade = pesquisarEntidade(filter); Method setNome = RelatorioRelacaoImoveisRotaActionForm.class.getMethod("setNome" + fieldName, String.class); if (entidade == null) { setNome.invoke(form, filter.getInvalidMessage()); httpServletRequest.setAttribute("cor" + filter.getFieldName(), "#FF0000"); } else { setNome.invoke(form, entidade.getDescricao()); httpServletRequest.setAttribute("cor" + filter.getFieldName(), "#000000"); } } private FilterClassParameters buildFiltroLocalidade(RelatorioRelacaoImoveisRotaActionForm form, String filterClass, String fieldLocalidade) throws Exception { Filtro filtro = (Filtro) Class.forName(filterClass).newInstance(); FilterClassParameters filter; filter = new FilterClassParameters(filtro, new Localidade(), "Localidade inexistente", fieldLocalidade); filtro.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID, recuperaValorCampo(form, "Id" + fieldLocalidade))); filtro.adicionarParametro(new ParametroSimples(FiltroLocalidade.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); return filter; } private FilterClassParameters buildFiltroSetorComercial(RelatorioRelacaoImoveisRotaActionForm form, HttpServletRequest httpServletRequest, String filterClass, String fieldName, String fieldLocalidade) throws Exception { Filtro filtro = (Filtro) Class.forName(filterClass).newInstance(); FilterClassParameters filter; filter = new FilterClassParameters(filtro, new SetorComercial(), "Setor comercial inexistente", fieldName); filtro.adicionarParametro(new ParametroSimples(FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, (String) recuperaValorCampo(form, "Cd"+ fieldName))); filtro.adicionarParametro(new ParametroSimples(FiltroSetorComercial.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtro.adicionarParametro(new ParametroSimples(FiltroSetorComercial.ID_LOCALIDADE, new Integer(recuperaValorCampo(form, "Id"+ fieldLocalidade)))); httpServletRequest.setAttribute("cor" + fieldLocalidade, "#000000"); return filter; } private DescriptorEntity pesquisarEntidade(FilterClassParameters parameters) { Collection colecaoPesquisa = Fachada.getInstancia().pesquisar(parameters.getFilter(), parameters.getEntity().getClass().getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { return null; } else { return (DescriptorEntity) Util.retonarObjetoDeColecao(colecaoPesquisa); } } private String recuperaValorCampo(RelatorioRelacaoImoveisRotaActionForm form, String fieldName) throws Exception{ Method getMethod = RelatorioRelacaoImoveisRotaActionForm.class.getMethod("get" + fieldName); return (String) getMethod.invoke(form); } }