001
002package com.commercetools.api.models.product;
003
004import java.util.Map;
005import java.util.Optional;
006import java.util.stream.Collectors;
007
008import javax.annotation.Nullable;
009
010import io.vrap.rmf.base.client.Accessor;
011import io.vrap.rmf.base.client.utils.json.JsonUtils;
012
013/**
014 * Accessor to retrieve type safe facet results
015 */
016public class FacetResultsAccessor extends Accessor<FacetResults> {
017    public FacetResultsAccessor(FacetResults value) {
018        super(value);
019    }
020
021    @Nullable
022    public Map<String, FacetResult> facets() {
023        return asFacetResultMap(value);
024    }
025
026    @Nullable
027    public static Map<String, FacetResult> asFacetResultMap(FacetResults value) {
028        return Optional.ofNullable(value.values())
029                .map(values -> values.entrySet()
030                        .stream()
031                        .collect(Collectors.toMap(Map.Entry::getKey,
032                            entry -> JsonUtils.getConfiguredObjectMapper()
033                                    .convertValue(entry.getValue(), FacetResult.class))))
034                .orElse(null);
035    }
036}