Search in sources :

Example 11 with FacetValue

use of io.vertigo.dynamo.collections.model.FacetValue in project vertigo by KleeGroup.

the class SearchTestWebServices method testSelectedFacetValues.

@POST("/selectedFacetValues")
public UiContext testSelectedFacetValues(final SelectedFacetValues selectedFacetValues) {
    final FacetedQueryDefinition facetedQueryDefinition = Home.getApp().getDefinitionSpace().resolve("QRY_CONTACT_FACET", FacetedQueryDefinition.class);
    final UiContext uiContext = new UiContext();
    for (final FacetDefinition facetDefinition : facetedQueryDefinition.getFacetDefinitions()) {
        if (!selectedFacetValues.getFacetValues(facetDefinition).isEmpty()) {
            uiContext.put(facetDefinition.getName(), selectedFacetValues.getFacetValues(facetDefinition).stream().map(FacetValue::getCode).collect(Collectors.joining(",")));
        }
    }
    return uiContext;
}
Also used : FacetValue(io.vertigo.dynamo.collections.model.FacetValue) FacetDefinition(io.vertigo.dynamo.collections.metamodel.FacetDefinition) FacetedQueryDefinition(io.vertigo.dynamo.collections.metamodel.FacetedQueryDefinition) UiContext(io.vertigo.vega.engines.webservice.json.UiContext) POST(io.vertigo.vega.webservice.stereotype.POST)

Example 12 with FacetValue

use of io.vertigo.dynamo.collections.model.FacetValue in project vertigo by KleeGroup.

the class FacetedQueryResultJsonSerializerV1 method serialize.

/**
 * {@inheritDoc}
 */
@Override
public JsonElement serialize(final FacetedQueryResult<?, ?> facetedQueryResult, final Type typeOfSrc, final JsonSerializationContext context) {
    final JsonObject jsonObject = new JsonObject();
    // 1- add result list as data
    if (facetedQueryResult.getClusters().isEmpty()) {
        final JsonArray jsonList = (JsonArray) context.serialize(facetedQueryResult.getDtList());
        jsonObject.add("list", jsonList);
    } else {
        // if it's a cluster add data's cluster
        final JsonObject jsonCluster = new JsonObject();
        for (final Entry<FacetValue, ?> cluster : facetedQueryResult.getClusters().entrySet()) {
            final JsonArray jsonList = (JsonArray) context.serialize(cluster.getValue());
            jsonCluster.add(cluster.getKey().getLabel().getDisplay(), jsonList);
        }
        jsonObject.add("groups", jsonCluster);
    }
    // 2- add facet list as facets
    final List<Facet> facets = facetedQueryResult.getFacets();
    final JsonObject jsonFacet = new JsonObject();
    for (final Facet facet : facets) {
        final JsonObject jsonFacetValues = new JsonObject();
        facet.getFacetValues().forEach((k, v) -> jsonFacetValues.addProperty(k.getLabel().getDisplay(), v));
        final String facetName = facet.getDefinition().getName();
        jsonFacet.add(facetName, jsonFacetValues);
    }
    jsonObject.add("facets", jsonFacet);
    // 3 -add totalCount
    jsonObject.addProperty(DtList.TOTAL_COUNT_META, facetedQueryResult.getCount());
    return jsonObject;
}
Also used : JsonArray(com.google.gson.JsonArray) FacetValue(io.vertigo.dynamo.collections.model.FacetValue) JsonObject(com.google.gson.JsonObject) Facet(io.vertigo.dynamo.collections.model.Facet)

Example 13 with FacetValue

use of io.vertigo.dynamo.collections.model.FacetValue in project vertigo by KleeGroup.

the class FacetedQueryResultJsonSerializerV3 method serialize.

/**
 * {@inheritDoc}
 */
