use of io.vertigo.dynamo.collections.model.Facet in project vertigo by KleeGroup.
the class ESFacetedQueryResultBuilder method createFacetList.
private static List<Facet> createFacetList(final SearchQuery searchQuery, final SearchResponse queryResponse) {
final List<Facet> facets = new ArrayList<>();
if (searchQuery.getFacetedQuery().isPresent() && queryResponse.getAggregations() != null) {
final FacetedQueryDefinition queryDefinition = searchQuery.getFacetedQuery().get().getDefinition();
for (final FacetDefinition facetDefinition : queryDefinition.getFacetDefinitions()) {
final Aggregation aggregation = obtainAggregation(queryResponse, facetDefinition.getName());
if (aggregation != null) {
final Facet facet = createFacet(facetDefinition, (MultiBucketsAggregation) aggregation);
facets.add(facet);
}
}
}
return facets;
}
use of io.vertigo.dynamo.collections.model.Facet in project vertigo by KleeGroup.
the class FacetManagerTest method addFacetQuery.
private static FacetedQuery addFacetQuery(final String facetName, final String facetValueLabel, final FacetedQueryResult<SmartCar, ?> result) {
// pb d'initialisation, et assert.notNull ne suffit pas
FacetValue facetFilter = null;
final Facet yearFacet = getFacetByName(result, facetName);
for (final Entry<FacetValue, Long> entry : yearFacet.getFacetValues().entrySet()) {
if (entry.getKey().getLabel().getDisplay().toLowerCase(Locale.FRENCH).contains(facetValueLabel)) {
facetFilter = entry.getKey();
break;
}
}
if (facetFilter == null) {
throw new IllegalArgumentException("Pas de FacetValue contenant " + facetValueLabel + " dans la facette " + facetName);
}
final FacetedQuery previousQuery = result.getFacetedQuery().get();
final SelectedFacetValues queryFilters = SelectedFacetValues.of(previousQuery.getSelectedFacetValues()).add(yearFacet.getDefinition(), facetFilter).build();
return new FacetedQuery(previousQuery.getDefinition(), queryFilters);
}
use of io.vertigo.dynamo.collections.model.Facet 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;
}
use of io.vertigo.dynamo.collections.model.Facet 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;
}
use of io.vertigo.dynamo.collections.model.Facet 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;
}
Aggregations