/** * Creates a search request object with the product projection type specified by {@code productProjectionType}. * @param productProjectionType the desired projection type for the search results * @see #ofStaged() * @see #ofCurrent() * @return search request for current data */ static ProductProjectionSearch of(final ProductProjectionType productProjectionType) { return new ProductProjectionSearchImpl(productProjectionType); }
@Override public ProductProjectionSearch withPriceSelection(@Nullable final PriceSelection priceSelection) { final List<NameValuePair> resultingParameters = getQueryParametersWithPriceSelection(priceSelection, additionalQueryParameters()); return withAdditionalQueryParameters(resultingParameters); }
ProductProjectionSearchImpl(final ProductProjectionType productProjectionType){ super("/product-projections/search", ProductProjectionSearch.resultTypeReference(), ProductProjectionSearchModel.of().sort(), ProductProjectionSearchModel.of().filter(), ProductProjectionSearchModel.of().facet(), ProductProjectionExpansionModel.of(), ProductProjectionSearchImpl::new, additionalParametersOf(productProjectionType)); }
@Nullable @Override public PriceSelection getPriceSelection() { return extractPriceSelectionFromHttpQueryParameters(additionalQueryParameters()); } }
ProductProjectionSearchImpl(final ProductProjectionType productProjectionType){ super("/product-projections/search", ProductProjectionSearch.resultTypeReference(), ProductProjectionSearchModel.of().sort(), ProductProjectionSearchModel.of().filter(), ProductProjectionSearchModel.of().facet(), ProductProjectionExpansionModel.of(), ProductProjectionSearchImpl::new, additionalParametersOf(productProjectionType)); }
@Nullable @Override public PriceSelection getPriceSelection() { return extractPriceSelectionFromHttpQueryParameters(additionalQueryParameters()); } }
@Override public ProductProjectionSearch withPriceSelection(@Nullable final PriceSelection priceSelection) { final List<NameValuePair> resultingParameters = getQueryParametersWithPriceSelection(priceSelection, additionalQueryParameters()); return withAdditionalQueryParameters(resultingParameters); }
/** * Creates a search request object with the product projection type specified by {@code productProjectionType}. * @param productProjectionType the desired projection type for the search results * @see #ofStaged() * @see #ofCurrent() * @return search request for current data */ static ProductProjectionSearch of(final ProductProjectionType productProjectionType) { return new ProductProjectionSearchImpl(productProjectionType); }
ProductProjectionSearchImpl(final ProductProjectionType productProjectionType){ super("/product-projections/search", ProductProjectionSearch.resultTypeReference(), ProductProjectionSearchModel.of().sort(), ProductProjectionSearchModel.of().filter(), ProductProjectionSearchModel.of().facet(), ProductProjectionExpansionModel.of(), ProductProjectionSearchImpl::new, additionalParametersOf(productProjectionType)); }
@Nullable @Override public Boolean isMarkingMatchingVariants() { return additionalQueryParameters().stream() .filter(p -> MARK_MATCHING_VARIANTS.equals(p.getName())) .map(p -> Boolean.parseBoolean(p.getValue())) .findFirst() .orElse(null); }
@Override public ProductProjectionSearch withMarkingMatchingVariants(final Boolean markMatchingVariants) { final Stream<NameValuePair> oldQueryParametersStream = additionalQueryParameters().stream() .filter(p -> !MARK_MATCHING_VARIANTS.equals(p.getName())); final Stream<NameValuePair> parameter = markMatchingVariants == null ? Stream.empty() : Stream.of(NameValuePair.of(MARK_MATCHING_VARIANTS, markMatchingVariants.toString())); final List<NameValuePair> parameters = Stream.concat(oldQueryParametersStream, parameter).collect(Collectors.toList()); return withAdditionalQueryParameters(parameters); }
/** * Creates a search request object with the product projection type specified by {@code productProjectionType}. * @param productProjectionType the desired projection type for the search results * @see #ofStaged() * @see #ofCurrent() * @return search request for current data */ static ProductProjectionSearch of(final ProductProjectionType productProjectionType) { return new ProductProjectionSearchImpl(productProjectionType); }
@Nullable @Override public Boolean isMarkingMatchingVariants() { return additionalQueryParameters().stream() .filter(p -> MARK_MATCHING_VARIANTS.equals(p.getName())) .map(p -> Boolean.parseBoolean(p.getValue())) .findFirst() .orElse(null); }
@Override public ProductProjectionSearch withMarkingMatchingVariants(final Boolean markMatchingVariants) { final Stream<NameValuePair> oldQueryParametersStream = additionalQueryParameters().stream() .filter(p -> !MARK_MATCHING_VARIANTS.equals(p.getName())); final Stream<NameValuePair> parameter = markMatchingVariants == null ? Stream.empty() : Stream.of(NameValuePair.of(MARK_MATCHING_VARIANTS, markMatchingVariants.toString())); final List<NameValuePair> parameters = Stream.concat(oldQueryParametersStream, parameter).collect(Collectors.toList()); return withAdditionalQueryParameters(parameters); }