public QueryPredicate<T> where(final Function<PartialProductVariantQueryModel, QueryPredicate<PartialProductVariantQueryModel>> embeddedPredicate) { return where(embeddedPredicate.apply(PartialProductVariantQueryModel.of())); }
@SuppressWarnings("unchecked") private QueryPredicate<T> where(final QueryPredicate<EmbeddedProductVariantQueryModel> embeddedPredicate) { final WithEmbeddedSharedProductProjectionProductDataQueryModel<T> parent = Optional.ofNullable((WithEmbeddedSharedProductProjectionProductDataQueryModel<T>) getParent()) .orElseThrow(() -> new UnsupportedOperationException("A proper parent model is required.")); return parent.where(m -> m.masterVariant().where(embeddedPredicate).or(m.variants().where(embeddedPredicate))); }
@SuppressWarnings("unchecked") private QueryPredicate<T> where(final QueryPredicate<EmbeddedProductVariantQueryModel> embeddedPredicate) { final WithEmbeddedSharedProductProjectionProductDataQueryModel<T> parent = Optional.ofNullable((WithEmbeddedSharedProductProjectionProductDataQueryModel<T>) getParent()) .orElseThrow(() -> new UnsupportedOperationException("A proper parent model is required.")); return parent.where(m -> m.masterVariant().where(embeddedPredicate).or(m.variants().where(embeddedPredicate))); }
private QueryPredicate<T> where(final QueryPredicate<PartialProductVariantQueryModel> embeddedPredicate) { final ProductDataQueryModelBase<T> parent = Optional.ofNullable((ProductDataQueryModelBase<T>) getParent()) .orElseThrow(() -> new UnsupportedOperationException("A proper parent model is required.")); return parent.where(m -> m.masterVariant().where(embeddedPredicate).or(m.variants().where(embeddedPredicate))); }
default ProductQuery bySku(final String sku, final ProductProjectionType type) { final QueryPredicate<EmbeddedProductVariantQueryModel> skuPredicate = EmbeddedProductVariantQueryModel.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)); } }
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)); } }
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)); } }
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)); } }
default ProductQuery bySku(final String sku, final ProductProjectionType type) { final QueryPredicate<EmbeddedProductVariantQueryModel> skuPredicate = EmbeddedProductVariantQueryModel.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)); } }
@Test public void whereClosure() throws Exception { final ProductVariantQueryModel<String> model = ProductVariantQueryModel.of(null, "foo"); final QueryPredicate<String> normalWay = model.where(EmbeddedProductVariantQueryModel.of().sku().is("x")); final QueryPredicate<String> closureWay = model.where(m -> m.sku().is("x")); assertThat(normalWay.toSphereQuery()).isEqualTo(closureWay.toSphereQuery()).isEqualTo("foo(sku=\"x\")"); } }