summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/ajsc/inventory-ui-service_v1/inventory-ui-service/v1/routes/sparky-core-unifiedFilterRequest.route4
-rw-r--r--src/main/java/org/onap/aai/sparky/logging/AaiUiMsgs.java6
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/FilterElasticSearchAdapter.java137
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/FilterProcessor.java142
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/FilterQueryBuilder.java220
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/FilteredSearchHelper.java156
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/UiFiltersEntityConverter.java178
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/config/FiltersConfig.java157
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/config/FiltersDetailsConfig.java55
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/config/FiltersForViewsConfig.java55
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterConfig.java186
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterDataSourceConfig.java97
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterListItemConfig.java69
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterOptionsValuesConfig.java66
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/config/UiViewListItemConfig.java66
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/entity/AggregationEntity.java78
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/entity/BoolQueryBuilder.java121
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/entity/FilteredAggregationQueryBuilder.java63
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/entity/MatchFilterCriteriaEntity.java75
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/entity/SearchFilter.java86
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/entity/UiFilterEntity.java178
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/entity/UiFilterValueEntity.java78
-rw-r--r--src/main/java/org/onap/aai/sparky/search/filters/entity/UiFiltersEntity.java51
-rw-r--r--src/main/java/org/onap/aai/sparky/security/portal/PortalRestAPIServiceImpl.java8
-rw-r--r--src/main/java/org/onap/aai/sparky/synchronizer/config/NetworkStatisticsConfig.java237
-rw-r--r--src/main/java/org/onap/aai/sparky/viewandinspect/config/TierSupportUiConstants.java26
26 files changed, 2586 insertions, 9 deletions
diff --git a/src/main/ajsc/inventory-ui-service_v1/inventory-ui-service/v1/routes/sparky-core-unifiedFilterRequest.route b/src/main/ajsc/inventory-ui-service_v1/inventory-ui-service/v1/routes/sparky-core-unifiedFilterRequest.route
new file mode 100644
index 0000000..36cf518
--- /dev/null
+++ b/src/main/ajsc/inventory-ui-service_v1/inventory-ui-service/v1/routes/sparky-core-unifiedFilterRequest.route
@@ -0,0 +1,4 @@
+<route xmlns="http://camel.apache.org/schema/spring" trace="true">
+ <from uri="restlet:/search/unifiedFilterRequest?restletMethods=get,post" />
+ <to uri="bean:filterProcessor?method=getFiltersWithValues"/>
+</route> \ No newline at end of file
diff --git a/src/main/java/org/onap/aai/sparky/logging/AaiUiMsgs.java b/src/main/java/org/onap/aai/sparky/logging/AaiUiMsgs.java
index 12e53b5..4555b70 100644
--- a/src/main/java/org/onap/aai/sparky/logging/AaiUiMsgs.java
+++ b/src/main/java/org/onap/aai/sparky/logging/AaiUiMsgs.java
@@ -412,6 +412,12 @@ public enum AaiUiMsgs implements LogMessageEnum {
ERROR_AAI_QUERY_WITH_RETRY,
/** Arguments: Error extracting resource path from self-link. Error = {0} */
ERROR_EXTRACTING_RESOURCE_PATH_FROM_LINK,
+ /** Arguments: {0} = Schema file location */
+ ERROR_READING_JSON_SCHEMA,
+ /** Arguments: {0} = UI view name */
+ VIEW_NAME_NOT_SUPPORTED,
+ /** Arguments: {0} = response code, {1} = filter name */
+ ERROR_FETCHING_FILTER_VALUES,
/** Arguments: {0} = URI */
RESOURCE_NOT_FOUND;
/**
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/FilterElasticSearchAdapter.java b/src/main/java/org/onap/aai/sparky/search/filters/FilterElasticSearchAdapter.java
new file mode 100644
index 0000000..2fe8a0a
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/FilterElasticSearchAdapter.java
@@ -0,0 +1,137 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.json.JsonObject;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.onap.aai.cl.api.Logger;
+import org.onap.aai.cl.eelf.LoggerFactory;
+import org.onap.aai.restclient.client.OperationResult;
+import org.onap.aai.sparky.dal.elasticsearch.SearchAdapter;
+import org.onap.aai.sparky.dal.elasticsearch.config.ElasticSearchConfig;
+import org.onap.aai.sparky.logging.AaiUiMsgs;
+import org.onap.aai.sparky.search.filters.config.UiFilterDataSourceConfig;
+import org.onap.aai.sparky.search.filters.entity.UiFilterEntity;
+import org.onap.aai.sparky.viewandinspect.config.TierSupportUiConstants;
+
+
+/**
+ * Performs all Elasticsearch related queries for filters related to
+ * the Sparky-FE.
+ */
+public class FilterElasticSearchAdapter {
+
+ private static ElasticSearchConfig esConfig = null;
+ private static SearchAdapter search = null;
+ private static final String ES_SEARCH_API = TierSupportUiConstants.ES_SEARCH_API;
+ private static final String APP_JSON = "application/json";
+ private static final Logger LOG = LoggerFactory.getInstance().getLogger(FilterElasticSearchAdapter.class);
+ private static final String AGGS = "aggregations";
+ private static final String CONTAINER = "default";
+ private static final String BUCKETS = "buckets";
+ private static final String FILTER_VALUE_KEY = "key";
+
+
+ public FilterElasticSearchAdapter() {
+ try {
+ if (esConfig == null) {
+ esConfig = ElasticSearchConfig.getConfig();
+ }
+ if (search == null) {
+ search = new SearchAdapter();
+ }
+ } catch (Exception exc) {
+ LOG.error(AaiUiMsgs.CONFIGURATION_ERROR, "Search");
+ }
+ }
+
+ /**
+ * Get Full URL for search using elastic search configuration.
+ *
+ * @param api the api
+ * @return the full url
+ */
+ private String getFullUrl(String indexName, String api) {
+ final String host = esConfig.getIpAddress();
+ final String port = esConfig.getHttpPort();
+ return String.format("http://%s:%s/%s/%s", host, port, indexName, api);
+ }
+
+ /**
+ * For a given UiFilterEntity, will attempt to contact an Elasticsearch instance
+ * and fetch all possible values for filter's field name.
+ *
+ * @param filter - Filter object against which the search will take place.
+ * @param sourceData - If present, contains the index name and field value to search against.
+ * @return - A List of strings if results were found, else empty list.
+ */
+ public List<String> fetchValuesForFilter(UiFilterEntity filter, UiFilterDataSourceConfig dataSourceConfig) {
+ ArrayList<String> filterValues = new ArrayList<String>();
+
+ if(dataSourceConfig != null) {
+ JsonObject filterValueQuery = null;
+ if(dataSourceConfig.getPathToField() != null) {
+ filterValueQuery = FilterQueryBuilder.createNestedFilterValueQueryObject(dataSourceConfig.getFieldName(), dataSourceConfig.getPathToField());
+ } else {
+ filterValueQuery = FilterQueryBuilder.createFilterValueQueryObject(dataSourceConfig.getFieldName());
+ }
+
+ org.onap.aai.sparky.dal.rest.OperationResult opResult = search.doPost(getFullUrl(dataSourceConfig.getIndexName(), ES_SEARCH_API), filterValueQuery.toString(), APP_JSON);
+
+ String result = opResult.getResult();
+ if(opResult.wasSuccessful() && result != null) {
+ JSONObject responseJson = new JSONObject(result);
+ JSONObject aggJson = responseJson.getJSONObject(AGGS);
+
+ JSONObject containerJson = null;
+ if(dataSourceConfig.getPathToField() != null) {
+ JSONObject nestedContainer = aggJson.getJSONObject(dataSourceConfig.getPathToField());
+ containerJson = nestedContainer.getJSONObject(dataSourceConfig.getFieldName());
+ } else {
+ containerJson = aggJson.getJSONObject(CONTAINER);
+ }
+
+ JSONArray buckets = containerJson.getJSONArray(BUCKETS);
+
+ int bucketLength = buckets.length();
+ for(int i = 0; i < bucketLength; i++) {
+ JSONObject filterBucket = buckets.getJSONObject(i);
+
+ String filterValue = filterBucket.getString(FILTER_VALUE_KEY);
+ if(filterValue != null && !filterValue.isEmpty()) {
+ filterValues.add(filterValue);
+ }
+ }
+ } else {
+ LOG.error(AaiUiMsgs.ERROR_FETCHING_FILTER_VALUES, String.valueOf(opResult.getResultCode()), filter.getFilterName());
+ }
+ }
+ filterValues.sort(String::compareToIgnoreCase);
+ return filterValues;
+ }
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/FilterProcessor.java b/src/main/java/org/onap/aai/sparky/search/filters/FilterProcessor.java
new file mode 100644
index 0000000..100257b
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/FilterProcessor.java
@@ -0,0 +1,142 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.json.JsonObject;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.component.restlet.RestletConstants;
+import org.onap.aai.cl.api.Logger;
+import org.onap.aai.cl.eelf.LoggerFactory;
+import org.onap.aai.sparky.logging.AaiUiMsgs;
+import org.onap.aai.sparky.search.filters.FilteredSearchHelper;
+import org.onap.aai.sparky.search.filters.entity.UiFilterEntity;
+import org.onap.aai.sparky.search.filters.entity.UiFiltersEntity;
+import org.onap.aai.sparky.viewandinspect.config.TierSupportUiConstants;
+import org.restlet.Request;
+import org.restlet.Response;
+import org.restlet.data.MediaType;
+import org.restlet.data.Status;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class FilterProcessor {
+
+ private static final Logger LOG = LoggerFactory.getInstance().getLogger(FilterProcessor.class);
+
+ private ObjectMapper mapper;
+ private FilteredSearchHelper filteredSearchHelper;
+
+ public FilterProcessor() {
+ this.mapper = new ObjectMapper();
+ }
+
+ public FilterProcessor(FilteredSearchHelper filteredSearchHelper) {
+ this.mapper = new ObjectMapper();
+ this.filteredSearchHelper = filteredSearchHelper;
+ }
+
+ public ObjectMapper getMapper() {
+ return mapper;
+ }
+
+ public FilteredSearchHelper getFilteredSearchHelper() {
+ return filteredSearchHelper;
+ }
+
+ public void setFilteredSearchHelper(FilteredSearchHelper filteredSearchHelper) {
+ this.filteredSearchHelper = filteredSearchHelper;
+ }
+
+ public void getFiltersWithValues(Exchange exchange) {
+ Response response = exchange.getIn().getHeader(RestletConstants.RESTLET_RESPONSE, Response.class);
+
+ Request request = exchange.getIn().getHeader(RestletConstants.RESTLET_REQUEST, Request.class);
+
+ /* Disables automatic Apache Camel Restlet component logging which prints out an undesirable log entry
+ which includes client (e.g. browser) information */
+ request.setLoggable(false);
+
+ UiFiltersEntity viewFiltersList = null;
+ boolean wasErrorDuringFilterDiscovery = false;
+
+ try {
+ String payload = exchange.getIn().getBody(String.class);
+
+ if (payload == null || payload.isEmpty()) {
+ /* Don't throw back an error, just return an empty set */
+ LOG.error(AaiUiMsgs.SEARCH_SERVLET_ERROR, "Request Payload is empty");
+ wasErrorDuringFilterDiscovery = true;
+ } else {
+ String viewName = mapper.readValue(payload, JsonNode.class).get(TierSupportUiConstants.UI_FILTER_VIEW_NAME_PARAMETER).asText();
+
+ if (viewName == null || viewName.isEmpty()) {
+ wasErrorDuringFilterDiscovery = true;
+ } else {
+ viewFiltersList = filteredSearchHelper.doFilterDiscovery(viewName);
+ }
+ }
+ } catch(Exception exc) {
+ LOG.error(AaiUiMsgs.ERROR_GENERIC, "FilterProcessor failed to get filter list due to error = " + exc.getMessage());
+ wasErrorDuringFilterDiscovery = true;
+ }
+
+ boolean wasErrorDuringValueSearch = false;
+ if(!wasErrorDuringFilterDiscovery) {
+ try {
+ if(!viewFiltersList.getFilters().isEmpty()) {
+ List<String> filterIds = new ArrayList<String>();
+
+ for(UiFilterEntity filterEntity : viewFiltersList.getFilters()) {
+ filterIds.add(filterEntity.getFilterId());
+ }
+
+ UiFiltersEntity responseFiltersList = filteredSearchHelper.doFilterEnumeration(filterIds);
+
+ JsonObject finalResponse = UiFiltersEntityConverter.convertUiFiltersEntityToUnifiedFilterResponse(responseFiltersList);
+
+ response.setStatus(Status.SUCCESS_OK);
+ response.setEntity(finalResponse.toString(), MediaType.APPLICATION_JSON);
+ exchange.getOut().setBody(response);
+ } else {
+ wasErrorDuringValueSearch = true;
+ }
+ } catch(Exception exc) {
+ LOG.error(AaiUiMsgs.ERROR_GENERIC, "FilterProcessor failed to generate valid unifiedFilterRequest response due to error, " + exc.getMessage());
+ response.setStatus(Status.SERVER_ERROR_INTERNAL);
+ }
+ }
+
+ // In the case of an error we want to respond with a valid empty response
+ if(wasErrorDuringFilterDiscovery || wasErrorDuringValueSearch) {
+ response.setStatus(Status.SUCCESS_OK);
+ response.setEntity(UiFiltersEntityConverter.generateEmptyResponse().toString(), MediaType.APPLICATION_JSON);
+ exchange.getOut().setBody(response);
+ }
+ }
+
+}
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
new file mode 100644
index 0000000..23f0dce
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/FilterQueryBuilder.java
@@ -0,0 +1,220 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+
+import org.onap.aai.sparky.search.filters.config.FiltersConfig;
+import org.onap.aai.sparky.search.filters.config.UiFilterConfig;
+import org.onap.aai.sparky.search.filters.entity.AggregationEntity;
+import org.onap.aai.sparky.search.filters.entity.BoolQueryBuilder;
+import org.onap.aai.sparky.search.filters.entity.FilteredAggregationQueryBuilder;
+import org.onap.aai.sparky.search.filters.entity.MatchFilterCriteriaEntity;
+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) {
+
+ if (searchFilters == null || searchFilters.size() == 0) {
+ return null;
+ }
+
+ int searchFilterValueSize = 0;
+
+ BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
+
+ FiltersConfig filters = FiltersConfig.getInstance();
+
+ for (SearchFilter searchFilter : searchFilters) {
+
+ searchFilterValueSize = searchFilter.getValues().size();
+
+ /*
+ * translate the filter-id into the filter-name from the oxm data model/config file
+ */
+ UiFilterConfig filter = filters.getFilterById(searchFilter.getFilterId());
+
+ if (filter == null || filter.getFilterName() == null) {
+ // log error and continue
+ } else {
+
+ String fieldName = filter.getDataSource().getFieldName();
+ 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));
+ }
+
+ } else if (searchFilterValueSize > EXISTING_FILTERS_LIMIT) {
+ // Add must branch
+ for (String filterValue : searchFilter.getValues()) {
+ boolQueryBuilder.addMustFilter(new MatchFilterCriteriaEntity(fieldName, filterValue));
+ }
+ }
+ }
+ }
+
+ boolQueryBuilder.setMinShouldMatch(minShouldMatch);
+
+ return boolQueryBuilder.getJsonObject();
+ }
+
+ public static JsonObject createAggregationQueryArray(List<SearchFilter> searchFilters) {
+
+ if (searchFilters == null || searchFilters.size() == 0) {
+ // log error
+ return null;
+ }
+
+ 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());
+
+ if (filter == null || filter.getFilterName() == null) {
+ // log error and continue
+ } else {
+ String fieldName = filter.getDataSource().getFieldName();
+ aggQueryBuilder.addAggregationEntity(new AggregationEntity(fieldName, fieldName, 0));
+ }
+
+ }
+
+ return aggQueryBuilder.getJsonObject();
+ }
+
+ public static JsonObject createCombinedBoolAndAggQuery(List<SearchFilter> searchFilters, int minShouldMatch) {
+ JsonObjectBuilder wrappedQueryBuilder = Json.createObjectBuilder();
+ if(searchFilters != null) {
+ List<String> fields = new ArrayList<String>();
+ JsonObject boolQuery = createFilteredBoolQueryObject(searchFilters, minShouldMatch, fields);
+ JsonObject aggQuery = createAggregationQueryArray(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) {
+ filedsArrayBuilder.add(field);
+ }
+ wrappedQueryBuilder.add("fields", filedsArrayBuilder.build());
+
+ wrappedQueryBuilder.add("query", boolQuery);
+ }
+
+ if (aggQuery != null) {
+ wrappedQueryBuilder.add("aggs", aggQuery);
+ }
+ }
+ return wrappedQueryBuilder.build();
+ }
+
+ public static JsonObject createFilterValueQueryObject(String fieldValue) {
+ JsonObjectBuilder jsonBuilder = Json.createObjectBuilder();
+ jsonBuilder.add("size", "0"); // avoid source data
+ buildZeroTermSummaryQuery(jsonBuilder, fieldValue);
+
+ return jsonBuilder.build();
+ }
+
+ public static JsonObject createNestedFilterValueQueryObject(String fieldValue,
+ String pathToField) {
+ JsonObjectBuilder jsonBuilder = Json.createObjectBuilder();
+ jsonBuilder.add("size", "0"); // avoid source data
+ generateNestedAggregations(jsonBuilder, fieldValue, pathToField);
+
+ return jsonBuilder.build();
+ }
+
+ public static void buildZeroTermSummaryQuery(JsonObjectBuilder jsonBuilder, String fieldValue) {
+ JsonObjectBuilder aggsBlobBuilder = Json.createObjectBuilder();
+ getSummaryAggsBlob(aggsBlobBuilder, fieldValue, 0);
+ jsonBuilder.add("aggs", aggsBlobBuilder.build());
+ }
+
+ public static void getSummaryAggsBlob(JsonObjectBuilder aggsBlobBuilder, String fieldValue,
+ int resultSize) {
+ JsonObjectBuilder fieldBuilder =
+ Json.createObjectBuilder().add("field", fieldValue).add("size", resultSize);
+ JsonObject aggsFieldBlob = fieldBuilder.build();
+ JsonObjectBuilder defaultBlobBuilder = Json.createObjectBuilder().add("terms", aggsFieldBlob);
+ JsonObject defaultBlob = defaultBlobBuilder.build();
+ aggsBlobBuilder.add("default", defaultBlob);
+ }
+
+ public static void addNestedSummaryAggsBlob(JsonObjectBuilder nestedAggsBuilder,
+ String containerValue, String fieldValue, int resultSize) {
+ JsonObjectBuilder fieldBuilder = Json.createObjectBuilder()
+ .add("field", containerValue + "." + fieldValue).add("size", resultSize);
+ JsonObject aggsFieldObject = fieldBuilder.build();
+
+ JsonObjectBuilder termBuilder = Json.createObjectBuilder().add("terms", aggsFieldObject);
+ JsonObject termObject = termBuilder.build();
+
+ JsonObjectBuilder namedAggsBuilder = Json.createObjectBuilder().add(fieldValue, termObject);
+ JsonObject namedAggsObject = namedAggsBuilder.build();
+
+ nestedAggsBuilder.add("aggs", namedAggsObject);
+ }
+
+ public static void generateNestedAggregations(JsonObjectBuilder jsonBuilder, String fieldValue,
+ String pathToField) {
+ JsonObjectBuilder nestedAggsBuilder = Json.createObjectBuilder();
+
+ JsonObjectBuilder pathObjectBuilder = Json.createObjectBuilder().add("path", pathToField);
+ JsonObject nestedPathObject = pathObjectBuilder.build();
+
+ JsonObjectBuilder nestedObjectBuilder =
+ Json.createObjectBuilder().add("nested", nestedPathObject);
+
+ addNestedSummaryAggsBlob(nestedObjectBuilder, pathToField, fieldValue, 0);
+
+ JsonObject nestedObject = nestedObjectBuilder.build();
+ nestedAggsBuilder.add(pathToField, nestedObject);
+
+ jsonBuilder.add("aggs", nestedAggsBuilder.build());
+ }
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/FilteredSearchHelper.java b/src/main/java/org/onap/aai/sparky/search/filters/FilteredSearchHelper.java
new file mode 100644
index 0000000..825dc5e
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/FilteredSearchHelper.java
@@ -0,0 +1,156 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.onap.aai.cl.api.Logger;
+import org.onap.aai.cl.eelf.LoggerFactory;
+import org.onap.aai.sparky.logging.AaiUiMsgs;
+import org.onap.aai.sparky.search.filters.config.FiltersConfig;
+import org.onap.aai.sparky.search.filters.config.FiltersDetailsConfig;
+import org.onap.aai.sparky.search.filters.config.UiFilterConfig;
+import org.onap.aai.sparky.search.filters.config.UiFilterDataSourceConfig;
+import org.onap.aai.sparky.search.filters.config.UiFilterListItemConfig;
+import org.onap.aai.sparky.search.filters.config.UiViewListItemConfig;
+import org.onap.aai.sparky.search.filters.entity.UiFilterEntity;
+import org.onap.aai.sparky.search.filters.entity.UiFilterValueEntity;
+import org.onap.aai.sparky.search.filters.entity.UiFiltersEntity;
+
+public class FilteredSearchHelper {
+ private static final Logger LOG = LoggerFactory.getInstance().getLogger(FilteredSearchHelper.class);
+
+ private FiltersConfig filtersConfig;
+ private Map<String, UiFilterConfig> filtersMap = null;
+ private FilterElasticSearchAdapter filterSearchAdapter = null;
+
+ public FilteredSearchHelper(FiltersConfig filterConfig) {
+ this.filtersConfig = filterConfig;
+
+ if (filtersMap == null) {
+ filtersMap = new HashMap<>();
+
+ final FiltersDetailsConfig uiFiltersConfig = filterConfig.getFiltersConfig();
+
+ if (uiFiltersConfig != null) {
+ for (UiFilterConfig filter : uiFiltersConfig.getFilters()) {
+ filtersMap.put(filter.getFilterId(), filter);
+ }
+ }
+ }
+
+ filterSearchAdapter = new FilterElasticSearchAdapter();
+ }
+
+ public FiltersConfig getFiltersConfig() {
+ return filtersConfig;
+ }
+
+ public void setFiltersConfig(FiltersConfig filterConfig) {
+ this.filtersConfig = filterConfig;
+ }
+
+ public UiFiltersEntity doFilterDiscovery(String viewName) {
+ List<UiViewListItemConfig> views = filtersConfig.getViewsConfig().getViews();
+ List<UiFilterListItemConfig> filters = null;
+ UiFiltersEntity viewFiltersList = new UiFiltersEntity();
+
+ if(viewName != null) {
+ for (UiViewListItemConfig view: views) {
+ if (viewName.equalsIgnoreCase(view.getViewName())) {
+ filters = view.getFilters();
+ break;
+ }
+ }
+
+ if (filters == null) {
+ LOG.error(AaiUiMsgs.VIEW_NAME_NOT_SUPPORTED, viewName);
+ } else {
+ for (UiFilterListItemConfig filter : filters) {
+ FiltersDetailsConfig filtersDetailsConfig = filtersConfig.getFiltersConfig();
+
+ for (UiFilterConfig filterConfig: filtersDetailsConfig.getFilters()) {
+ if (filterConfig.getFilterId().equals(filter.getFilterId())) {
+ UiFilterEntity filterEntity = new UiFilterEntity(filterConfig);
+ if(filter.getDefaultValue() != null) {
+ filterEntity.setDefaultValue(filter.getDefaultValue());
+ }
+ viewFiltersList.addFilter(filterEntity);
+ }
+ }
+ }
+ }
+ }
+ return viewFiltersList;
+ }
+
+ public UiFiltersEntity doFilterEnumeration(List<String> requestedFilterIds) {
+ UiFiltersEntity viewFiltersList = new UiFiltersEntity();
+
+ for (String requestedFilterId : requestedFilterIds) {
+ if (null == filtersMap.get(requestedFilterId)) {
+ String errorMessage = "Requested filter ID '" + requestedFilterId + "' does not exist.";
+ LOG.error(AaiUiMsgs.SEARCH_SERVLET_ERROR, errorMessage);
+ } else {
+ UiFilterConfig sourceData = filtersMap.get(requestedFilterId);
+ UiFilterEntity filterEntity = new UiFilterEntity(sourceData);
+ this.getFilterEnumeration(filterEntity, sourceData);
+ viewFiltersList.addFilter(filterEntity);
+ }
+ }
+
+ return viewFiltersList;
+ }
+
+ public void getFilterEnumeration(UiFilterEntity filter, UiFilterConfig sourceData) {
+ List<String> filterValues = filterSearchAdapter.fetchValuesForFilter(filter, sourceData.getDataSource());
+
+ for(String value : filterValues) {
+ UiFilterValueEntity valueEntity = new UiFilterValueEntity();
+ valueEntity.setDisplayName(value);
+ valueEntity.setFilterValue(value);
+ filter.addFilterValue(valueEntity);
+ }
+ }
+
+ public Map<String, UiFilterConfig> getFiltersMap() {
+ return filtersMap;
+ }
+
+ public void setFiltersMap(Map<String, UiFilterConfig> filtersMap) {
+ this.filtersMap = filtersMap;
+ }
+
+ public UiFilterDataSourceConfig getFilterDataSource(String filterId) {
+ UiFilterConfig filterConfig = filtersMap.get(filterId);
+ UiFilterDataSourceConfig returnValue = null;
+
+ if(filterConfig != null) {
+ returnValue = filterConfig.getDataSource();
+ }
+
+ return returnValue;
+ }
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/UiFiltersEntityConverter.java b/src/main/java/org/onap/aai/sparky/search/filters/UiFiltersEntityConverter.java
new file mode 100644
index 0000000..24851f7
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/UiFiltersEntityConverter.java
@@ -0,0 +1,178 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters;
+
+import java.util.List;
+
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+
+import org.onap.aai.sparky.search.filters.config.UiFilterOptionsValuesConfig;
+import org.onap.aai.sparky.search.filters.entity.UiFilterEntity;
+import org.onap.aai.sparky.search.filters.entity.UiFilterValueEntity;
+import org.onap.aai.sparky.search.filters.entity.UiFiltersEntity;
+
+public class UiFiltersEntityConverter {
+
+ private static final String KEY_TYPE = "type";
+ private static final String KEY_MULTISELECT = "multiSelect";
+ private static final String KEY_WATERMARK = "watermark";
+ private static final String KEY_CONTROLS = "controls";
+ private static final String KEY_LABEL = "label";
+ private static final String KEY_FILTERS = "filters";
+ private static final String KEY_DECODE = "decode";
+ private static final String KEY_CODE = "code";
+ private static final String KEY_DEFAULT_VALUE = "defaultValue";
+
+ /**
+ * Converts a UiFiltersEntity into a JSON object to satisfy a new (as of 23 Oct 2017)
+ * filter library being used in the FE.
+ *
+ * @param entityToConvert - The UiFiltersEntity to be converted into a JSON response.
+ * @return A JsonObject representing the passed in UiFiltersEntity.
+ */
+ public static JsonObject convertUiFiltersEntityToUnifiedFilterResponse(UiFiltersEntity entityToConvert) {
+ JsonObjectBuilder filterBuilder = Json.createObjectBuilder();
+
+ if(entityToConvert != null) {
+ List<UiFilterEntity> filterEntities = entityToConvert.getFilters();
+ if(filterEntities != null) {
+ for(UiFilterEntity entity : filterEntities) {
+ filterBuilder.add(entity.getFilterId(), generateFilterObject(entity));
+ }
+ }
+ }
+
+ JsonObjectBuilder finalObject = Json.createObjectBuilder();
+ finalObject.add(KEY_FILTERS, filterBuilder.build());
+ return finalObject.build();
+ }
+
+ /**
+ * Generates the core body of the a single filter within the JSON body.
+ *
+ * @param entity - The filter entity (loaded from config and populated from data store).
+ * @return A JsonObject representing the core data of a filter.
+ */
+ private static JsonObject generateFilterObject(UiFilterEntity entity) {
+ JsonObjectBuilder filterBuilder = Json.createObjectBuilder();
+
+ filterBuilder.add(KEY_LABEL, entity.getDisplayName());
+ filterBuilder.add(KEY_CONTROLS, generateControlObject(entity, entity.getFilterValueList()));
+
+ return filterBuilder.build();
+ }
+
+ /**
+ * Generates the "controls" object within the filter JSON.
+ *
+ * @param filterEntity - The filter entity on which this filter will be based.
+ * @param filterValues - The list of values associated with the filter
+ * from data store queries.
+ * @return A JsonObject representing the "controls" object of the filter JSON.
+ */
+ private static JsonObject generateControlObject(UiFilterEntity filterEntity, List<UiFilterValueEntity> filterValues) {
+ JsonObjectBuilder controls = Json.createObjectBuilder();
+ JsonObjectBuilder subControl = Json.createObjectBuilder();
+
+ subControl.add(KEY_TYPE, filterEntity.getDataType());
+ subControl.add(KEY_MULTISELECT, filterEntity.getMultiSelect());
+ subControl.add(KEY_WATERMARK, filterEntity.getWatermark());
+
+ if(filterEntity.getDefaultValue() != null && !filterEntity.getDefaultValue().getCode().isEmpty() && !filterEntity.getDefaultValue().getDecode().isEmpty()) {
+ JsonObjectBuilder defaultValueBuilder = Json.createObjectBuilder();
+
+ defaultValueBuilder.add(KEY_DECODE, filterEntity.getDefaultValue().getDecode());
+ defaultValueBuilder.add(KEY_CODE, filterEntity.getDefaultValue().getCode());
+
+ subControl.add(KEY_DEFAULT_VALUE, defaultValueBuilder.build());
+ }
+
+ if(filterEntity.getOptionsValues() == null || filterEntity.getOptionsValues().isEmpty()) {
+ subControl.add(filterEntity.getOptionsType(), generateOptionsObject(filterValues));
+ } else {
+ subControl.add(filterEntity.getOptionsType(), generateOptionsValuesObject(filterEntity.getOptionsValues()));
+ }
+
+ controls.add(filterEntity.getFilterName(), subControl.build());
+
+ return controls.build();
+ }
+
+ /**
+ * Creates a JsonArray representing the list of options for a filter.
+ * Similar to function generateOptionsObject, except using different arguments.
+ *
+ * @param optionsValues - Values that are loaded from config.
+ * @return JsonArray of options for a filter.
+ */
+ private static JsonArray generateOptionsValuesObject(List<UiFilterOptionsValuesConfig> optionsValues) {
+ JsonArrayBuilder optionsBuilder = Json.createArrayBuilder();
+
+ if(optionsValues != null && !optionsValues.isEmpty()) {
+ for(UiFilterOptionsValuesConfig optionValue : optionsValues) {
+ JsonObjectBuilder option = Json.createObjectBuilder();
+
+ option.add(KEY_DECODE, optionValue.getDecode());
+ option.add(KEY_CODE, optionValue.getCode());
+
+ optionsBuilder.add(option.build());
+ }
+ }
+
+ return optionsBuilder.build();
+ }
+
+ /**
+ * Creates a JsonArray representing the list of options for a filter.
+ *
+ * @param filterValues - The list of values associates with a filter (likely from a data store query).
+ * @return JsonArray of options for a filter.
+ */
+ private static JsonArray generateOptionsObject(List<UiFilterValueEntity> filterValues) {
+ JsonArrayBuilder optionsBuilder = Json.createArrayBuilder();
+
+ if(filterValues != null && !filterValues.isEmpty()) {
+ for(UiFilterValueEntity valueEntity : filterValues) {
+ JsonObjectBuilder option = Json.createObjectBuilder();
+
+ option.add(KEY_DECODE, valueEntity.getDisplayName());
+ option.add(KEY_CODE, valueEntity.getFilterValue());
+
+ optionsBuilder.add(option.build());
+ }
+ }
+
+ return optionsBuilder.build();
+ }
+
+ public static JsonObject generateEmptyResponse() {
+ JsonObjectBuilder filterBuilder = Json.createObjectBuilder();
+ JsonObjectBuilder finalObject = Json.createObjectBuilder();
+ finalObject.add(KEY_FILTERS, filterBuilder.build());
+ return finalObject.build();
+ }
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/config/FiltersConfig.java b/src/main/java/org/onap/aai/sparky/search/filters/config/FiltersConfig.java
new file mode 100644
index 0000000..b1b503c
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/config/FiltersConfig.java
@@ -0,0 +1,157 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.config;
+
+import java.io.File;
+
+import org.onap.aai.cl.api.Logger;
+import org.onap.aai.cl.eelf.LoggerFactory;
+import org.onap.aai.sparky.logging.AaiUiMsgs;
+import org.onap.aai.sparky.synchronizer.config.NetworkStatisticsConfig;
+import org.onap.aai.sparky.viewandinspect.config.TierSupportUiConstants;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class FiltersConfig {
+
+ private static final Logger LOG = LoggerFactory.getInstance().getLogger(FiltersConfig.class);
+
+ private static FiltersConfig instance;
+
+ private String filtersFileName;
+
+ private String filterMappingsFileName;
+
+ private FiltersForViewsConfig viewsConfig;
+
+ private FiltersDetailsConfig filtersConfig;
+
+ private NetworkStatisticsConfig processorConfig;
+
+ public NetworkStatisticsConfig getProcessorConfig() {
+ return processorConfig;
+ }
+
+ public void setProcessorConfig(NetworkStatisticsConfig processorConfig) {
+ this.processorConfig = processorConfig;
+ }
+
+ public static FiltersConfig getInstance() {
+ if (instance == null) {
+ instance = new FiltersConfig();
+ instance.initializeFilters();
+ }
+
+ return instance;
+ }
+
+ public static void setConfig(FiltersConfig config) {
+ FiltersConfig.instance = config;
+ }
+
+ /**
+ * Instantiates a new UiViewFilterConfig.
+ */
+ private FiltersConfig() {}
+
+ /**
+ * Initialize config.
+ */
+ private void initializeFilters() {
+ filtersFileName = TierSupportUiConstants.FILTER_LIST_FILE_DEFAULT;
+ filterMappingsFileName = TierSupportUiConstants.FILTER_MAPPING_FILE_DEFAULT;
+
+ viewsConfig = this.readUiViewsConfig();
+ filtersConfig = this.readUiFiltersConfig();
+ }
+
+ public String getFilterMappingsFileName() {
+ return filterMappingsFileName;
+ }
+
+ public void setFilterMappingsFileName(String filterMappingsFileName) {
+ this.filterMappingsFileName = filterMappingsFileName;
+ }
+
+ public String getFiltersFileName() {
+ return filtersFileName;
+ }
+
+ public void setFiltersFileName(String filtersFileName) {
+ this.filtersFileName = filtersFileName;
+ }
+
+ public FiltersForViewsConfig getViewsConfig() {
+ return viewsConfig;
+ }
+
+ public void setViewsConfig(FiltersForViewsConfig filtersMapEntity) {
+ this.viewsConfig = filtersMapEntity;
+ }
+
+ public FiltersDetailsConfig getFiltersConfig() {
+ return filtersConfig;
+ }
+
+ public UiFilterConfig getFilterById(String filterId) {
+ for ( UiFilterConfig filter : filtersConfig.getFilters()) {
+ if ( filter.getFilterId().equals(filterId)) {
+ return filter;
+ }
+ }
+
+ return null;
+ }
+
+ public void setFiltersConfig(FiltersDetailsConfig filtersConfig) {
+ this.filtersConfig = filtersConfig;
+ }
+
+ public FiltersDetailsConfig readUiFiltersConfig(){
+ ObjectMapper mapper = new ObjectMapper();
+ FiltersDetailsConfig filtersConfig = null;
+ try{
+ filtersConfig = mapper.readValue(new File(this.getFiltersFileName()), FiltersDetailsConfig.class);
+ System.out.println(String.valueOf(filtersConfig));
+ } catch (Exception e){
+ LOG.error(AaiUiMsgs.ERROR_READING_JSON_SCHEMA, TierSupportUiConstants.getConfigPath(this.getFiltersFileName()));
+ }
+
+ return filtersConfig;
+ }
+
+ public FiltersForViewsConfig readUiViewsConfig(){
+ ObjectMapper mapper = new ObjectMapper();
+ FiltersForViewsConfig viewsConfig = null;
+
+ try {
+ viewsConfig = mapper.readValue(new File(this.getFilterMappingsFileName()), FiltersForViewsConfig.class);
+ System.out.println(String.valueOf(viewsConfig));
+ } catch (Exception e){
+ LOG.error(AaiUiMsgs.ERROR_READING_JSON_SCHEMA, TierSupportUiConstants.getConfigPath(this.getFilterMappingsFileName()));
+ }
+
+ return viewsConfig;
+ }
+}
+
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/config/FiltersDetailsConfig.java b/src/main/java/org/onap/aai/sparky/search/filters/config/FiltersDetailsConfig.java
new file mode 100644
index 0000000..09eec02
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/config/FiltersDetailsConfig.java
@@ -0,0 +1,55 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.att.aft.dme2.internal.jackson.annotate.JsonCreator;
+import com.att.aft.dme2.internal.jackson.annotate.JsonProperty;
+
+public class FiltersDetailsConfig {
+ @JsonProperty("filters")
+ private List<UiFilterConfig> filters = new ArrayList<UiFilterConfig>();
+
+ public FiltersDetailsConfig(){}
+
+ @JsonCreator
+ public FiltersDetailsConfig(@JsonProperty("filters") final List<UiFilterConfig> filters) {
+ this.filters = filters;
+ }
+
+ public List<UiFilterConfig> getFilters() {
+ return filters;
+ }
+
+ public void setFilters(List<UiFilterConfig> filters) {
+ this.filters = filters;
+ }
+
+ @Override
+ public String toString() {
+ return "UiFiltersConfig [filters=" + filters + "]";
+ }
+
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/config/FiltersForViewsConfig.java b/src/main/java/org/onap/aai/sparky/search/filters/config/FiltersForViewsConfig.java
new file mode 100644
index 0000000..7340758
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/config/FiltersForViewsConfig.java
@@ -0,0 +1,55 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.att.aft.dme2.internal.jackson.annotate.JsonCreator;
+import com.att.aft.dme2.internal.jackson.annotate.JsonProperty;
+
+public class FiltersForViewsConfig {
+
+ private List<UiViewListItemConfig> views = new ArrayList<UiViewListItemConfig>();
+
+ public FiltersForViewsConfig(){}
+
+ @JsonCreator
+ public FiltersForViewsConfig(@JsonProperty("views") final List<UiViewListItemConfig> views) {
+ this.views = views;
+ }
+
+ @JsonProperty("views")
+ public List<UiViewListItemConfig> getViews() {
+ return views;
+ }
+
+ public void setViews(List<UiViewListItemConfig> views) {
+ this.views = views;
+ }
+
+ @Override
+ public String toString() {
+ return "UiViewToFilterMappingEntity [allUiViews=" + views + "]";
+ }
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterConfig.java b/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterConfig.java
new file mode 100644
index 0000000..c566565
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterConfig.java
@@ -0,0 +1,186 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.config;
+
+import java.util.List;
+
+import com.att.aft.dme2.internal.jackson.annotate.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonInclude(Include.NON_NULL)
+public class UiFilterConfig {
+
+ @JsonProperty("filterId")
+ private String filterId;
+
+ @JsonProperty("filterName")
+ private String filterName;
+
+ @JsonProperty("displayName")
+ private String displayName;
+
+ @JsonProperty("dataType")
+ private String dataType;
+
+ @JsonProperty("multiSelect")
+ private String multiSelect;
+
+ @JsonProperty("watermark")
+ private String watermark;
+
+ @JsonProperty("defaultValue")
+ private UiFilterOptionsValuesConfig defaultValue;
+
+ @JsonProperty("optionsType")
+ private String optionsType;
+
+ @JsonProperty("optionsValues")
+ private List<UiFilterOptionsValuesConfig> optionsValues;
+
+ @JsonProperty("dataSource")
+ private UiFilterDataSourceConfig dataSource = new UiFilterDataSourceConfig();
+
+ @JsonCreator
+ public UiFilterConfig(@JsonProperty("filterId") final String filterId,
+ @JsonProperty("filterName") final String filterName,
+ @JsonProperty("displayName") final String displayName,
+ @JsonProperty("dataType") final String dataType,
+ @JsonProperty("multiSelect") final String multiSelect,
+ @JsonProperty("watermark") final String watermark,
+ @JsonProperty("defaultValue") final UiFilterOptionsValuesConfig defaultValue,
+ @JsonProperty("optionsType") final String optionsType,
+ @JsonProperty("optionsValues") final List<UiFilterOptionsValuesConfig> optionsValues,
+ @JsonProperty("dataSource") final UiFilterDataSourceConfig dataSource
+ ) {
+ this.filterId = filterId;
+ this.filterName = filterName;
+ this.displayName = displayName;
+ this.dataType = dataType;
+ this.multiSelect = multiSelect;
+ this.watermark = watermark;
+ this.defaultValue = defaultValue;
+ this.optionsType = optionsType;
+ this.optionsValues = optionsValues;
+ this.dataSource = dataSource;
+ }
+
+ @JsonProperty("filterId")
+ public String getFilterId() {
+ return filterId;
+ }
+
+ public void setFilterId(String filterId) {
+ this.filterId = filterId;
+ }
+
+ @JsonProperty("filterName")
+ public String getFilterName() {
+ return filterName;
+ }
+
+ public void setFilterName(String filterName) {
+ this.filterName = filterName;
+ }
+
+ @JsonProperty("displayName")
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ @JsonProperty("dataType")
+ public String getDataType() {
+ return dataType;
+ }
+
+ public void setDataType(String dataType) {
+ this.dataType = dataType;
+ }
+
+ @JsonProperty("multiSelect")
+ public String getMultiSelect() {
+ return multiSelect;
+ }
+
+ public void setMultiSelect(String multiSelect) {
+ this.multiSelect = multiSelect;
+ }
+
+ @JsonProperty("watermark")
+ public String getWatermark() {
+ return watermark;
+ }
+
+ public void setWatermark(String watermark) {
+ this.watermark = watermark;
+ }
+
+ @JsonProperty("defaultValue")
+ public UiFilterOptionsValuesConfig getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(UiFilterOptionsValuesConfig defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ @JsonProperty("optionsType")
+ public String getOptionsType() {
+ return optionsType;
+ }
+
+ public void setOptionsType(String optionsType) {
+ this.optionsType = optionsType;
+ }
+ @JsonProperty("optionsValues")
+ public List<UiFilterOptionsValuesConfig> getOptionsValues() {
+ return optionsValues;
+ }
+
+ public void setOptionsValues(List<UiFilterOptionsValuesConfig> optionsValues) {
+ this.optionsValues = optionsValues;
+ }
+
+ @JsonProperty("dataSource")
+ public UiFilterDataSourceConfig getDataSource() {
+ return dataSource;
+ }
+
+ public void setDataSource(UiFilterDataSourceConfig dataSource) {
+ this.dataSource = dataSource;
+ }
+
+ @Override
+ public String toString() {
+ return "UiFilterConfig [filterId=" + filterId + ", filterName=" + filterName + ", displayName="
+ + displayName + ", dataType=" + dataType + ", multiSelect=" + multiSelect + ", watermark="
+ + watermark + ", optionsType=" + optionsType + ", optionsValues=" + optionsValues
+ + ", dataSource=" + dataSource + "]";
+ }
+}
+
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterDataSourceConfig.java b/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterDataSourceConfig.java
new file mode 100644
index 0000000..be0603b
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterDataSourceConfig.java
@@ -0,0 +1,97 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.config;
+
+import com.att.aft.dme2.internal.jackson.annotate.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonInclude(Include.NON_NULL)
+public class UiFilterDataSourceConfig {
+
+ @JsonProperty("indexName")
+ private String indexName;
+
+ @JsonProperty("docType")
+ private String docType;
+
+ @JsonProperty("fieldName")
+ private String fieldName;
+
+ @JsonProperty("pathToField")
+ private String pathToField;
+
+ public UiFilterDataSourceConfig(){}
+
+ @JsonCreator
+ public UiFilterDataSourceConfig(@JsonProperty("indexName") final String indexName, @JsonProperty("docType") final String docType, @JsonProperty("fieldName") final String fieldName, @JsonProperty("pathToField") final String pathToField) {
+ this.indexName = indexName;
+ this.docType = docType;
+ this.fieldName = fieldName;
+ this.pathToField = pathToField;
+ }
+
+ @JsonProperty("indexName")
+ public String getIndexName() {
+ return indexName;
+ }
+
+ public void setIndexName(String indexName) {
+ this.indexName = indexName;
+ }
+
+ @JsonProperty("docType")
+ public String getDocType() {
+ return docType;
+ }
+
+ public void setDocType(String docType) {
+ this.docType = docType;
+ }
+
+ @JsonProperty("fieldName")
+ public String getFieldName() {
+ return fieldName;
+ }
+
+ public void setFieldName(String fieldName) {
+ this.fieldName = fieldName;
+ }
+
+ @JsonProperty("pathToField")
+ public String getPathToField() {
+ return pathToField;
+ }
+
+ public void setPathToField(String pathToField) {
+ this.pathToField = pathToField;
+ }
+
+ @Override
+ public String toString() {
+ return "UiFilterDataSourceConfig [indexName=" + indexName + ", docType=" + docType
+ + ", fieldName=" + fieldName + ", pathToField=" + pathToField + "]";
+ }
+}
+
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterListItemConfig.java b/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterListItemConfig.java
new file mode 100644
index 0000000..c1ee089
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterListItemConfig.java
@@ -0,0 +1,69 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.config;
+
+import com.att.aft.dme2.internal.jackson.annotate.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonInclude(Include.NON_NULL)
+public class UiFilterListItemConfig {
+ @JsonProperty("filterId")
+ private String filterId;
+
+ @JsonProperty("defaultValue")
+ private UiFilterOptionsValuesConfig defaultValue;
+
+
+ @JsonCreator
+ public UiFilterListItemConfig(@JsonProperty("filterId") final String filterId, @JsonProperty("defaultValue") final UiFilterOptionsValuesConfig defaultValue) {
+ this.filterId = filterId;
+ this.defaultValue = defaultValue;
+ }
+
+ @JsonProperty("filterId")
+ public String getFilterId() {
+ return filterId;
+ }
+
+ public void setFilterId(String filterId) {
+ this.filterId = filterId;
+ }
+
+ @JsonProperty("defaultValue")
+ public UiFilterOptionsValuesConfig getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(UiFilterOptionsValuesConfig defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ @Override
+ public String toString() {
+ return "FilterListItemEntity [filterId=" + filterId + ", defaultValue=" + defaultValue + "]";
+ }
+
+
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterOptionsValuesConfig.java b/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterOptionsValuesConfig.java
new file mode 100644
index 0000000..2abdfdd
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/config/UiFilterOptionsValuesConfig.java
@@ -0,0 +1,66 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.config;
+
+import com.att.aft.dme2.internal.jackson.annotate.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonInclude(Include.NON_NULL)
+public class UiFilterOptionsValuesConfig {
+ @JsonProperty("decode")
+ private String decode;
+
+ @JsonProperty("code")
+ private String code;
+
+ @JsonCreator
+ public UiFilterOptionsValuesConfig(@JsonProperty("decode") final String decode, @JsonProperty("code") final String code) {
+ this.decode = decode;
+ this.code = code;
+ }
+
+ @JsonProperty("decode")
+ public String getDecode() {
+ return decode;
+ }
+
+ public void setDecode(String decode) {
+ this.decode = decode;
+ }
+
+ @JsonProperty("code")
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ @Override
+ public String toString() {
+ return "UiFilterOptionsValuesConfig [decode=" + decode + ", code=" + code + "]";
+ }
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/config/UiViewListItemConfig.java b/src/main/java/org/onap/aai/sparky/search/filters/config/UiViewListItemConfig.java
new file mode 100644
index 0000000..3707417
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/config/UiViewListItemConfig.java
@@ -0,0 +1,66 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.att.aft.dme2.internal.jackson.annotate.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class UiViewListItemConfig {
+ @JsonProperty("viewName")
+ private String viewName;
+
+ private List<UiFilterListItemConfig> filters = new ArrayList<UiFilterListItemConfig>();
+
+ @JsonCreator
+ public UiViewListItemConfig(@JsonProperty("viewName") final String viewName, @JsonProperty("filters") final List<UiFilterListItemConfig> filters) {
+ this.viewName = viewName;
+ this.filters = filters;
+ }
+
+ @JsonProperty("viewName")
+ public String getViewName() {
+ return viewName;
+ }
+
+ public void setViewName(String viewName) {
+ this.viewName = viewName;
+ }
+
+ @JsonProperty("filters")
+ public List<UiFilterListItemConfig> getFilters() {
+ return filters;
+ }
+
+ public void setListOfFilters(List<UiFilterListItemConfig> filters) {
+ this.filters = filters;
+ }
+
+ @Override
+ public String toString() {
+ return "UiViewEntity [viewName=" + viewName + ", filters=" + filters + "]";
+ }
+
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/entity/AggregationEntity.java b/src/main/java/org/onap/aai/sparky/search/filters/entity/AggregationEntity.java
new file mode 100644
index 0000000..bf901e2
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/entity/AggregationEntity.java
@@ -0,0 +1,78 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.entity;
+
+import javax.json.Json;
+import javax.json.JsonBuilderFactory;
+import javax.json.JsonObject;
+
+public class AggregationEntity {
+
+ private String aggregationName;
+ private String aggregationFieldName;
+ private int size;
+
+ public AggregationEntity(String aggName, String fieldName, int size) {
+
+ this.aggregationName = aggName;
+ this.aggregationFieldName = fieldName;
+ this.size = size;
+ }
+
+ public String getAggregationName() {
+ return aggregationName;
+ }
+
+ public void setAggregationName(String aggregationName) {
+ this.aggregationName = aggregationName;
+ }
+
+ public String getAggregationFieldName() {
+ return aggregationFieldName;
+ }
+
+ public void setAggregationFieldName(String aggregationFieldName) {
+ this.aggregationFieldName = aggregationFieldName;
+ }
+
+ public int getSize() {
+ return size;
+ }
+
+ public void setSize(int size) {
+ this.size = size;
+ }
+
+ public JsonObject getJsonObject() {
+
+ JsonBuilderFactory factory = Json.createBuilderFactory(null);
+
+ return factory.createObjectBuilder()
+ .add("terms", factory.createObjectBuilder()
+ .add("field", aggregationFieldName)
+ .add("size", size))
+ .build();
+ }
+
+
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/entity/BoolQueryBuilder.java b/src/main/java/org/onap/aai/sparky/search/filters/entity/BoolQueryBuilder.java
new file mode 100644
index 0000000..dabe061
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/entity/BoolQueryBuilder.java
@@ -0,0 +1,121 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonBuilderFactory;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+
+public class BoolQueryBuilder {
+
+ private List<MatchFilterCriteriaEntity> mustFilters;
+ private List<MatchFilterCriteriaEntity> shouldFilters;
+
+ private int minShouldMatch;
+
+ public BoolQueryBuilder() {
+
+ mustFilters = new ArrayList<MatchFilterCriteriaEntity>();
+ shouldFilters = new ArrayList<MatchFilterCriteriaEntity>();
+ minShouldMatch = -1;
+
+ }
+
+ public void addMustFilter(MatchFilterCriteriaEntity filter) {
+
+ if (!mustFilters.contains(filter)) {
+ mustFilters.add(filter);
+ }
+
+ }
+
+ public void addShouldFilter(MatchFilterCriteriaEntity filter) {
+
+ if (!shouldFilters.contains(filter)) {
+ shouldFilters.add(filter);
+ }
+
+ }
+
+ public void setMinShouldMatch(int minShouldMatch) {
+ this.minShouldMatch = minShouldMatch;
+ }
+
+ public boolean isMatchAll() {
+ return (mustFilters.isEmpty() && shouldFilters.isEmpty());
+ }
+
+ public JsonObject getJsonObject() {
+ /*
+ * Specify a null config for now, but if we want normalize all the builders, we can do it at one
+ * location, when we are ready.
+ */
+ JsonBuilderFactory factory = Json.createBuilderFactory(null);
+
+ JsonObjectBuilder boolBuilder = factory.createObjectBuilder();
+
+ if(!mustFilters.isEmpty()){
+ JsonArrayBuilder mustArrayBuilder = factory.createArrayBuilder();
+
+ for (MatchFilterCriteriaEntity matchCriteria : mustFilters) {
+ mustArrayBuilder.add(matchCriteria.getJsonObject());
+ }
+
+ JsonArray mustArray = mustArrayBuilder.build();
+ boolBuilder.add("must", mustArray);
+ }
+
+ if (!shouldFilters.isEmpty()) {
+ JsonArray shouldArray = null;
+ JsonArrayBuilder shouldArrayBuilder = factory.createArrayBuilder();
+
+ for (MatchFilterCriteriaEntity matchCriteria : shouldFilters) {
+ shouldArrayBuilder.add(matchCriteria.getJsonObject());
+ }
+
+ shouldArray = shouldArrayBuilder.build();
+ boolBuilder.add("should", shouldArray).add("min_should_match", minShouldMatch);
+ }
+
+ JsonObjectBuilder queryObjectBuilder = factory.createObjectBuilder();
+
+ /*
+ * If both filter lists are empty then we are doing an aggregation
+ * based off fields. Just match-all for the query.
+ */
+ if(isMatchAll()) {
+ JsonObject matchAllObject = factory.createObjectBuilder().build();
+ queryObjectBuilder.add("match_all", matchAllObject);
+ } else {
+ queryObjectBuilder.add("bool", boolBuilder.build());
+ }
+
+ return queryObjectBuilder.build();
+ }
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/entity/FilteredAggregationQueryBuilder.java b/src/main/java/org/onap/aai/sparky/search/filters/entity/FilteredAggregationQueryBuilder.java
new file mode 100644
index 0000000..ef334f2
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/entity/FilteredAggregationQueryBuilder.java
@@ -0,0 +1,63 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.json.Json;
+import javax.json.JsonBuilderFactory;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+
+public class FilteredAggregationQueryBuilder {
+
+ private List<AggregationEntity> aggregationEntities;
+
+ public FilteredAggregationQueryBuilder() {
+ aggregationEntities = new ArrayList<AggregationEntity>();
+ }
+
+ public void addAggregationEntity(AggregationEntity aggregationEntity) {
+ if (!aggregationEntities.contains(aggregationEntity)) {
+ aggregationEntities.add(aggregationEntity);
+ }
+ }
+
+ public JsonObject getJsonObject() {
+
+ /*
+ * Specify a null config for now, but if we want normalize all the builders, we can do it at one
+ * location, when we are ready.
+ */
+ JsonBuilderFactory factory = Json.createBuilderFactory(null);
+
+ JsonObjectBuilder aggsArrayBuilder = factory.createObjectBuilder();
+
+ for (AggregationEntity aggEntity : aggregationEntities) {
+ aggsArrayBuilder.add(aggEntity.getAggregationName(), aggEntity.getJsonObject());
+ }
+
+ return aggsArrayBuilder.build();
+ }
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/entity/MatchFilterCriteriaEntity.java b/src/main/java/org/onap/aai/sparky/search/filters/entity/MatchFilterCriteriaEntity.java
new file mode 100644
index 0000000..3b59279
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/entity/MatchFilterCriteriaEntity.java
@@ -0,0 +1,75 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.entity;
+
+import javax.json.Json;
+import javax.json.JsonBuilderFactory;
+import javax.json.JsonObject;
+
+public class MatchFilterCriteriaEntity {
+
+ private String criteriaName;
+ private String criteriaValue;
+
+ public MatchFilterCriteriaEntity(String criteriaName, String criteriaValue) {
+ super();
+ this.criteriaName = criteriaName;
+ this.criteriaValue = criteriaValue;
+ }
+
+ public String getCriteriaName() {
+ return criteriaName;
+ }
+
+ public void setCriteriaName(String criteriaName) {
+ this.criteriaName = criteriaName;
+ }
+
+ public String getCriteriaValue() {
+ return criteriaValue;
+ }
+
+ public void setCriteriaValue(String criteriaValue) {
+ this.criteriaValue = criteriaValue;
+ }
+
+ public JsonObject getJsonObject() {
+
+ /*
+ * Specify a null config for now, but if we want normalize all the builders, we can do it at one
+ * location, when we are ready.
+ */
+ JsonBuilderFactory factory = Json.createBuilderFactory(null);
+
+ return factory.createObjectBuilder()
+ .add("match", factory.createObjectBuilder().add(criteriaName, criteriaValue)).build();
+
+ }
+
+ @Override
+ public String toString() {
+ return "MatchFilterCriteriaEntity [criteriaName=" + criteriaName + ", criteriaValue="
+ + criteriaValue + "]";
+ }
+
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/entity/SearchFilter.java b/src/main/java/org/onap/aai/sparky/search/filters/entity/SearchFilter.java
new file mode 100644
index 0000000..1b23203
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/entity/SearchFilter.java
@@ -0,0 +1,86 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.entity;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * A base entity to contain the details of the filter id and values from the FE to the BE for the
+ * purpose of driving DAL calls into ElasticSearch, Search Abstraction Service, or as a utility
+ * object within the query builders.
+ *
+ * The class has unique identifier for the filter id, and then 1 or more filter values. The value
+ * list has been introduced to help us with a multi-select use case that will need to be supported
+ * eventually.
+ */
+public class SearchFilter {
+
+ private String filterId;
+ private List<String> values;
+
+ public SearchFilter() {
+ values = new ArrayList<String>();
+ }
+
+ public SearchFilter(String filterId) {
+ this();
+ this.filterId = filterId;
+ }
+
+ public SearchFilter(String filterId, String... values) {
+ this();
+ this.filterId = filterId;
+ this.values.addAll(Arrays.asList(values));
+ }
+
+ public String getFilterId() {
+ return filterId;
+ }
+
+ public void setFilterId(String filterId) {
+ this.filterId = filterId;
+ }
+
+ public List<String> getValues() {
+ return values;
+ }
+
+ public void setValues(List<String> values) {
+ this.values = values;
+ }
+
+ public void addValue(String v) {
+ if (!values.contains(v)) {
+ values.add(v);
+ }
+
+ }
+
+ @Override
+ public String toString() {
+ return "SearchFilter [filterId=" + filterId + ", values=" + values + "]";
+ }
+
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/entity/UiFilterEntity.java b/src/main/java/org/onap/aai/sparky/search/filters/entity/UiFilterEntity.java
new file mode 100644
index 0000000..2770052
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/entity/UiFilterEntity.java
@@ -0,0 +1,178 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.onap.aai.sparky.search.filters.config.UiFilterConfig;
+import org.onap.aai.sparky.search.filters.config.UiFilterOptionsValuesConfig;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+/**
+ * Stores data for a single filter for a given UI view.
+ * <p>
+ * When a UI view wants to know which filters it should display, an object of this class is created for each
+ * filter discovered and stores data for that filter. Each filter/object of this class is added to a
+ * ViewFilterList object which is then serialized to JSON and returned to the view in the response body.
+ */
+@JsonInclude(Include.NON_NULL)
+public class UiFilterEntity {
+ private String filterId;
+ private String filterName;
+ private String displayName;
+ private String dataType;
+
+ private String multiSelect;
+ private String watermark;
+ private UiFilterOptionsValuesConfig defaultValue;
+ private String optionsType;
+
+ private List<UiFilterOptionsValuesConfig> optionsValues;
+
+ private List<UiFilterValueEntity> filterValueList;
+
+ public UiFilterEntity() {}
+
+ public UiFilterEntity(UiFilterConfig filterConfig) {
+ if (filterConfig.getFilterId() != null) {
+ this.setFilterId(filterConfig.getFilterId());
+ }
+ if (filterConfig.getFilterName() != null) {
+ this.setFilterName(filterConfig.getFilterName());
+ }
+ if (filterConfig.getDisplayName() != null) {
+ this.setDisplayName(filterConfig.getDisplayName());
+ }
+ if (filterConfig.getDataType() != null) {
+ this.setDataType(filterConfig.getDataType());
+ }
+ if (filterConfig.getMultiSelect() != null) {
+ this.setMultiSelect(filterConfig.getMultiSelect());
+ }
+ if (filterConfig.getWatermark() != null) {
+ this.setWatermark(filterConfig.getWatermark());
+ }
+ if (filterConfig.getDefaultValue() != null) {
+ this.setDefaultValue(filterConfig.getDefaultValue());
+ }
+ if (filterConfig.getOptionsType() != null) {
+ this.setOptionsType(filterConfig.getOptionsType());
+ }
+ if(filterConfig.getOptionsValues() != null && !filterConfig.getOptionsValues().isEmpty()) {
+ this.setOptionsValues(filterConfig.getOptionsValues());
+ } else {
+ this.optionsValues = new ArrayList<UiFilterOptionsValuesConfig>();
+ }
+ }
+
+ public void addFilterValue(UiFilterValueEntity valueEntity) {
+ if (null == filterValueList) {
+ filterValueList = new ArrayList<>();
+ }
+
+ this.filterValueList.add(valueEntity);
+ }
+
+ public String getFilterId() {
+ return filterId;
+ }
+
+ public String getFilterName() {
+ return filterName;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public String getDataType() {
+ return dataType;
+ }
+
+ public UiFilterOptionsValuesConfig getDefaultValue() {
+ return defaultValue;
+ }
+
+ public List<UiFilterValueEntity> getFilterValueList() {
+ return filterValueList;
+ }
+
+ public void setFilterId(String filterId) {
+ this.filterId = filterId;
+ }
+
+ public void setFilterName(String filterName) {
+ this.filterName = filterName;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ public void setDataType(String dataType) {
+ this.dataType = dataType;
+ }
+
+ public String getMultiSelect() {
+ return multiSelect;
+ }
+
+ public void setMultiSelect(String multiSelect) {
+ this.multiSelect = multiSelect;
+ }
+
+ public String getWatermark() {
+ return watermark;
+ }
+
+ public void setWatermark(String watermark) {
+ this.watermark = watermark;
+ }
+
+ public String getOptionsType() {
+ return optionsType;
+ }
+
+ public void setOptionsType(String optionsType) {
+ this.optionsType = optionsType;
+ }
+
+ public List<UiFilterOptionsValuesConfig> getOptionsValues() {
+ return optionsValues;
+ }
+
+ public void setOptionsValues(List<UiFilterOptionsValuesConfig> optionsValues) {
+ this.optionsValues = optionsValues;
+ }
+
+ public void setDefaultValue(UiFilterOptionsValuesConfig defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public void setFilterValueList(List<UiFilterValueEntity> values) {
+ this.filterValueList = values;
+ }
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/entity/UiFilterValueEntity.java b/src/main/java/org/onap/aai/sparky/search/filters/entity/UiFilterValueEntity.java
new file mode 100644
index 0000000..a0bbd90
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/entity/UiFilterValueEntity.java
@@ -0,0 +1,78 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.entity;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+/**
+ * This class represents a single item or value to populate the FE filter component with.
+ * A drop-down list, for example, may be populated with the values from several instances of this class.
+ */
+@JsonInclude(Include.NON_NULL)
+public class UiFilterValueEntity {
+ private String filterId;
+ private String filterValue;
+ private String displayName; // The string that will be rendered in the view
+
+ public UiFilterValueEntity() {}
+
+ public UiFilterValueEntity(String filterId, String filterValue, String displayName) {
+ this.filterId = filterId;
+ this.filterValue = filterValue;
+ this.displayName = displayName;
+ }
+
+ public String getFilterId() {
+ return filterId;
+ }
+
+ public String getFilterValue() {
+ return filterValue;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setFilterId(String filterId) {
+ this.filterId = filterId;
+ }
+
+ public void setFilterValue(String filterValue) {
+ this.filterValue = filterValue;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ @Override
+ public String toString() {
+ return "UiFilterValueEntity [" + (filterId != null ? "filterId=" + filterId + ", " : "")
+ + (filterValue != null ? "filterValue=" + filterValue + ", " : "")
+ + (displayName != null ? "displayName=" + displayName : "") + "]";
+ }
+
+
+}
diff --git a/src/main/java/org/onap/aai/sparky/search/filters/entity/UiFiltersEntity.java b/src/main/java/org/onap/aai/sparky/search/filters/entity/UiFiltersEntity.java
new file mode 100644
index 0000000..2e8fd17
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/search/filters/entity/UiFiltersEntity.java
@@ -0,0 +1,51 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.search.filters.entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Represents a list of filters that a given UI view should display.
+ * <p>
+ * When a UI view wants to know which filters it should display, an object of this class is created to keep
+ * track of all the filters that are discovered for that view and is then serialized to JSON and returned to
+ * the view in the response body.
+ */
+public class UiFiltersEntity {
+ private List<UiFilterEntity> filters = new ArrayList<>();
+
+
+
+ public void addFilter(UiFilterEntity viewFilter) {
+ filters.add(viewFilter);
+ }
+
+ public List<UiFilterEntity> getFilters() {
+ return filters;
+ }
+
+ public void setFilters(List<UiFilterEntity> filters) {
+ this.filters = filters;
+ }
+}
diff --git a/src/main/java/org/onap/aai/sparky/security/portal/PortalRestAPIServiceImpl.java b/src/main/java/org/onap/aai/sparky/security/portal/PortalRestAPIServiceImpl.java
index 798022a..9e405b5 100644
--- a/src/main/java/org/onap/aai/sparky/security/portal/PortalRestAPIServiceImpl.java
+++ b/src/main/java/org/onap/aai/sparky/security/portal/PortalRestAPIServiceImpl.java
@@ -176,13 +176,8 @@ public class PortalRestAPIServiceImpl implements IPortalRestAPIService {
// Role interface
/////////////////////////////////////////////////////////////////////////////
- /*
- * (non-Javadoc)
- *
- * @see com.att.fusion.core.onboarding.crossapi.IPortalRestAPIService#getAvailableRoles()
- */
@Override
- public List<EcompRole> getAvailableRoles(String role) throws PortalAPIException {
+ public List<EcompRole> getAvailableRoles(String requestedLoginId) throws PortalAPIException {
LOG.debug("Get available roles");
return UserManager.getRoles();
}
@@ -250,5 +245,4 @@ public class PortalRestAPIServiceImpl implements IPortalRestAPIService {
formatter.applyPattern(message);
return formatter.format(args);
}
-
} \ No newline at end of file
diff --git a/src/main/java/org/onap/aai/sparky/synchronizer/config/NetworkStatisticsConfig.java b/src/main/java/org/onap/aai/sparky/synchronizer/config/NetworkStatisticsConfig.java
new file mode 100644
index 0000000..90429a1
--- /dev/null
+++ b/src/main/java/org/onap/aai/sparky/synchronizer/config/NetworkStatisticsConfig.java
@@ -0,0 +1,237 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.aai.sparky.synchronizer.config;
+
+public class NetworkStatisticsConfig {
+
+ private int numSamplesPerThreadForRunningAverage;
+
+ private String bytesHistogramLabel;
+
+ private long bytesHistogramMaxYAxis;
+
+ private int bytesHistogramNumBins;
+
+ private int bytesHistogramNumDecimalPoints;
+
+ private String queueLengthHistogramLabel;
+
+ private long queueLengthHistogramMaxYAxis;
+
+ private int queueLengthHistogramNumBins;
+
+ private int queueLengthHistogramNumDecimalPoints;
+
+ private String taskAgeHistogramLabel;
+
+ private long taskAgeHistogramMaxYAxis;
+
+ private int taskAgeHistogramNumBins;
+
+ private int taskAgeHistogramNumDecimalPoints;
+
+ private String responseTimeHistogramLabel;
+
+ private long responseTimeHistogramMaxYAxis;
+
+ private int responseTimeHistogramNumBins;
+
+ private int responseTimeHistogramNumDecimalPoints;
+
+ private String tpsHistogramLabel;
+
+ private long tpsHistogramMaxYAxis;
+
+ private int tpsHistogramNumBins;
+
+ private int tpsHistogramNumDecimalPoints;
+
+ public int getNumSamplesPerThreadForRunningAverage() {
+ return numSamplesPerThreadForRunningAverage;
+ }
+
+ public void setNumSamplesPerThreadForRunningAverage(int numSamplesPerThreadForRunningAverage) {
+ this.numSamplesPerThreadForRunningAverage = numSamplesPerThreadForRunningAverage;
+ }
+
+ public String getBytesHistogramLabel() {
+ return bytesHistogramLabel;
+ }
+
+ public void setBytesHistogramLabel(String bytesHistogramLabel) {
+ this.bytesHistogramLabel = bytesHistogramLabel;
+ }
+
+ public long getBytesHistogramMaxYAxis() {
+ return bytesHistogramMaxYAxis;
+ }
+
+ public void setBytesHistogramMaxYAxis(long bytesHistogramMaxYAxis) {
+ this.bytesHistogramMaxYAxis = bytesHistogramMaxYAxis;
+ }
+
+ public int getBytesHistogramNumBins() {
+ return bytesHistogramNumBins;
+ }
+
+ public void setBytesHistogramNumBins(int bytesHistogramNumBins) {
+ this.bytesHistogramNumBins = bytesHistogramNumBins;
+ }
+
+ public int getBytesHistogramNumDecimalPoints() {
+ return bytesHistogramNumDecimalPoints;
+ }
+
+ public void setBytesHistogramNumDecimalPoints(int bytesHistogramNumDecimalPoints) {
+ this.bytesHistogramNumDecimalPoints = bytesHistogramNumDecimalPoints;
+ }
+
+ public String getQueueLengthHistogramLabel() {
+ return queueLengthHistogramLabel;
+ }
+
+ public void setQueueLengthHistogramLabel(String queueLengthHistogramLabel) {
+ this.queueLengthHistogramLabel = queueLengthHistogramLabel;
+ }
+
+ public long getQueueLengthHistogramMaxYAxis() {
+ return queueLengthHistogramMaxYAxis;
+ }
+
+ public void setQueueLengthHistogramMaxYAxis(long queueLengthHistogramMaxYAxis) {
+ this.queueLengthHistogramMaxYAxis = queueLengthHistogramMaxYAxis;
+ }
+
+ public int getQueueLengthHistogramNumBins() {
+ return queueLengthHistogramNumBins;
+ }
+
+ public void setQueueLengthHistogramNumBins(int queueLengthHistogramNumBins) {
+ this.queueLengthHistogramNumBins = queueLengthHistogramNumBins;
+ }
+
+ public int getQueueLengthHistogramNumDecimalPoints() {
+ return queueLengthHistogramNumDecimalPoints;
+ }
+
+ public void setQueueLengthHistogramNumDecimalPoints(int queueLengthHistogramNumDecimalPoints) {
+ this.queueLengthHistogramNumDecimalPoints = queueLengthHistogramNumDecimalPoints;
+ }
+
+ public String getTaskAgeHistogramLabel() {
+ return taskAgeHistogramLabel;
+ }
+
+ public void setTaskAgeHistogramLabel(String taskAgeHistogramLabel) {
+ this.taskAgeHistogramLabel = taskAgeHistogramLabel;
+ }
+
+ public long getTaskAgeHistogramMaxYAxis() {
+ return taskAgeHistogramMaxYAxis;
+ }
+
+ public void setTaskAgeHistogramMaxYAxis(long taskAgeHistogramMaxYAxis) {
+ this.taskAgeHistogramMaxYAxis = taskAgeHistogramMaxYAxis;
+ }
+
+ public int getTaskAgeHistogramNumBins() {
+ return taskAgeHistogramNumBins;
+ }
+
+ public void setTaskAgeHistogramNumBins(int taskAgeHistogramNumBins) {
+ this.taskAgeHistogramNumBins = taskAgeHistogramNumBins;
+ }
+
+ public int getTaskAgeHistogramNumDecimalPoints() {
+ return taskAgeHistogramNumDecimalPoints;
+ }
+
+ public void setTaskAgeHistogramNumDecimalPoints(int taskAgeHistogramNumDecimalPoints) {
+ this.taskAgeHistogramNumDecimalPoints = taskAgeHistogramNumDecimalPoints;
+ }
+
+ public String getResponseTimeHistogramLabel() {
+ return responseTimeHistogramLabel;
+ }
+
+ public void setResponseTimeHistogramLabel(String responseTimeHistogramLabel) {
+ this.responseTimeHistogramLabel = responseTimeHistogramLabel;
+ }
+
+ public long getResponseTimeHistogramMaxYAxis() {
+ return responseTimeHistogramMaxYAxis;
+ }
+
+ public void setResponseTimeHistogramMaxYAxis(long responseTimeHistogramMaxYAxis) {
+ this.responseTimeHistogramMaxYAxis = responseTimeHistogramMaxYAxis;
+ }
+
+ public int getResponseTimeHistogramNumBins() {
+ return responseTimeHistogramNumBins;
+ }
+
+ public void setResponseTimeHistogramNumBins(int responseTimeHistogramNumBins) {
+ this.responseTimeHistogramNumBins = responseTimeHistogramNumBins;
+ }
+
+ public int getResponseTimeHistogramNumDecimalPoints() {
+ return responseTimeHistogramNumDecimalPoints;
+ }
+
+ public void setResponseTimeHistogramNumDecimalPoints(int responseTimeHistogramNumDecimalPoints) {
+ this.responseTimeHistogramNumDecimalPoints = responseTimeHistogramNumDecimalPoints;
+ }
+
+ public String getTpsHistogramLabel() {
+ return tpsHistogramLabel;
+ }
+
+ public void setTpsHistogramLabel(String tpsHistogramLabel) {
+ this.tpsHistogramLabel = tpsHistogramLabel;
+ }
+
+ public long getTpsHistogramMaxYAxis() {
+ return tpsHistogramMaxYAxis;
+ }
+
+ public void setTpsHistogramMaxYAxis(long tpsHistogramMaxYAxis) {
+ this.tpsHistogramMaxYAxis = tpsHistogramMaxYAxis;
+ }
+
+ public int getTpsHistogramNumBins() {
+ return tpsHistogramNumBins;
+ }
+
+ public void setTpsHistogramNumBins(int tpsHistogramNumBins) {
+ this.tpsHistogramNumBins = tpsHistogramNumBins;
+ }
+
+ public int getTpsHistogramNumDecimalPoints() {
+ return tpsHistogramNumDecimalPoints;
+ }
+
+ public void setTpsHistogramNumDecimalPoints(int tpsHistogramNumDecimalPoints) {
+ this.tpsHistogramNumDecimalPoints = tpsHistogramNumDecimalPoints;
+ }
+
+}
diff --git a/src/main/java/org/onap/aai/sparky/viewandinspect/config/TierSupportUiConstants.java b/src/main/java/org/onap/aai/sparky/viewandinspect/config/TierSupportUiConstants.java
index f7fc4a2..8569712 100644
--- a/src/main/java/org/onap/aai/sparky/viewandinspect/config/TierSupportUiConstants.java
+++ b/src/main/java/org/onap/aai/sparky/viewandinspect/config/TierSupportUiConstants.java
@@ -40,7 +40,7 @@ public class TierSupportUiConstants {
public static String DYNAMIC_CONFIG_APP_LOCATION = CONFIG_HOME;
public static String CONFIG_OXM_LOCATION = CONFIG_HOME + "model" + FILESEP;
-
+ public static String CONFIG_FILTERS_BASE_LOCATION = CONFIG_HOME + FILESEP;
public static String CONFIG_AUTH_LOCATION = CONFIG_HOME + "auth" + FILESEP;
public static String HOST = "host";
@@ -56,7 +56,10 @@ public class TierSupportUiConstants {
public static final String ES_SUGGEST_API = "_suggest";
public static final String ES_COUNT_API = "_count";
public static final String ES_SEARCH_API = "_search";
-
+
+ public static final String UI_FILTER_VIEW_NAME_PARAMETER = "viewName";
+ public static final String UI_FILTER_ID_LIST_PARAMETER = "filterIdList";
+
public static final String ENTITY_AUTO_SUGGEST_INDEX_NAME_DEFAULT =
"entityautosuggestindex-localhost";
public static final String ENTITY_AUTO_SUGGEST_SETTINGS_FILE_DEFAULT =
@@ -65,6 +68,10 @@ public class TierSupportUiConstants {
"/etc/autoSuggestMappings.json";
public static final String ENTITY_DYNAMIC_MAPPINGS_FILE_DEFAULT =
"/etc/dynamicMappings.json";
+ public static final String FILTER_LIST_FILE_DEFAULT =
+ CONFIG_FILTERS_BASE_LOCATION + "filters" + FILESEP + "aaiui_filters.json";
+ public static final String FILTER_MAPPING_FILE_DEFAULT =
+ CONFIG_FILTERS_BASE_LOCATION + "filters" + FILESEP + "aaiui_views.json";
// JUnit testing synchronizer.properties file
public static String TEST_CONFIG_FILE =
@@ -183,6 +190,21 @@ public class TierSupportUiConstants {
}
/**
+ * @return the cONFIG_FILTERS_BASE_LOCATION
+ */
+ public static String getCONFIG_FILTERS_BASE_LOCATION() {
+ return CONFIG_FILTERS_BASE_LOCATION;
+ }
+
+ /**
+ * @param cONFIG_FILTERS_BASE_LOCATION the cONFIG_FILTERS_BASE_LOCATION to set
+ */
+ public static void setCONFIG_FILTERS_BASE_LOCATION(String cONFIG_FILTERS_BASE_LOCATION) {
+ CONFIG_FILTERS_BASE_LOCATION = cONFIG_FILTERS_BASE_LOCATION;
+ }
+
+
+ /**
* @return the cONFIG_AUTH_LOCATION
*/
public static String getCONFIG_AUTH_LOCATION() {