1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Executar contador a partir de 7 dias

Eu preciso de uma ajuda para implementar este método, é o seguinte eu queria que quando atingisse exatamente 7 dias após a dataConfirmacaoExecucao (que é a data persistida no banco) o contador começasse a funcionar. Essa é a lógica que eu preciso implementar e não estou conseguindo.

Exemplo: O contador tem que começar a funcionar quando chegar no sétimo dia após a última execução e quando chegar no dia ele compara sempre a data atual com a datadobanco, enquanto a data não for persistida novamente ele continua contando os dias de atraso.

Classe de modelo ExecucaoRotina, nela recebemos somente as gravações vindas da classe Rotina(@ManyToOne)

private Long id;
private Date dataConfirmacaoExecucao;

@ManyToOne
private Rotina rotina;

// Aqui temos o método contados de dias de atraso pegando a diferença entre data atual com a data gravada no banco pela última vez.
public long getDiasUltimaExecucao() {

    try {
        if (rotina.getPeriodicidade() == Periodicidade.DIARIA) {
            long qtd = PeriodicidadeUtils.getDiferencaDias(new Date(), this.getDataConfirmacaoExecucao());
            return qtd;
        } else if (rotina.getPeriodicidade() == Periodicidade.SEMANAL) {
            long qtd = PeriodicidadeUtils.getDiferencaDias(new Date(), this.getDataConfirmacaoExecucao());
            return qtd;
        }

    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return 0;
}

Aqui temos a classe PeriodicidadeUtils

public class PeriodicidadeUtils {

    // Aqui criamos um horário fixo para a data atual(new Date()), que precisa ser verificada as 07 da manhã.
    public static Date getVerificacaoDiaria(int days) {
        Calendar calendar = new GregorianCalendar();
        calendar.add(Calendar.DAY_OF_MONTH, days);
        calendar.set(Calendar.HOUR_OF_DAY, 07);
        calendar.set(Calendar.MINUTE,00);
        calendar.set(Calendar.SECOND,0);

        Date dataAtualVerificacao = calendar.getTime();
        return dataAtualVerificacao;
    }


    public static long getDiferencaDias(Date dataMaior, Date dataMenor) {

        long diferenca = 0;

        try {

            diferenca = getDiferencaMinutos(dataMaior, dataMenor);

            diferenca = diferenca / 1440; // conversão para dias

        } catch (Exception e) {
            e.printStackTrace();
        }

        return diferenca;
    }

    public static long getDiferencaMinutos(Date dataMaior, Date dataMenor) {

        long time1 = 0;
        long time2 = 0;
        long time3 = 0;

        try {
            time1 = dataMaior.getTime();
            time2 = dataMenor.getTime();

            time3 = time1 - time2;

            time3 = time3 / 1000 / 60; // conversão para minutos

        } catch (Exception e) {
            e.printStackTrace();
        }

        return time3;
    }

}

ManagedBean

@ManagedBean
@ViewScoped
public class MonitoramentoBean implements Serializable {

    private static final long serialVersionUID = 1L;

    private MonitoramentoServices monitoramentoServices;
    private List<ExecucaoRotina> listMonitoramento;    

    /**
     * Construtor que inicializa os services
     */
    public void InicializarServices() {
        monitoramentoServices = new MonitoramentoServices();
    }


    /** get Listagem do monitoramento **/
    public List<ExecucaoRotina> getListMonitoramento() {
        if (listMonitoramento == null) {
            InicializarServices();
            listMonitoramento = monitoramentoServices.obterUltimaExecucaoDasRotinas();
        }
        return listMonitoramento;

    }

XHTML

<p:column headerText="Dias em atraso" styleClass="centralizar" style="width:4%">
    <p:outputLabel value="#{monitoramento.diasUltimaExecucao} dias" rendered="#{monitoramento.diasUltimaExecucao > 0}" />
</p:column>

<p:column headerText="Status" styleClass="centralizar" style="width:3%">
    <h:graphicImage library="img" name="ball-green.png" styleClass="status" rendered="#{monitoramento.diasUltimaExecucao eq 0}"  />
    <h:graphicImage library="img" name="ball-red.png" styleClass="status" rendered="#{monitoramento.diasUltimaExecucao > 0}" />
</p:column>
  • Resposta alterada.

    A H Gusukuma   11 de mai de 2015
  • Fez o teste sugerido na resposta?

    A H Gusukuma   11 de mai de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java orientação-a-objetos date ou faça a sua própria pergunta.