View Javadoc
1   package net.sumaris.core.dao.referential.taxon;
2   
3   /*-
4    * #%L
5    * SUMARiS:: Core
6    * %%
7    * Copyright (C) 2018 - 2019 SUMARiS Consortium
8    * %%
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU General Public License as
11   * published by the Free Software Foundation, either version 3 of the
12   * License, or (at your option) any later version.
13   * 
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Public License for more details.
18   * 
19   * You should have received a copy of the GNU General Public
20   * License along with this program.  If not, see
21   * <http://www.gnu.org/licenses/gpl-3.0.html>.
22   * #L%
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  }