Java tutorial
/*** Copyright (c) 2012 - 2020 Hrcules S. S. Jos Este arquivo parte do programa Oramento Domstico. Oramento Domstico um software livre; voc pode redistribui-lo e/ou modific-lo dentro dos termos da Licena Pblica Geral Menor GNU como publicada pela Fundao do Software Livre (FSF); na verso 2.1 da Licena. Este programa distribudo na esperana que possa ser til, mas SEM NENHUMA GARANTIA; sem uma garantia implcita de ADEQUAO a qualquer MERCADO ou APLICAO EM PARTICULAR. Veja a Licena Pblica Geral Menor GNU em portugus para maiores detalhes. Voc deve ter recebido uma cpia da Licena Pblica Geral Menor GNU sob o nome de "LICENSE.TXT" junto com este programa, se no, acesse o site do projeto no endereco https://github.com/herculeshssj/orcamento ou escreva para a Fundao do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Para mais informaes sobre o programa Oramento Domstico e seu autor entre em contato pelo e-mail herculeshssj@outlook.com, ou ainda escreva para Hrcules S. S. Jos, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404, Marco II - Nova Iguau, RJ, Brasil. ***/ package br.com.hslife.orcamento.service; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import br.com.hslife.orcamento.component.UsuarioComponent; import br.com.hslife.orcamento.entity.Agenda; import br.com.hslife.orcamento.entity.Conta; import br.com.hslife.orcamento.entity.LancamentoConta; import br.com.hslife.orcamento.enumeration.StatusLancamentoConta; import br.com.hslife.orcamento.facade.IAgenda; import br.com.hslife.orcamento.model.CriterioAgendamento; import br.com.hslife.orcamento.model.CriterioBuscaLancamentoConta; import br.com.hslife.orcamento.repository.AgendaRepository; import br.com.hslife.orcamento.repository.LancamentoContaRepository; @Service("agendaService") public class AgendaService extends AbstractCRUDService<Agenda> implements IAgenda { @Autowired private AgendaRepository repository; @Autowired private LancamentoContaRepository lancamentoContaRepository; @Autowired private UsuarioComponent usuarioComponent; public AgendaRepository getRepository() { repository.setSessionFactory(this.sessionFactory); return repository; } public LancamentoContaRepository getLancamentoContaRepository() { lancamentoContaRepository.setSessionFactory(this.sessionFactory); return lancamentoContaRepository; } public UsuarioComponent getUsuarioComponent() { return usuarioComponent; } @Override public List<Agenda> buscarAgendamentoLancamentosAgendados(Conta conta, Date dataInicio, Date dataFim) { CriterioBuscaLancamentoConta criterioBusca = new CriterioBuscaLancamentoConta(); List<Agenda> agendamentos = new ArrayList<>(); Agenda agenda = new Agenda(); criterioBusca.setConta(conta); criterioBusca.setDataInicio(dataInicio); criterioBusca.setDataFim(dataFim); criterioBusca.setStatusLancamentoConta(new StatusLancamentoConta[] { StatusLancamentoConta.AGENDADO }); for (LancamentoConta lancamento : getLancamentoContaRepository().findByCriterioBusca(criterioBusca)) { agenda.setDataInicio(lancamento.getDataPagamento()); agenda.setDescricao(lancamento.getConta().getLabel() + " - " + lancamento.getDescricao()); agenda.setUsuario(lancamento.getConta().getUsuario()); agendamentos.add(agenda); agenda = new Agenda(); } return agendamentos; } @Override public List<Agenda> buscarPorCriterioAgendamento(CriterioAgendamento criterioBusca) { return getRepository().findByCriterioAgendamento(criterioBusca); } @SuppressWarnings("deprecation") @Override public Long contarAgendamentosDeHojeComAlerta() { Date inicio = new Date(); inicio.setHours(0); inicio.setMinutes(0); inicio.setSeconds(0); Date fim = new Date(inicio.getTime()); fim.setHours(23); fim.setMinutes(59); fim.setSeconds(59); return getRepository().countAgendamentoByDataInicioOrDataFimAndAlerta(inicio, fim, true, getUsuarioComponent().getUsuarioLogado()); } @SuppressWarnings("deprecation") public List<Agenda> buscarAgendamentosDoDia() { CriterioAgendamento criterioBusca = new CriterioAgendamento(); Date inicio = new Date(); inicio.setHours(0); inicio.setMinutes(0); inicio.setSeconds(0); Date fim = new Date(inicio.getTime()); fim.setHours(23); fim.setMinutes(59); fim.setSeconds(59); criterioBusca.setInicio(inicio); criterioBusca.setFim(fim); criterioBusca.setUsuario(getUsuarioComponent().getUsuarioLogado()); return getRepository().findByCriterioAgendamento(criterioBusca); } @Override public List<Agenda> buscarAgendamentoPorOuDataInicioOuDataFimEAlerta(Date inicio, Date fim, boolean emiteAlerta) { return getRepository().findAgendamentoByOrDataInicioOrDataFimAndAlerta(inicio, fim, emiteAlerta); } }