/** * Creates a new instance where each translation value is transformed with {@code function}. * * {@include.example io.sphere.sdk.models.LocalizedStringTest#mapValue()} * * @param function transforms a value for a locale into a new value * @return a new {@link LocalizedString} which consist all elements for this transformed with {@code function} */ public LocalizedString mapValue(final BiFunction<Locale, String, String> function) { return stream().map(entry -> { final String newValue = function.apply(entry.getLocale(), entry.getValue()); return LocalizedStringEntry.of(entry.getLocale(), newValue); }).collect(streamCollector()); }
/** * Collector to collect a stream of {@link LocalizedStringEntry}s to one {@link LocalizedString}. * * {@include.example io.sphere.sdk.models.LocalizedStringTest#streamAndCollector()} * * @return collector */ public static Collector<LocalizedStringEntry, ?, LocalizedString> streamCollector() { final Collector<LocalizedStringEntry, Map<Locale, String>, LocalizedString> result = Collector.of(HashMap::new, (Map<Locale, String> tmpMap, LocalizedStringEntry entry) -> tmpMap.put(entry.getLocale(), entry.getValue()), (Map<Locale, String> left, Map<Locale, String> right) -> { left.putAll(right); return left; }, (Map<Locale, String> entryMap) -> LocalizedString.of(entryMap)); return result; }
private String queryParametersToString(final boolean urlEncoded) { final UrlQueryBuilder builder = UrlQueryBuilder.of(); searchKeywords.forEach(entry -> builder.add("searchKeywords." + entry.getLocale().toLanguageTag(), entry.getValue(), urlEncoded)); Optional.ofNullable(limit).ifPresent(presentLimit -> builder.add("limit", Integer.toString(presentLimit), urlEncoded)); Optional.ofNullable(staged).ifPresent(presentStaged -> builder.add("staged", Boolean.toString(presentStaged), urlEncoded)); Optional.ofNullable(fuzzy).ifPresent(presentStaged -> builder.add("fuzzy", Boolean.toString(presentStaged), urlEncoded)); return builder.build(); }
private String queryParametersToString(final boolean urlEncoded) { final UrlQueryBuilder builder = UrlQueryBuilder.of(); searchKeywords.forEach(entry -> builder.add("searchKeywords." + entry.getLocale().toLanguageTag(), entry.getValue(), urlEncoded)); Optional.ofNullable(limit).ifPresent(presentLimit -> builder.add("limit", Integer.toString(presentLimit), urlEncoded)); Optional.ofNullable(staged).ifPresent(presentStaged -> builder.add("staged", Boolean.toString(presentStaged), urlEncoded)); Optional.ofNullable(fuzzy).ifPresent(presentStaged -> builder.add("fuzzy", Boolean.toString(presentStaged), urlEncoded)); return builder.build(); }
private String queryParametersToString(final boolean urlEncoded) { final UrlQueryBuilder builder = UrlQueryBuilder.of(); searchKeywords.forEach(entry -> builder.add("searchKeywords." + entry.getLocale().toLanguageTag(), entry.getValue(), urlEncoded)); Optional.ofNullable(limit).ifPresent(presentLimit -> builder.add("limit", Integer.toString(presentLimit), urlEncoded)); Optional.ofNullable(staged).ifPresent(presentStaged -> builder.add("staged", Boolean.toString(presentStaged), urlEncoded)); return builder.build(); }
@Test public void ofLanguageTagAndValueForLanguage() { final LocalizedStringEntry entry = LocalizedStringEntry.of("de", "foo"); assertThat(entry.getLocale()).isEqualTo(Locale.GERMAN); assertThat(entry.getValue()).isEqualTo("foo"); }
@Test public void ofLanguageTagAndValueForLanguageTag() { final LocalizedStringEntry entry = LocalizedStringEntry.of("de-DE", "foo"); assertThat(entry.getLocale()).isEqualTo(Locale.GERMANY); assertThat(entry.getValue()).isEqualTo("foo"); } }
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(); }
@Test public void stream() throws Exception { final LocalizedString upperCased = LocalizedString.of(Locale.GERMAN, "Hundefutter", Locale.ENGLISH, "dog food") .stream() .map(e -> LocalizedStringEntry.of(e.getLocale(), e.getValue().toUpperCase())) .collect(LocalizedString.streamCollector()); assertThat(upperCased).isEqualTo(LocalizedString.of(Locale.GERMAN, "HUNDEFUTTER", Locale.ENGLISH, "DOG FOOD")); }
@Test public void streamAndCollector() { final LocalizedString ls = LocalizedString.of(Locale.GERMAN, "Company Hundefutter", Locale.ENGLISH, "Company dog food"); final Stream<LocalizedStringEntry> stream = ls.stream(); final LocalizedString updatedLs = stream .map(entry -> { final Locale locale = entry.getLocale(); final String value = entry.getValue(); final String newValue = value.replace("Company ", ""); return LocalizedStringEntry.of(locale, newValue); }) .collect(LocalizedString.streamCollector()); assertThat(updatedLs).isEqualTo(LocalizedString.of(Locale.GERMAN, "Hundefutter", Locale.ENGLISH, "dog food")); }
@Test public void queryByName() throws Exception { withCategory(client(), category -> { final LocalizedStringEntry name = category.getName().stream().findAny().get(); final Query<Category> query = CategoryQuery.of().byName(name.getLocale(), name.getValue()); assertThat(client().executeBlocking(query).head().get().getId()).isEqualTo(category.getId()); }); }