001 002package com.commercetools.api.predicates.query; 003 004import java.util.Arrays; 005import java.util.Collection; 006import java.util.function.Function; 007 008public class GeoJsonPredicateBuilder<T> { 009 private final BinaryQueryPredicate predicate; 010 011 private final Function<QueryPredicate, CombinationQueryPredicate<T>> combinationFn; 012 013 public GeoJsonPredicateBuilder(final BinaryQueryPredicate predicate, 014 final Function<QueryPredicate, CombinationQueryPredicate<T>> combinationFn) { 015 this.predicate = predicate; 016 this.combinationFn = combinationFn; 017 } 018 019 public CombinationQueryPredicate<T> withinCircle(final Double longitude, final Double latitude, 020 final Long distance) { 021 Collection<QueryPredicate> p = Arrays.asList(ConstantQueryPredicate.of().constant(longitude.toString()), 022 ConstantQueryPredicate.of().constant(latitude.toString()), 023 ConstantQueryPredicate.of().constant(distance.toString())); 024 return combinationFn.apply(predicate.operator(PredicateOperator.WITHIN.toString()) 025 .right(ContainerQueryPredicate.of() 026 .parent(ConstantQueryPredicate.of().constant("circle")) 027 .inner(CollectionQueryPredicate.of().predicates(p)))); 028 } 029}