use of com.ibm.watson.developer_cloud.discovery.v1.model.QueryAggregation in project java-sdk by watson-developer-cloud.
the class AggregationDeserializer method deserialize.
/**
* Deserializes JSON and converts it to the appropriate {@link QueryAggregation} subclass.
*
* @param json the JSON data being deserialized
* @param typeOfT the type to deserialize to, which should be {@link QueryAggregation}
* @param context additional information about the deserialization state
* @return the appropriate {@link QueryAggregation} subclass
* @throws JsonParseException signals that there has been an issue parsing the JSON
*/
@Override
public QueryAggregation deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonReader in = new JsonReader(new StringReader(GsonSingleton.getGson().toJson(json)));
HashMap<String, Object> aggregationMap = null;
try {
aggregationMap = getAggregationMap(in);
} catch (IOException e) {
e.printStackTrace();
}
QueryAggregation aggregation;
String aggregationType = (String) aggregationMap.get(TYPE);
if (aggregationType.equals(AggregationType.HISTOGRAM.getName())) {
aggregation = GsonSerializationHelper.serializeDynamicModelProperty(aggregationMap, Histogram.class);
} else if (aggregationType.equals(AggregationType.MAX.getName()) || aggregationType.equals(AggregationType.MIN.getName()) || aggregationType.equals(AggregationType.AVERAGE.getName()) || aggregationType.equals(AggregationType.SUM.getName())) {
aggregation = GsonSerializationHelper.serializeDynamicModelProperty(aggregationMap, Calculation.class);
} else if (aggregationType.equals(AggregationType.TERM.getName())) {
aggregation = GsonSerializationHelper.serializeDynamicModelProperty(aggregationMap, Term.class);
} else {
aggregation = GsonSerializationHelper.serializeDynamicModelProperty(aggregationMap, QueryAggregation.class);
}
return aggregation;
}
use of com.ibm.watson.developer_cloud.discovery.v1.model.QueryAggregation in project java-sdk by watson-developer-cloud.
the class DiscoveryServiceIT method queryWithNestedAggregationTermIsSuccessful.
@Test
public void queryWithNestedAggregationTermIsSuccessful() {
Collection collection = createTestCollection();
String collectionId = collection.getCollectionId();
createTestDocument("test_document_1", collectionId);
createTestDocument("test_document_2", collectionId);
QueryOptions.Builder queryBuilder = new QueryOptions.Builder(environmentId, collectionId);
StringBuilder sb = new StringBuilder();
sb.append(AggregationType.TERM);
sb.append(Operator.OPENING_GROUPING);
sb.append("field");
sb.append(Operator.CLOSING_GROUPING);
sb.append(Operator.NEST_AGGREGATION);
sb.append(AggregationType.TERM);
sb.append(Operator.OPENING_GROUPING);
sb.append("field");
sb.append(Operator.CLOSING_GROUPING);
String aggregation = sb.toString();
queryBuilder.aggregation(aggregation);
QueryResponse queryResponse = discovery.query(queryBuilder.build()).execute();
Term term = (Term) queryResponse.getAggregations().get(0);
AggregationResult agResults = term.getResults().get(0);
List<QueryAggregation> aggregations = agResults.getAggregations();
assertFalse(aggregations.isEmpty());
}
Aggregations