@Override public ProductVariantQueryModel<PartialProductDataQueryModel> masterVariant() { return super.masterVariant(); }
@Override public ProductVariantQueryModel<PartialProductDataQueryModel> variants() { return super.variants(); }
@Override public LocalizedStringQuerySortingModel<PartialProductDataQueryModel> slug() { return super.slug(); }
default ProductQuery bySku(final String sku, final ProductProjectionType type) { final QueryPredicate<PartialProductVariantQueryModel> skuPredicate = PartialProductVariantQueryModel.of().sku().is(sku); final ProductDataQueryModel<Product> projection = ProductQueryModel.of().masterData().forProjection(type); final QueryPredicate<Product> masterVariantSkuPredicate = projection.masterVariant().where(skuPredicate); final QueryPredicate<Product> variantsSkuPredicate = projection.variants().where(skuPredicate); return withPredicates(masterVariantSkuPredicate.or(variantsSkuPredicate)); } }
@Override public QueryPredicate<PartialProductDataQueryModel> where(final Function<PartialProductDataQueryModel, QueryPredicate<PartialProductDataQueryModel>> embeddedPredicate) { return super.where(embeddedPredicate); }
@Override public LocalizedStringQuerySortingModel<PartialProductDataQueryModel> name() { return super.name(); }
@Test public void allVariantsInProduct() throws Exception { assertThat(ProductQueryModel.of().masterData().current().allVariants().where(m -> m.sku().is("bar"))) .isEqualTo(ProductQueryModel.of().masterData().current().where(m -> m.masterVariant().sku().is("bar").or(m.variants().sku().is("bar")))) .isEqualTo(QueryPredicate.<Product>of(embeddedProductPredicate)); }
private ProductDataQueryModel<M> newProductDataQueryModel(final String pathSegment) { return new ProductDataQueryModel<>(this, pathSegment); }
@Override public LocalizedStringQueryModel<PartialProductDataQueryModel> description() { return super.description(); }
@Override public ReferenceListQueryModel<PartialProductDataQueryModel, Category> categories() { return super.categories(); }
@Override public LocalizedStringsQuerySortingModel<PartialProductDataQueryModel> metaDescription() { return super.metaDescription(); }
public QueryDsl<Product> bySku(final String sku, final ProductProjectionType type) { final Predicate<PartialProductVariantQueryModel> skuPredicate = ProductVariantQueryModel.get().sku().is(sku); final ProductDataQueryModel<Product> projection = model().masterData().forProjection(type); final Predicate<Product> masterVariantSkuPredicate = projection.masterVariant().where(skuPredicate); final Predicate<Product> variantsSkuPredicate = projection.variants().where(skuPredicate); return withPredicate(masterVariantSkuPredicate.or(variantsSkuPredicate)); } }
@Override public QueryPredicate<PartialProductDataQueryModel> where(final QueryPredicate<PartialProductDataQueryModel> embeddedPredicate) { return super.where(embeddedPredicate); } }
@Override public LocalizedStringsQuerySortingModel<PartialProductDataQueryModel> name() { return super.name(); }
private ProductDataQueryModel<M> newProductDataQueryModel(String pathSegment) { return new ProductDataQueryModel<M>(Optional.of(this), Optional.of(pathSegment)); }
@Override public LocalizedStringsQueryModel<PartialProductDataQueryModel> description() { return super.description(); }
@Override public ReferenceCollectionQueryModel<PartialProductDataQueryModel, Category> categories() { return super.categories(); }
@Override public LocalizedStringQuerySortingModel<PartialProductDataQueryModel> metaDescription() { return super.metaDescription(); }