private void addQueryFilters(final ContentQuery.Builder builder) {
   if (contentQueryJson.getQueryFilters() != null) {
     for (final FilterJson queryFilterJson : contentQueryJson.getQueryFilters()) {
       builder.queryFilter(queryFilterJson.getFilter());
     }
   }
 }
 private void addAggregationQueries(final ContentQuery.Builder builder) {
   if (contentQueryJson.getAggregationQueries() != null) {
     for (final AggregationQueryJson aggregationQueryJson :
         contentQueryJson.getAggregationQueries()) {
       builder.aggregationQuery(aggregationQueryJson.getAggregationQuery());
     }
   }
 }
  private void addOutboundContentIdsToFilter(final ContentQuery.Builder builder) {
    if (contentQueryJson.getMustBeReferencedById() != null) {

      final ContentIds ids =
          this.contentService.getOutboundDependencies(contentQueryJson.getMustBeReferencedById());

      // TODO: no need to filter when we fix that removed content will be removed from references
      builder.filterContentIds(getExistingContentIds(ids));
    }
  }
  public ContentQuery createQuery() {
    final ContentQuery.Builder builder =
        ContentQuery.create()
            .from(contentQueryJson.getFrom())
            .size(contentQueryJson.getSize())
            .queryExpr(QueryParser.parse(contentQueryJson.getQueryExprString()))
            .addContentTypeNames(contentQueryJson.getContentTypeNames());

    addAggregationQueries(builder);

    addQueryFilters(builder);

    addOutboundContentIdsToFilter(builder);

    return builder.build();
  }