changed the header license to new license
[aai/sparky-be.git] / src / main / java / org / onap / aai / sparky / search / filters / FilteredSearchHelper.java
1 /**
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
4  * ================================================================================
5  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * Copyright © 2017-2018 Amdocs
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *       http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21 package org.onap.aai.sparky.search.filters;
22
23 import java.util.HashMap;
24 import java.util.List;
25 import java.util.Map;
26
27 import org.onap.aai.cl.api.Logger;
28 import org.onap.aai.cl.eelf.LoggerFactory;
29 import org.onap.aai.sparky.logging.AaiUiMsgs;
30 import org.onap.aai.sparky.search.filters.config.FiltersConfig;
31 import org.onap.aai.sparky.search.filters.config.FiltersDetailsConfig;
32 import org.onap.aai.sparky.search.filters.config.UiFilterConfig;
33 import org.onap.aai.sparky.search.filters.config.UiFilterDataSourceConfig;
34 import org.onap.aai.sparky.search.filters.config.UiFilterListItemConfig;
35 import org.onap.aai.sparky.search.filters.config.UiViewListItemConfig;
36 import org.onap.aai.sparky.search.filters.entity.UiFilterEntity;
37 import org.onap.aai.sparky.search.filters.entity.UiFilterValueEntity;
38 import org.onap.aai.sparky.search.filters.entity.UiFiltersEntity;
39
40 public class FilteredSearchHelper {
41   private static final Logger LOG = LoggerFactory.getInstance().getLogger(FilteredSearchHelper.class);
42
43   private FiltersConfig filtersConfig;
44   private Map<String, UiFilterConfig> filtersMap = null;
45   private FilterElasticSearchAdapter filterSearchAdapter = null;
46   
47   public FilteredSearchHelper(FiltersConfig filterConfig,FilterElasticSearchAdapter filterElasticSearchAdapter) {
48     this.filtersConfig = filterConfig;
49     this.filterSearchAdapter = filterElasticSearchAdapter;
50
51     if (filtersMap == null) {
52       filtersMap = new HashMap<>();
53
54       final FiltersDetailsConfig uiFiltersConfig = filterConfig.getFiltersConfig();
55       
56       if (uiFiltersConfig != null) {
57         for (UiFilterConfig filter : uiFiltersConfig.getFilters()) {
58           filtersMap.put(filter.getFilterId(), filter);
59         }
60       }
61     }
62     
63   }
64
65   public FiltersConfig getFiltersConfig() {
66     return filtersConfig;
67   }
68
69   public void setFiltersConfig(FiltersConfig filterConfig) {
70     this.filtersConfig = filterConfig;
71   }
72
73   public UiFiltersEntity doFilterDiscovery(String viewName) {
74     List<UiViewListItemConfig> views = filtersConfig.getViewsConfig().getViews();
75     List<UiFilterListItemConfig> filters = null;
76     UiFiltersEntity viewFiltersList = new UiFiltersEntity();
77    
78     if(viewName != null) {
79       for (UiViewListItemConfig view: views) {
80         if (viewName.equalsIgnoreCase(view.getViewName())) {
81           filters = view.getFilters();
82           break;
83         }
84       }
85   
86       if (filters == null) {
87         LOG.error(AaiUiMsgs.VIEW_NAME_NOT_SUPPORTED, viewName);
88       } else {
89         for (UiFilterListItemConfig filter : filters) {
90           FiltersDetailsConfig filtersDetailsConfig = filtersConfig.getFiltersConfig();
91           
92           for (UiFilterConfig filterConfig: filtersDetailsConfig.getFilters()) {
93             if (filterConfig.getFilterId().equals(filter.getFilterId())) {
94               UiFilterEntity filterEntity = new UiFilterEntity(filterConfig);
95               if(filter.getDefaultValue() != null) {
96                 filterEntity.setDefaultValue(filter.getDefaultValue());
97               }
98               viewFiltersList.addFilter(filterEntity);
99             }
100           }
101         }
102       }
103     }
104     return viewFiltersList;
105   }
106   
107   public UiFiltersEntity doFilterEnumeration(List<String> requestedFilterIds) {
108     UiFiltersEntity viewFiltersList = new UiFiltersEntity();
109
110     for (String requestedFilterId : requestedFilterIds) {
111       if (null == filtersMap.get(requestedFilterId)) {
112         String errorMessage = "Requested filter ID '" + requestedFilterId + "' does not exist.";
113         LOG.error(AaiUiMsgs.SEARCH_SERVLET_ERROR, errorMessage);
114       } else {
115         UiFilterConfig sourceData = filtersMap.get(requestedFilterId);
116         UiFilterEntity filterEntity = new UiFilterEntity(sourceData);
117         this.getFilterEnumeration(filterEntity, sourceData);
118         viewFiltersList.addFilter(filterEntity);        
119       }
120     }
121
122     return viewFiltersList;
123   }
124   
125   public void getFilterEnumeration(UiFilterEntity filter, UiFilterConfig sourceData) {
126    List<String> filterValues = filterSearchAdapter.fetchValuesForFilter(filter, sourceData.getDataSource());
127    
128    for(String value : filterValues) {
129      UiFilterValueEntity valueEntity = new UiFilterValueEntity();
130      valueEntity.setDisplayName(value);
131      valueEntity.setFilterValue(value);
132      filter.addFilterValue(valueEntity);
133    }
134   }
135
136   public Map<String, UiFilterConfig> getFiltersMap() {
137     return filtersMap;
138   }
139
140   public void setFiltersMap(Map<String, UiFilterConfig> filtersMap) {
141     this.filtersMap = filtersMap;
142   }
143   
144   public UiFilterDataSourceConfig getFilterDataSource(String filterId) {
145     UiFilterConfig filterConfig = filtersMap.get(filterId);
146     UiFilterDataSourceConfig returnValue = null;
147     
148     if(filterConfig != null) {
149       returnValue = filterConfig.getDataSource();
150     }
151     
152     return returnValue;
153   }
154 }