use of io.vertigo.dynamo.collections.model.FacetValue in project vertigo by KleeGroup.
the class FacetFactory method createRangeCluster.
private <D extends DtObject> Map<FacetValue, DtList<D>> createRangeCluster(final FacetDefinition facetDefinition, final DtList<D> dtList) {
// map résultat avec les docs par FacetFilter
final Map<FacetValue, DtList<D>> clusterValues = new LinkedHashMap<>();
for (final FacetValue facetRange : facetDefinition.getFacetRanges()) {
// Pour chaque Valeur de facette on trouve les élements.
final DtList<D> facetFilteredList = apply(facetRange.getListFilter(), dtList);
clusterValues.put(facetRange, facetFilteredList);
}
return clusterValues;
}
use of io.vertigo.dynamo.collections.model.FacetValue in project vertigo by KleeGroup.
the class UiSelectedFacets method toSelectedFacetValues.
/**
* Convert this Ui Selected Facets to a SelectedFacetValues.
* @return ListFilter for these Facets
*/
public SelectedFacetValues toSelectedFacetValues() {
final SelectedFacetValuesBuilder selectedFacetValuesBuilder = SelectedFacetValues.empty();
// facet selection list.
for (final Map.Entry<String, String> entry : entrySet()) {
final FacetDefinition facetDefinition = Home.getApp().getDefinitionSpace().resolve(entry.getKey(), FacetDefinition.class);
if (facetDefinition.isRangeFacet()) {
final String label = entry.getValue();
for (final FacetValue facet : facetDefinition.getFacetRanges()) {
if (facet.getLabel().getDisplay().equals(label)) {
selectedFacetValuesBuilder.add(facetDefinition, facet);
break;
}
}
} else {
final String term = entry.getValue();
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);
}
}
return selectedFacetValuesBuilder.build();
}
use of io.vertigo.dynamo.collections.model.FacetValue in project vertigo by KleeGroup.
the class UiSelectedFacets method toListFilters.
/**
* Convert this Selected Facets to a list of ListFilter.
* @return ListFilter for these Facets
*/
public List<ListFilter> toListFilters() {
final List<ListFilter> listFilters = new ArrayList<>(size());
// facet selection list.
for (final Map.Entry<String, String> entry : entrySet()) {
final FacetDefinition facetDefinition = Home.getApp().getDefinitionSpace().resolve(entry.getKey(), FacetDefinition.class);
if (facetDefinition.isRangeFacet()) {
for (final FacetValue facet : facetDefinition.getFacetRanges()) {
if (facet.getCode().equals(entry.getValue())) {
listFilters.add(facet.getListFilter());
break;
}
}
} else {
final ListFilter filter = ListFilter.of(facetDefinition.getDtField().getName() + ":\"" + entry.getValue() + "\"");
listFilters.add(filter);
}
}
return listFilters;
}
use of io.vertigo.dynamo.collections.model.FacetValue in project vertigo by KleeGroup.
the class FacetedQueryResultJsonSerializerV2 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 JsonArray jsonList = (JsonArray) context.serialize(cluster.getValue());
final JsonObject jsonClusterElement = new JsonObject();
jsonClusterElement.add(cluster.getKey().getLabel().getDisplay(), 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()) {
final JsonObject jsonFacetValuesElement = new JsonObject();
jsonFacetValuesElement.addProperty(entry.getKey().getLabel().getDisplay(), entry.getValue());
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;
}
Aggregations