1 package net.sumaris.core.dao.technical.jpa; 2 3 /*- 4 * #%L 5 * SUMARiS:: Core shared 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.Maps; 26 import org.springframework.data.jpa.domain.Specification; 27 28 import javax.persistence.criteria.ParameterExpression; 29 import java.util.Map; 30 31 public abstract class SpecificationWithParameters<T> implements Specification<T> { 32 33 private Map<String, ParameterExpression<?>> parameters = Maps.newHashMap(); 34 35 36 public <R> ParameterExpression<R> get(String name) { 37 return (ParameterExpression<R>) parameters.get(name); 38 } 39 40 protected <R> ParameterExpression<R> add(ParameterExpression<R> param) { 41 parameters.put(param.getName(), param); 42 return param; 43 } 44 45 46 }