public MetaModelSearchDslBuilder(final MetaModelSearchDslImpl<T, C, S, L, F, E> template) { this(template.endpoint(), r -> template.deserialize(r), template.getSortModel(), template.getFilterModel(), template.getFacetModel(), template.getExpansionModel(), template.searchDslBuilderFunction); text = template.text(); facets = template.facets(); resultFilters = template.resultFilters(); queryFilters = template.queryFilters(); facetFilters = template.facetFilters(); facetedSearch = template.facetedSearch(); sort = template.sort(); limit = template.limit(); offset = template.offset(); expansionPaths = template.expansionPaths(); additionalQueryParameters = template.additionalQueryParameters(); fuzzy = template.isFuzzy(); fuzzyLevel = template.fuzzyLevel(); }
@Override public C plusFacetFilters(final List<FilterExpression<T>> filterExpressions) { return withFacetFilters(listOf(facetFilters(), filterExpressions)); }
@Override public C plusFacetedSearch(final List<FacetedSearchExpression<T>> facetedSearchExpressions) { return withFacetedSearch(listOf(facetedSearch(), facetedSearchExpressions)); }
String queryParametersToString(final boolean urlEncoded) { final UrlQueryBuilder builder = UrlQueryBuilder.of(); Optional.ofNullable(text()).ifPresent(t -> builder.add(TEXT + "." + t.getLocale().toLanguageTag(), t.getValue(), urlEncoded)); facets().forEach(f -> builder.add(FACET, f.expression(), urlEncoded)); Optional.ofNullable(isFuzzy()).ifPresent(b -> builder.add(FUZZY, b.toString(), urlEncoded)); Optional.ofNullable(fuzzyLevel()).ifPresent(b -> builder.add(FUZZY_LEVEL, b.toString(), urlEncoded)); resultFilters().forEach(f -> builder.add(FILTER_RESULTS, f.expression(), urlEncoded)); queryFilters().forEach(f -> builder.add(FILTER_QUERY, f.expression(), urlEncoded)); facetFilters().forEach(f -> builder.add(FILTER_FACETS, f.expression(), urlEncoded)); facetedSearch().forEach(f -> { builder.add(FACET, f.facetExpression().expression(), urlEncoded); f.filterExpressions().forEach(filter -> { builder.add(FILTER_RESULTS, filter.expression(), urlEncoded); builder.add(FILTER_FACETS, filter.expression(), urlEncoded); }); }); sort().forEach(s -> builder.add(SORT, s.expression(), urlEncoded)); if (!facets().isEmpty() || !facetedSearch().isEmpty()) { builder.add("formatBooleanFacet", Boolean.TRUE.toString(), urlEncoded); } Optional.ofNullable(limit()).ifPresent(l -> builder.add(LIMIT, l.toString(), urlEncoded)); Optional.ofNullable(offset()).ifPresent(o -> builder.add(OFFSET, o.toString(), urlEncoded)); expansionPaths().forEach(path -> builder.add(EXPAND, path.toSphereExpand(), urlEncoded)); additionalQueryParameters().forEach(p -> builder.add(p.getName(), p.getValue(), urlEncoded)); return builder.build(); }
@Override public C withText(@Nullable final LocalizedStringEntry text) { return copyBuilder().text(text).build(); }
@Override public C plusExpansionPaths(final List<ExpansionPath<T>> expansionPaths) { return withExpansionPaths(listOf(expansionPaths(), expansionPaths)); }
@Override public C plusFacets(final List<FacetExpression<T>> facetExpressions) { return withFacets(listOf(facets(), facetExpressions)); }
@Override public C withOffset(final Long offset) { return copyBuilder().offset(offset).build(); }
@Override public C withFuzzy(final Boolean fuzzy) { return copyBuilder().fuzzy(fuzzy).build(); }
@Override public C withExpansionPaths(final List<ExpansionPath<T>> expansionPaths) { return copyBuilder().expansionPaths(expansionPaths).build(); }
@Override public C withFacetFilters(final List<FilterExpression<T>> filterExpressions) { return copyBuilder().facetFilters(filterExpressions).build(); }
@Override public C withSort(final List<SortExpression<T>> sortExpressions) { return copyBuilder().sort(sortExpressions).build(); }
@Override public C withFacets(final List<FacetExpression<T>> facets) { return copyBuilder().facets(facets).build(); }
@Override public C withFacetedSearch(final List<FacetedSearchExpression<T>> facetedSearchExpressions) { return copyBuilder().facetedSearch(facetedSearchExpressions).build(); }
@Override public C withLimit(final Long limit) { return copyBuilder().limit(limit).build(); }
@Override public C withFuzzyLevel(final Integer fuzzyLevel) { return copyBuilder().fuzzyLevel(fuzzyLevel).build(); }
@Override public C withResultFilters(final List<FilterExpression<T>> filterExpressions) { return copyBuilder().resultFilters(filterExpressions).build(); }
@Override public C withQueryFilters(final List<FilterExpression<T>> filterExpressions) { return copyBuilder().queryFilters(filterExpressions).build(); }
protected C withAdditionalQueryParameters(final List<NameValuePair> pairs) { return copyBuilder().additionalQueryParameters(pairs).build(); }