@Override
public JsonElement serialize(final FacetedQueryResult<?, ?> facetedQueryResult, final Type typeOfSrc, final JsonSerializationContext context) {
    final JsonObject jsonObject = new JsonObject();
    // 1- add result list as data
    if (facetedQueryResult.getClusters().isEmpty()) {
        final JsonArray jsonList = (JsonArray) context.serialize(facetedQueryResult.getDtList());
        jsonObject.add("list", jsonList);
    } else {
        // if it's a cluster add data's cluster
        final JsonArray jsonCluster = new JsonArray();
        for (final Entry<FacetValue, ?> cluster : facetedQueryResult.getClusters().entrySet()) {
            final DtList<?> dtList = (DtList<?>) cluster.getValue();
            if (!dtList.isEmpty()) {
                final JsonArray jsonList = (JsonArray) context.serialize(dtList);
                final JsonObject jsonClusterElement = new JsonObject();
                jsonClusterElement.addProperty("code", cluster.getKey().getCode());
                jsonClusterElement.addProperty("label", cluster.getKey().getLabel().getDisplay());
                jsonClusterElement.add("list", jsonList);
                jsonCluster.add(jsonClusterElement);
            }
        }
        jsonObject.add("groups", jsonCluster);
    }
    // 2- add facet list as facets
    final List<Facet> facets = facetedQueryResult.getFacets();
    final JsonArray jsonFacet = new JsonArray();
    for (final Facet facet : facets) {
        final JsonArray jsonFacetValues = new JsonArray();
        for (final Entry<FacetValue, Long> entry : facet.getFacetValues().entrySet()) {
            if (entry.getValue() > 0) {
                final JsonObject jsonFacetValuesElement = new JsonObject();
                jsonFacetValuesElement.addProperty("code", entry.getKey().getCode());
                jsonFacetValuesElement.addProperty("count", entry.getValue());
                jsonFacetValuesElement.addProperty("label", entry.getKey().getLabel().getDisplay());
                jsonFacetValues.add(jsonFacetValuesElement);
            }
        }
        final String facetName = facet.getDefinition().getName();
        final JsonObject jsonFacetElement = new JsonObject();
        jsonFacetElement.add(facetName, jsonFacetValues);
        jsonFacet.add(jsonFacetElement);
    }
    jsonObject.add("facets", jsonFacet);
    // 3 -add totalCount
    jsonObject.addProperty(DtList.TOTAL_COUNT_META, facetedQueryResult.getCount());
    return jsonObject;
}
Also used : JsonArray(com.google.gson.JsonArray) FacetValue(io.vertigo.dynamo.collections.model.FacetValue) JsonObject(com.google.gson.JsonObject) DtList(io.vertigo.dynamo.domain.model.DtList) Facet(io.vertigo.dynamo.collections.model.Facet)

Example 14 with FacetValue

use of io.vertigo.dynamo.collections.model.FacetValue in project vertigo by KleeGroup.

the class FacetedQueryResultJsonSerializerV4 method serialize.

/**
 * {@inheritDoc}
 */
