Java tutorial
package nc.noumea.mairie.appock.services.impl; /*- * #%L * Logiciel de Gestion des approvisionnements et des stocks des fournitures administratives de la Mairie de Nouma * %% * Copyright (C) 2017 Mairie de Nouma, Nouvelle-Caldonie * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ import nc.noumea.mairie.appock.core.services.impl.GenericServiceImpl; import nc.noumea.mairie.appock.core.utility.DateUtil; import nc.noumea.mairie.appock.entity.DatePrevisionnelleCommande; import nc.noumea.mairie.appock.repositories.DatePrevisionnelleCommandeRepository; import nc.noumea.mairie.appock.services.AuthHelper; import nc.noumea.mairie.appock.services.DatePrevisionnelleCommandeService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.ScopedProxyMode; import org.springframework.data.repository.CrudRepository; import org.springframework.transaction.annotation.Transactional; import javax.validation.ValidationException; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @org.springframework.stereotype.Service("datePrevisionnelleCommandeService") @Scope(value = "singleton", proxyMode = ScopedProxyMode.TARGET_CLASS) @Transactional public class DatePrevisionnelleCommandeServiceImpl extends GenericServiceImpl<DatePrevisionnelleCommande> implements DatePrevisionnelleCommandeService { @Autowired DatePrevisionnelleCommandeRepository datePrevisionnelleCommandeRepository; @Autowired AuthHelper authHelper; @Override public CrudRepository getRepository() { return datePrevisionnelleCommandeRepository; } @Override public DatePrevisionnelleCommande create(LocalDate date) { if (date == null) { throw new ValidationException("La date ne peut pas tre nulle"); } if (datePrevisionnelleCommandeRepository.findOneByDatePrevisionnelle(date.atStartOfDay()) != null) { throw new ValidationException("La date prvisionnelle existe dj"); } DatePrevisionnelleCommande datePrevisionnelleCommande = new DatePrevisionnelleCommande(); datePrevisionnelleCommande.setDatePrevisionnelle(date.atStartOfDay()); datePrevisionnelleCommande.setCreateUser(authHelper.getCurrentUser().getNomComplet()); return this.save(datePrevisionnelleCommande); } @Override public DatePrevisionnelleCommande getNextDatePrevisionnelleCommandeANotifier(LocalDateTime dateTime) { List<DatePrevisionnelleCommande> listeDatePrevisionnelleCommande = datePrevisionnelleCommandeRepository .findAllByDatePrevisionnelleAfterAndNotificationEnvoyeOrderByDatePrevisionnelleAsc(dateTime, false); return CollectionUtils.isEmpty(listeDatePrevisionnelleCommande) ? null : listeDatePrevisionnelleCommande.get(0); } @Override public void supprimerAnciennesDatesPrevisionnelles() { List<DatePrevisionnelleCommande> listeDatePrevisionnelleCommande = datePrevisionnelleCommandeRepository .findAllByDatePrevisionnelleBefore(DateUtil.aujourdhui00h00()); datePrevisionnelleCommandeRepository.delete(listeDatePrevisionnelleCommande); } }