1 package net.sumaris.core.dao.referential.taxon;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import com.google.common.collect.ImmutableList;
26 import net.sumaris.core.dao.referential.ReferentialSpecifications;
27 import net.sumaris.core.model.referential.Status;
28 import net.sumaris.core.model.referential.gear.Gear;
29 import net.sumaris.core.model.referential.metier.Metier;
30 import net.sumaris.core.model.referential.taxon.TaxonGroup;
31 import org.apache.commons.lang3.ArrayUtils;
32 import org.springframework.data.jpa.domain.Specification;
33
34 import javax.persistence.criteria.JoinType;
35
36 public class TaxonGroupSpecifications extends ReferentialSpecifications {
37
38 public static Specification<TaxonGroup> hasType(Integer taxonGroupTypeId) {
39 if (taxonGroupTypeId == null) return null;
40 return (root, query, cb) -> cb.equal(
41 root.get(TaxonGroup.Fields.TAXON_GROUP_TYPE).get(Status.Fields.ID),
42 taxonGroupTypeId);
43 }
44
45
46 public static Specification<TaxonGroup> inGearIds(Integer[] gearIds) {
47 if (ArrayUtils.isEmpty(gearIds)) return null;
48 return (root, query, cb) -> cb.in(
49 root.joinList(TaxonGroup.Fields.METIERS, JoinType.INNER)
50 .join(Metier.Fields.GEAR, JoinType.INNER)
51 .get(Gear.Fields.ID))
52 .value(ImmutableList.copyOf(gearIds));
53 }
54
55
56
57
58
59 }