X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fsparky%2Fsearch%2Ffilters%2FFilterQueryBuilder.java;h=50c994f24cf6eed5071af241143c32cb6df0f4e9;hb=9eb9e258f0ab06a516f6d88d1aedc36fc22aeeaf;hp=fb668f0eb564587f79e8d326f86d223298e78423;hpb=05e74c6879ab564181e7cf92e4444d17cc7e25d4;p=aai%2Fsparky-be.git diff --git a/src/main/java/org/onap/aai/sparky/search/filters/FilterQueryBuilder.java b/src/main/java/org/onap/aai/sparky/search/filters/FilterQueryBuilder.java index fb668f0..50c994f 100644 --- a/src/main/java/org/onap/aai/sparky/search/filters/FilterQueryBuilder.java +++ b/src/main/java/org/onap/aai/sparky/search/filters/FilterQueryBuilder.java @@ -42,12 +42,11 @@ import org.onap.aai.sparky.search.filters.entity.SearchFilter; * Used to generate queries against Elasticsearch for filter related queries. */ public class FilterQueryBuilder { - + private static final int EXISTING_FILTERS_LIMIT = 0; private static final int SHOULD_BRANCH_LIMIT = 2; - public static JsonObject createFilteredBoolQueryObject(List searchFilters, - int minShouldMatch, List fields) { + public static JsonObject createFilteredBoolQueryObject(FiltersConfig filtersConfig, List searchFilters, int minShouldMatch, List fields) { if (searchFilters == null || searchFilters.size() == 0) { return null; @@ -57,8 +56,6 @@ public class FilterQueryBuilder { BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder(); - FiltersConfig filters = FiltersConfig.getInstance(); - for (SearchFilter searchFilter : searchFilters) { searchFilterValueSize = searchFilter.getValues().size(); @@ -66,21 +63,21 @@ public class FilterQueryBuilder { /* * translate the filter-id into the filter-name from the oxm data model/config file */ - UiFilterConfig filter = filters.getFilterById(searchFilter.getFilterId()); + UiFilterConfig filter = filtersConfig.getFilterById(searchFilter.getFilterId()); if (filter == null || filter.getFilterName() == null) { // log error and continue } else { - + String fieldName = filter.getDataSource().getFieldName(); - if (!fields.contains(fieldName)) { + if(!fields.contains(fieldName)) { fields.add(fieldName); } - + if (searchFilterValueSize >= SHOULD_BRANCH_LIMIT) { // Add should branches for (String filterValue : searchFilter.getValues()) { - boolQueryBuilder.addShouldFilter(new MatchFilterCriteriaEntity(fieldName, filterValue)); + boolQueryBuilder.addShouldFilter(new MatchFilterCriteriaEntity(fieldName, filterValue)); } } else if (searchFilterValueSize > EXISTING_FILTERS_LIMIT) { @@ -93,11 +90,11 @@ public class FilterQueryBuilder { } boolQueryBuilder.setMinShouldMatch(minShouldMatch); - + return boolQueryBuilder.getJsonObject(); } - public static JsonObject createAggregationQueryArray(List searchFilters) { + public static JsonObject createAggregationQueryArray(FiltersConfig filtersConfig, List searchFilters) { if (searchFilters == null || searchFilters.size() == 0) { // log error @@ -106,14 +103,12 @@ public class FilterQueryBuilder { FilteredAggregationQueryBuilder aggQueryBuilder = new FilteredAggregationQueryBuilder(); - FiltersConfig filters = FiltersConfig.getInstance(); - for (SearchFilter searchFilter : searchFilters) { /* * translate the filter-id into the filter-name from the oxm data model/config file */ - UiFilterConfig filter = filters.getFilterById(searchFilter.getFilterId()); + UiFilterConfig filter = filtersConfig.getFilterById(searchFilter.getFilterId()); if (filter == null || filter.getFilterName() == null) { // log error and continue @@ -127,31 +122,22 @@ public class FilterQueryBuilder { return aggQueryBuilder.getJsonObject(); } - public static JsonObject createCombinedBoolAndAggQuery(List searchFilters, - int minShouldMatch) { + public static JsonObject createCombinedBoolAndAggQuery(FiltersConfig filtersConfig, List searchFilters, int minShouldMatch) { JsonObjectBuilder wrappedQueryBuilder = Json.createObjectBuilder(); - if (searchFilters != null) { + if(searchFilters != null) { List fields = new ArrayList(); - JsonObject boolQuery = createFilteredBoolQueryObject(searchFilters, minShouldMatch, fields); - JsonObject aggQuery = createAggregationQueryArray(searchFilters); + JsonObject boolQuery = createFilteredBoolQueryObject(filtersConfig,searchFilters, minShouldMatch, fields); + JsonObject aggQuery = createAggregationQueryArray(filtersConfig, searchFilters); if (boolQuery != null) { wrappedQueryBuilder.add("size", 0); - - JsonArrayBuilder filedsArrayBuilder = Json.createBuilderFactory(null).createArrayBuilder(); // TODO - // -> - // Should - // we - // use - // a - // class - // instance - // factory? - for (String field : fields) { + + JsonArrayBuilder filedsArrayBuilder = Json.createBuilderFactory(null).createArrayBuilder(); // TODO -> Should we use a class instance factory? + for(String field : fields) { filedsArrayBuilder.add(field); } wrappedQueryBuilder.add("fields", filedsArrayBuilder.build()); - + wrappedQueryBuilder.add("query", boolQuery); }