@Override
public JsonElement serialize(final FacetedQueryResult<?, ?> facetedQueryResult, final Type typeOfSrc, final JsonSerializationContext context) {
    final JsonObject jsonObject = new JsonObject();
    // 1- add result list as data, with highlight
    if (!facetedQueryResult.getClusterFacetDefinition().isPresent()) {
        final DtList<?> dtList = facetedQueryResult.getDtList();
        final JsonArray jsonList = (JsonArray) context.serialize(dtList);
        jsonObject.add("list", jsonList);
        jsonObject.addProperty("listType", dtList.getDefinition().getClassSimpleName());
        jsonObject.add("highlight", serializeHighLight(dtList, (FacetedQueryResult) facetedQueryResult));
    } else {
        // if it's a cluster add data's cluster
        final JsonArray jsonCluster = new JsonArray();
        for (final Entry<FacetValue, ?> cluster : facetedQueryResult.getClusters().entrySet()) {
            final DtList<?> dtList = (DtList<?>) cluster.getValue();
            if (!dtList.isEmpty()) {
                final JsonArray jsonList = (JsonArray) context.serialize(dtList);
                final JsonObject jsonClusterElement = new JsonObject();
                jsonClusterElement.addProperty("code", cluster.getKey().getCode());
                jsonClusterElement.addProperty("label", cluster.getKey().getLabel().getDisplay());
                jsonClusterElement.add("list", jsonList);
                jsonClusterElement.addProperty("listType", dtList.getDefinition().getClassSimpleName());
                jsonClusterElement.addProperty("totalCount", getFacetCount(cluster.getKey(), facetedQueryResult));
                jsonClusterElement.add("highlight", serializeHighLight(dtList, (FacetedQueryResult) facetedQueryResult));
                jsonCluster.add(jsonClusterElement);
            }
        }
        jsonObject.add("groups", jsonCluster);
    }
    // 2- add facet list as facets
    final List<Facet> facets = facetedQueryResult.getFacets();
    final JsonArray jsonFacet = new JsonArray();
    for (final Facet facet : facets) {
        final JsonArray jsonFacetValues = new JsonArray();
        for (final Entry<FacetValue, Long> entry : facet.getFacetValues().entrySet()) {
            if (entry.getValue() > 0) {
                final JsonObject jsonFacetValuesElement = new JsonObject();
                jsonFacetValuesElement.addProperty("code", entry.getKey().getCode());
                jsonFacetValuesElement.addProperty("count", entry.getValue());
                jsonFacetValuesElement.addProperty("label", entry.getKey().getLabel().getDisplay());
                jsonFacetValues.add(jsonFacetValuesElement);
            }
        }
        final JsonObject jsonFacetElement = new JsonObject();
        jsonFacetElement.addProperty("code", facet.getDefinition().getName());
        jsonFacetElement.addProperty("label", facet.getDefinition().getLabel().getDisplay());
        jsonFacetElement.add("values", jsonFacetValues);
        jsonFacet.add(jsonFacetElement);
    }
    jsonObject.add("facets", jsonFacet);
    // 3 -add totalCount
    jsonObject.addProperty(DtList.TOTAL_COUNT_META, facetedQueryResult.getCount());
    return jsonObject;
}
Also used : JsonArray(com.google.gson.JsonArray) FacetValue(io.vertigo.dynamo.collections.model.FacetValue) FacetedQueryResult(io.vertigo.dynamo.collections.model.FacetedQueryResult) JsonObject(com.google.gson.JsonObject) DtList(io.vertigo.dynamo.domain.model.DtList) Facet(io.vertigo.dynamo.collections.model.Facet)

Example 15 with FacetValue

use of io.vertigo.dynamo.collections.model.FacetValue in project vertigo by KleeGroup.

the class SelectedFacetValuesDeserializer method appendTermFacetValue.

private static void appendTermFacetValue(final JsonElement value, final FacetDefinition facetDefinition, final SelectedFacetValuesBuilder selectedFacetValuesBuilder) {
    final String term = value.getAsString();
    final MessageText label = MessageText.of(term);
    final String query = facetDefinition.getDtField().getName() + ":\"" + term + "\"";
    final FacetValue facetValue = new FacetValue(term, ListFilter.of(query), label);
    selectedFacetValuesBuilder.add(facetDefinition, facetValue);
}
Also used : FacetValue(io.vertigo.dynamo.collections.model.FacetValue) MessageText(io.vertigo.core.locale.MessageText)

Aggregations

FacetValue (io.vertigo.dynamo.collections.model.FacetValue)44 Facet (io.vertigo.dynamo.collections.model.Facet)24 DtList (io.vertigo.dynamo.domain.model.DtList)17 HashMap (java.util.HashMap)13 ArrayList (java.util.ArrayList)12 FacetDefinition (io.vertigo.dynamo.collections.metamodel.FacetDefinition)11 LinkedHashMap (java.util.LinkedHashMap)10 MessageText (io.vertigo.core.locale.MessageText)9 List (java.util.List)9 Map (java.util.Map)9 ListFilter (io.vertigo.dynamo.collections.ListFilter)8 FacetedQuery (io.vertigo.dynamo.collections.model.FacetedQuery)8 FacetedQueryResult (io.vertigo.dynamo.collections.model.FacetedQueryResult)8 SelectedFacetValues (io.vertigo.dynamo.collections.model.SelectedFacetValues)8 SearchQuery (io.vertigo.dynamo.search.model.SearchQuery)8 Test (org.junit.Test)8 DtListState (io.vertigo.dynamo.domain.model.DtListState)6 Bucket (org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation.Bucket)6 FacetedQueryDefinition (io.vertigo.dynamo.collections.metamodel.FacetedQueryDefinition)5 DtField (io.vertigo.dynamo.domain.metamodel.DtField)5