001 002package com.commercetools.api.predicates.query; 003 004import java.util.ArrayList; 005import java.util.Collection; 006import java.util.stream.Collectors; 007 008import com.commercetools.api.predicates.CollectionPredicate; 009 010public class CollectionQueryPredicate implements CollectionPredicate<QueryPredicate>, QueryPredicate { 011 private final Collection<QueryPredicate> predicates; 012 013 public CollectionQueryPredicate(Collection<QueryPredicate> predicates) { 014 this.predicates = predicates; 015 } 016 017 public CollectionQueryPredicate() { 018 this.predicates = new ArrayList<>(); 019 } 020 021 @Override 022 public Collection<QueryPredicate> predicates() { 023 return predicates; 024 } 025 026 public CollectionQueryPredicate predicates(Collection<QueryPredicate> predicates) { 027 return new CollectionQueryPredicate(new ArrayList<>(predicates)); 028 } 029 030 public CollectionQueryPredicate addPredicate(QueryPredicate predicate) { 031 ArrayList<QueryPredicate> predicates = new ArrayList<>(this.predicates); 032 predicates.add(predicate); 033 return new CollectionQueryPredicate(predicates); 034 } 035 036 @Override 037 public String render() { 038 return predicates().stream().map(QueryPredicate::render).collect(Collectors.joining(", ")); 039 } 040 041 public static CollectionQueryPredicate of() { 042 return new CollectionQueryPredicate(); 043 } 044}