package org.transgalactica.management.data.people.dao; import static org.springframework.util.Assert.notNull; import java.time.LocalDate; import org.springframework.data.jpa.domain.Specification; import org.transgalactica.management.data.materiel.bo.VaisseauEntity; import org.transgalactica.management.data.people.bo.impl.AbstractJpaEmployeEntity; import org.transgalactica.management.data.people.bo.impl.AbstractJpaEmployeEntity_; import org.transgalactica.management.data.referentiel.bo.EmployeType; public abstract class EmployeSpecification { public static Specification<AbstractJpaEmployeEntity> nomContient(final String valeur) { return (root, query, cb) -> { return cb.like(root.get(AbstractJpaEmployeEntity_.nom), "%" + valeur + "%"); }; } public static Specification<AbstractJpaEmployeEntity> estMecanicien() { return (root, query, cb) -> { return cb.equal(root.get(AbstractJpaEmployeEntity_.type), EmployeType.MECANICIEN); }; } public static Specification<AbstractJpaEmployeEntity> estEmbaucheApresLe(final LocalDate debut) { return (root, query, cb) -> { return cb.greaterThanOrEqualTo(root.get(AbstractJpaEmployeEntity_.dateEmbauche), debut); }; } public static Specification<AbstractJpaEmployeEntity> affecteA(final VaisseauEntity vaisseau) { notNull(vaisseau, "vaisseau could not be null"); return (root, query, cb) -> { return cb.equal(root.join(AbstractJpaEmployeEntity_.vaisseaux).get("immatriculation"), vaisseau.getImmatriculation()); }; } }