UI Exensibility config cleanup
[aai/sparky-be.git] / src / main / java / org / onap / aai / sparky / search / filters / FilterQueryBuilder.java
index fb668f0..50c994f 100644 (file)
@@ -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<SearchFilter> searchFilters,
-      int minShouldMatch, List<String> fields) {
+  public static JsonObject createFilteredBoolQueryObject(FiltersConfig filtersConfig, List<SearchFilter> searchFilters, int minShouldMatch, List<String> 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<SearchFilter> searchFilters) {
+  public static JsonObject createAggregationQueryArray(FiltersConfig filtersConfig, List<SearchFilter> 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<SearchFilter> searchFilters,
-      int minShouldMatch) {
+  public static JsonObject createCombinedBoolAndAggQuery(FiltersConfig filtersConfig, List<SearchFilter> searchFilters, int minShouldMatch) {
     JsonObjectBuilder wrappedQueryBuilder = Json.createObjectBuilder();
-    if (searchFilters != null) {
+    if(searchFilters != null) {
       List<String> fields = new ArrayList<String>();
-      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);
       }