package gcom.gui; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.email.ErroEmailException; import gcom.util.email.ServicosEmail; import gcom.util.filtro.Filtro; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; public class GcomAction extends DispatchAction { private SistemaParametro sistemaParametro; private Fachada fachada; protected void reportarErros(HttpServletRequest request, String chave) { ActionErrors errors = new ActionErrors(); errors.add(ActionErrors.GLOBAL_ERROR, new ActionError(chave)); if (!errors.isEmpty()) { saveErrors(request, errors); } } public static long obterTimestampIdObjeto(Object objeto) { long retorno = 0L; try { Integer idObjeto = (Integer) objeto.getClass().getMethod("getId", (Class[]) null).invoke(objeto, (Object[]) null); Object ultimaAlteracao = objeto.getClass().getMethod("getUltimaAlteracao", (Class[]) null).invoke(objeto, (Object[]) null); if (ultimaAlteracao != null) { retorno = (Long) ultimaAlteracao.getClass().getMethod("getTime", (Class[]) null).invoke(ultimaAlteracao, (Object[]) null); } else { throw new ActionServletException("atencao.registro.sem.timestamp"); } if (idObjeto != null) { retorno = retorno + idObjeto; } } catch (IllegalArgumentException e) { throw new ActionServletException("erro.sistema"); } catch (SecurityException e) { throw new ActionServletException("erro.sistema"); } catch (IllegalAccessException e) { throw new ActionServletException("erro.sistema"); } catch (InvocationTargetException e) { throw new ActionServletException("erro.sistema"); } catch (NoSuchMethodException e) { try { Object compId = (Object) objeto.getClass().getMethod("getComp_id", (Class[]) null).invoke(objeto, (Object[]) null); Object ultimaAlteracao = objeto.getClass().getMethod("getUltimaAlteracao", (Class[]) null).invoke(objeto, (Object[]) null); retorno = (Long) ultimaAlteracao.getClass().getMethod("getTime", (Class[]) null).invoke(ultimaAlteracao, (Object[]) null); if (compId != null) { retorno = retorno + compId.hashCode(); } } catch (IllegalArgumentException ex) { throw new ActionServletException("erro.sistema"); } catch (SecurityException ex) { throw new ActionServletException("erro.sistema"); } catch (IllegalAccessException ex) { throw new ActionServletException("erro.sistema"); } catch (InvocationTargetException ex) { throw new ActionServletException("erro.sistema"); } catch (NoSuchMethodException ex) { throw new ActionServletException("erro.sistema"); } } return retorno; } protected void reportarErrosMensagem(HttpServletRequest request, String chave, String mensagem) { ActionErrors errors = new ActionErrors(); errors.add(ActionErrors.GLOBAL_ERROR, new ActionError(chave, mensagem)); if (!errors.isEmpty()) { saveErrors(request, errors); } } protected void reportarErros(HttpServletRequest request, String chaveMensagem, Exception exception) { ActionErrors errors = new ActionErrors(); errors.add(ActionErrors.GLOBAL_ERROR, new ActionError(chaveMensagem)); HttpSession sessao = request.getSession(false); if (sessao == null) { try { ServicosEmail.enviarMensagem("gcom@compesa.com.br", ServicosEmail.EMAIL_ADMINISTRADOR, "Urgente: Erro no Sistema", ServicosEmail.processarExceptionParaEnvio(exception)); } catch (ErroEmailException ex) { ex.printStackTrace(); } } else { sessao.setAttribute("excecaoPaginaErro", exception); } if (!errors.isEmpty()) { saveErrors(request, errors); } } protected void reportarErrosMensagem(HttpServletRequest request, String chaveMensagem, String mensagem, Exception exception) { ActionErrors errors = new ActionErrors(); errors.add(ActionErrors.GLOBAL_ERROR, new ActionError(chaveMensagem, mensagem)); HttpSession sessao = request.getSession(false); if (sessao == null) { try { ServicosEmail.enviarMensagem("gcom@compesa.com.br", ServicosEmail.EMAIL_ADMINISTRADOR, "Urgente: Erro no Sistema", ServicosEmail.processarExceptionParaEnvio(exception)); } catch (ErroEmailException ex) { ex.printStackTrace(); } } else { sessao.setAttribute("excecaoPaginaErro", exception); } if (!errors.isEmpty()) { saveErrors(request, errors); } } protected boolean verificarUsuarioLogado(HttpSession sessao, String parametroSessao) { return (sessao != null && sessao.getAttribute(parametroSessao) != null); } protected int converterStringToInt(String target) { try { return Integer.parseInt(target); } catch (NumberFormatException e) { return ConstantesSistema.NUMERO_NAO_INFORMADO; } } protected void montarPaginaSucesso(HttpServletRequest request, String mensagemPaginaSucesso, String labelPaginaSucesso, String caminhoFuncionalidade) { request.setAttribute("labelPaginaSucesso", labelPaginaSucesso); request.setAttribute("mensagemPaginaSucesso", mensagemPaginaSucesso); request.setAttribute("caminhoFuncionalidade", caminhoFuncionalidade); } protected void montarPaginaSucesso(HttpServletRequest request, String mensagemPaginaSucesso, String labelPaginaSucesso, String caminhoFuncionalidade, String caminhoAtualizarRegistro, String labelPaginaAtualizacao) { request.setAttribute("labelPaginaAtualizacao", labelPaginaAtualizacao); request.setAttribute("caminhoAtualizarRegistro", caminhoAtualizarRegistro); montarPaginaSucesso(request, mensagemPaginaSucesso, labelPaginaSucesso, caminhoFuncionalidade); } protected void montarPaginaSucesso(HttpServletRequest request, String mensagemPaginaSucesso, String labelPaginaSucesso, String caminhoFuncionalidade, String caminhoAtualizarRegistro, String labelPaginaAtualizacao, String labelGerarOrdemServico, String caminhoGerarOrdemServico) { request.setAttribute("labelGerarOrdemServico", labelGerarOrdemServico); request.setAttribute("caminhoGerarOrdemServico", caminhoGerarOrdemServico); montarPaginaSucesso(request, mensagemPaginaSucesso, labelPaginaSucesso, caminhoFuncionalidade, caminhoAtualizarRegistro, labelPaginaAtualizacao); } protected void montarPaginaSucessoComVoltarJavascript(HttpServletRequest request, String mensagemPaginaSucesso, String labelPaginaSucesso, String caminhoFuncionalidade, String caminhoAtualizarRegistro, String labelPaginaAtualizacao, String labelVoltar, String caminhoVoltar) { request.setAttribute("labelVoltarJavascript", labelVoltar); request.setAttribute("caminhoVoltarJavascript", caminhoVoltar); montarPaginaSucesso(request, mensagemPaginaSucesso, labelPaginaSucesso, caminhoFuncionalidade, caminhoAtualizarRegistro, labelPaginaAtualizacao); } protected void montarPaginaSucesso(HttpServletRequest request, String mensagemPaginaSucesso, String labelPaginaSucesso, String caminhoFuncionalidade,String caminhoAtualizarRegistro, String labelPaginaAtualizacao, String labelGerarOrdemServico, String caminhoGerarOrdemServico, String labelVoltar, String caminhoVoltar) { request.setAttribute("labelVoltar", labelVoltar); request.setAttribute("caminhoVoltar", caminhoVoltar); montarPaginaSucesso(request, mensagemPaginaSucesso, labelPaginaSucesso, caminhoFuncionalidade, caminhoAtualizarRegistro, labelPaginaAtualizacao, labelGerarOrdemServico, caminhoGerarOrdemServico); } protected void montarPaginaSucessoComImpressora(HttpServletRequest request, String mensagemPaginaSucesso, String labelPaginaSucesso, String caminhoFuncionalidade, String caminhoAtualizarRegistro, String labelPaginaAtualizacao, String caminhoRelatorio) { request.setAttribute("labelPaginaAtualizacao", labelPaginaAtualizacao); request.setAttribute("caminhoAtualizarRegistro", caminhoAtualizarRegistro); request.setAttribute("caminhoRelatorio", caminhoRelatorio); montarPaginaSucesso(request, mensagemPaginaSucesso, labelPaginaSucesso, caminhoFuncionalidade); } protected void montarPaginaSucessoComImpressora(HttpServletRequest request, String mensagemPaginaSucesso, String labelPaginaSucesso, String caminhoFuncionalidade, String caminhoAtualizarRegistro, String labelPaginaAtualizacao, String labelGerarOrdemServico, String caminhoGerarOrdemServico, String caminhoRelatorio) { request.setAttribute("labelGerarOrdemServico", labelGerarOrdemServico); request.setAttribute("caminhoGerarOrdemServico", caminhoGerarOrdemServico); request.setAttribute("caminhoRelatorio", caminhoRelatorio); montarPaginaSucesso(request, mensagemPaginaSucesso, labelPaginaSucesso, caminhoFuncionalidade, caminhoAtualizarRegistro, labelPaginaAtualizacao); } protected void montarPaginaSucessoUmRelatorio(HttpServletRequest request, String mensagemPaginaSucesso, String labelPaginaSucesso, String caminhoFuncionalidade, String caminhoAtualizarRegistro, String labelPaginaAtualizacao, String labelGerarOrdemServico, String caminhoGerarOrdemServico, String mensagemRelatorioLink1, String caminhoRelatorioLink1) { request.setAttribute("labelGerarOrdemServico", labelGerarOrdemServico); request.setAttribute("caminhoGerarOrdemServico", caminhoGerarOrdemServico); request.setAttribute("mensagemRelatorioLink1", mensagemRelatorioLink1); request.setAttribute("caminhoRelatorioLink1", caminhoRelatorioLink1); montarPaginaSucesso(request, mensagemPaginaSucesso, labelPaginaSucesso, caminhoFuncionalidade, caminhoAtualizarRegistro, labelPaginaAtualizacao); } protected void montarPaginaSucessoUmRelatorio(HttpServletRequest request, String mensagemPaginaSucesso, String labelPaginaSucesso, String caminhoFuncionalidade, String caminhoAtualizarRegistro, String labelPaginaAtualizacao, String mensagemRelatorioLink1, String caminhoRelatorioLink1) { request.setAttribute("mensagemRelatorioLink1", mensagemRelatorioLink1); request.setAttribute("caminhoRelatorioLink1", caminhoRelatorioLink1); montarPaginaSucesso(request, mensagemPaginaSucesso, labelPaginaSucesso, caminhoFuncionalidade, caminhoAtualizarRegistro, labelPaginaAtualizacao); } protected void montarPaginaSucessoDoisRelatorios(HttpServletRequest request, String mensagemPaginaSucesso, String labelPaginaSucesso, String caminhoFuncionalidade, String caminhoAtualizarRegistro, String labelPaginaAtualizacao, String mensagemRelatorioLink1, String caminhoRelatorioLink1, String mensagemRelatorioLink2, String caminhoRelatorioLink2) { request.setAttribute("mensagemRelatorioLink1", mensagemRelatorioLink1); request.setAttribute("caminhoRelatorioLink1", caminhoRelatorioLink1); request.setAttribute("mensagemRelatorioLink2", mensagemRelatorioLink2); request.setAttribute("caminhoRelatorioLink2", caminhoRelatorioLink2); montarPaginaSucesso(request, mensagemPaginaSucesso, labelPaginaSucesso, caminhoFuncionalidade, caminhoAtualizarRegistro, labelPaginaAtualizacao); } protected void montarPaginaConfirmacao(HttpServletRequest request, String labelPaginaConfirmacao, String mensagemSuperiorConfirmacao, String mensagemInferiorConfirmacao, String caminhoFuncionalidade) { request.setAttribute("labelPaginaConfirmacao", labelPaginaConfirmacao); request.setAttribute("mensagemSuperiorConfirmacao", mensagemSuperiorConfirmacao); request.setAttribute("mensagemInferiorConfirmacao", mensagemInferiorConfirmacao); request.setAttribute("caminhoFuncionalidade", caminhoFuncionalidade); } protected String getNomeClasse(Object objeto) { String nomeClasse = null; String nomePacoteObjeto = objeto.getClass().getName(); String nomeApenasPacote = (objeto.getClass().getPackage().toString()) + "."; int tamanhoNomePacoteObjeto = nomePacoteObjeto.length(); int tamanhoNomePacote = nomeApenasPacote.length(); nomeClasse = nomePacoteObjeto.substring((tamanhoNomePacote - 8), tamanhoNomePacoteObjeto); nomeClasse = (nomeClasse.substring(0, 1)).toLowerCase() + (nomeClasse.substring(1, nomeClasse.length())); return nomeClasse; } protected boolean verificarDataMenorQueDataCorrente(Date dataInformada) { return (new Date().after(dataInformada)); } protected ActionForward montarPaginaConfirmacaoWizard(String chaveMensagem, HttpServletRequest request, ActionMapping actionMapping) { return montarPaginaConfirmacaoWizard(chaveMensagem, request, actionMapping, (String[]) null); } protected ActionForward montarPaginaConfirmacaoWizard(String chaveMensagem, HttpServletRequest request, ActionMapping actionMapping, String... parametrosMensagem) { String destino = request.getParameter("destino"); if (destino == null) { if (request.getAttribute("destino") != null && !request.getAttribute("destino").equals("")) { destino = "" + request.getAttribute("destino"); } } HttpSession sessao = getSessao(request); StatusWizard statusWizard = (StatusWizard) sessao.getAttribute("statusWizard"); String caminhoActionInicial = null; if (destino == null || destino.trim().equalsIgnoreCase("")) { caminhoActionInicial = (statusWizard.getCaminhoActionConclusao()); } else { caminhoActionInicial = (statusWizard.retornarItemWizard(Integer.parseInt(destino))).getCaminhoActionInicial(); } request.setAttribute("confirmacao", "true"); request.setAttribute("caminhoConfirmacao", caminhoActionInicial); request.setAttribute("chaveMensagem", chaveMensagem); request.setAttribute("parametrosMensagem", parametrosMensagem); return actionMapping.findForward("telaConfirmacao"); } protected ActionForward montarPaginaConfirmacao(String chaveMensagem, HttpServletRequest request, ActionMapping actionMapping, String... parametrosMensagem) { String caminhoActionConclusao = (String) request.getAttribute("caminhoActionConclusao"); String tipoRelatorio = (String) request.getAttribute("tipoRelatorio"); request.setAttribute("confirmacao", "true"); request.setAttribute("confirmacaoNormal", "true"); request.setAttribute("caminhoConfirmacao", caminhoActionConclusao); request.setAttribute("chaveMensagem", chaveMensagem); request.setAttribute("parametrosMensagem", parametrosMensagem); request.setAttribute("tipoRelatorio", tipoRelatorio); return actionMapping.findForward("telaConfirmacao"); } @SuppressWarnings({ "rawtypes", "unchecked" }) protected Map controlarPaginacao(HttpServletRequest request, ActionForward actionForward, Filtro filtro, String nomePacoteObjeto) { String totalRegistros = "" + (Integer) this.getSessao(request).getAttribute("totalRegistros"); String pageOffsetRequest = request.getParameter("page.offset"); if (pageOffsetRequest == null) { pageOffsetRequest = "1"; totalRegistros = null; } Integer pageOffset = Integer.parseInt(pageOffsetRequest) - 1; Collection colecaoResultado = this.getFachada().pesquisar(filtro, pageOffset, nomePacoteObjeto); if ((totalRegistros == null || totalRegistros.trim().equalsIgnoreCase("") || totalRegistros.trim().equalsIgnoreCase("0") || totalRegistros.trim().equalsIgnoreCase("null")) || (pageOffsetRequest == null || pageOffsetRequest.trim().equalsIgnoreCase("") || pageOffsetRequest.trim().equalsIgnoreCase("null"))) { int totalPesquisa = this.getFachada().totalRegistrosPesquisa(filtro, nomePacoteObjeto); totalRegistros = "" + totalPesquisa; this.getSessao(request).setAttribute("totalRegistros", totalPesquisa); } request.setAttribute("page.offset", pageOffset + 1); request.setAttribute("maximoPaginas", ((Double) Math.ceil(Double.parseDouble(totalRegistros) / 10)).intValue()); actionForward = new ActionForward(actionForward.getName(), actionForward.getPath() + "?pager.offset=" + (((pageOffset + 1) * 10) - 10), false); HashMap retorno = new HashMap(); retorno.put("colecaoRetorno", colecaoResultado); retorno.put("destinoActionForward", actionForward); return retorno; } protected ActionForward controlarPaginacao(HttpServletRequest request, ActionForward actionForward, int totalRegistrosPesquisa) { HttpSession sessao = request.getSession(false); String totalRegistros = "" + (Integer) sessao.getAttribute("totalRegistros"); String pageOffsetRequest = request.getParameter("page.offset"); if (pageOffsetRequest == null) { pageOffsetRequest = "1"; totalRegistros = null; } if ((totalRegistros == null || totalRegistros.trim().equalsIgnoreCase("") || totalRegistros.trim().equalsIgnoreCase("0") || totalRegistros.trim().equalsIgnoreCase("null")) || (pageOffsetRequest == null || pageOffsetRequest.trim().equalsIgnoreCase("") || pageOffsetRequest.trim().equalsIgnoreCase("null"))) { int totalPesquisa = totalRegistrosPesquisa; totalRegistros = "" + totalPesquisa; sessao.setAttribute("totalRegistros", totalPesquisa); } Integer pageOffset = Integer.parseInt(pageOffsetRequest) - 1; request.setAttribute("page.offset", pageOffset + 1); request.setAttribute("numeroPaginasPesquisa", pageOffset); request.setAttribute("maximoPaginas", ((Double) Math.ceil(Double.parseDouble(totalRegistros) / 10)).intValue()); actionForward = new ActionForward(actionForward.getName(), actionForward.getPath() + "?pager.offset=" + (((pageOffset + 1) * 10) - 10), false); return actionForward; } protected Fachada getFachada() { if (fachada == null) { fachada = Fachada.getInstancia(); } return fachada; } protected HttpSession getSessao(HttpServletRequest request) { return request.getSession(false); } protected Usuario getUsuarioLogado(HttpServletRequest request) { Usuario usuario = (Usuario) this.getSessao(request).getAttribute("usuarioLogado"); return usuario; } protected SistemaParametro getSistemaParametro() { if (sistemaParametro == null) { sistemaParametro = this.getFachada().pesquisarParametrosDoSistema(); } return sistemaParametro; } protected ActionForward controlarPaginacao(HttpServletRequest request, ActionForward actionForward, Integer totalRegistrosPesquisa, Boolean primeiraPaginacao) { if (primeiraPaginacao) { String registrosPrimeiraPaginacao = "" + (Integer) this.getSessao(request).getAttribute("totalRegistrosPrimeiraPaginacao"); String pageOffsetRequest = request.getParameter("page.offset"); if (pageOffsetRequest == null) { pageOffsetRequest = "1"; registrosPrimeiraPaginacao = null; } if ((registrosPrimeiraPaginacao == null || registrosPrimeiraPaginacao.trim().equalsIgnoreCase("") || registrosPrimeiraPaginacao.trim().equalsIgnoreCase("0") || registrosPrimeiraPaginacao .trim().equalsIgnoreCase("null")) || (pageOffsetRequest == null || pageOffsetRequest.trim().equalsIgnoreCase("") || pageOffsetRequest.trim().equalsIgnoreCase("null"))) { Integer totalPesquisa = totalRegistrosPesquisa; registrosPrimeiraPaginacao = "" + totalPesquisa; this.getSessao(request).setAttribute("registrosPrimeiraPaginacao", totalPesquisa); } Integer pageOffset = Integer.parseInt(pageOffsetRequest) - 1; request.setAttribute("page.offset", pageOffset + 1); request.setAttribute("numeroPaginasPesquisaPrimeiraPaginacao", pageOffset); request.setAttribute("maximoPaginas", ((Double) Math.ceil(Double.parseDouble(registrosPrimeiraPaginacao) / 10)).intValue()); actionForward = new ActionForward(actionForward.getName(), actionForward.getPath() + "?pager.offset=" + (((pageOffset + 1) * 10) - 10), false); } else { String registrosSegundaPaginacao = "" + (Integer) this.getSessao(request).getAttribute("totalRegistrosSegundaPaginacao"); String pageOffsetRequest = request.getParameter("page.offset"); if (pageOffsetRequest == null) { pageOffsetRequest = "1"; registrosSegundaPaginacao = null; } if ((registrosSegundaPaginacao == null || registrosSegundaPaginacao.trim().equalsIgnoreCase("") || registrosSegundaPaginacao.trim().equalsIgnoreCase("0") || registrosSegundaPaginacao .trim().equalsIgnoreCase("null")) || (pageOffsetRequest == null || pageOffsetRequest.trim().equalsIgnoreCase("") || pageOffsetRequest.trim().equalsIgnoreCase("null"))) { Integer totalPesquisa = totalRegistrosPesquisa; registrosSegundaPaginacao = "" + totalPesquisa; this.getSessao(request).setAttribute("registrosSegundaPaginacao", totalPesquisa); } Integer pageOffset = Integer.parseInt(pageOffsetRequest) - 1; request.setAttribute("page.offset", pageOffset + 1); request.setAttribute("numeroPaginasPesquisaSegundaPaginacao", pageOffset); request.setAttribute("maximoPaginas", ((Double) Math.ceil(Double.parseDouble(registrosSegundaPaginacao) / 10)).intValue()); actionForward = new ActionForward(actionForward.getName(), actionForward.getPath() + "?pager.offset=" + (((pageOffset + 1) * 10) - 10), false); } return actionForward; } protected boolean verificaReferenciaIgualReferencialFaturamento(Integer referencia) { if (referencia.equals(getSistemaParametro().getAnoMesFaturamento())) return true; return false; } }