* ============LICENSE_START=======================================================
* org.onap.aai
* ================================================================================
- * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017 Amdocs
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 Amdocs
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* 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.aggregatevnf.search;
import java.util.List;
import javax.json.JsonObject;
+import javax.ws.rs.core.MediaType;
import org.json.JSONArray;
import org.json.JSONObject;
import org.onap.aai.cl.eelf.LoggerFactory;
import org.onap.aai.restclient.client.OperationResult;
import org.onap.aai.sparky.common.search.CommonSearchSuggestion;
-import org.onap.aai.sparky.dal.elasticsearch.SearchAdapter;
-import org.onap.aai.sparky.dataintegrity.config.DiUiConstants;
+import org.onap.aai.sparky.dal.ElasticSearchAdapter;
import org.onap.aai.sparky.logging.AaiUiMsgs;
import org.onap.aai.sparky.search.api.SearchProvider;
import org.onap.aai.sparky.search.entity.QuerySearchEntity;
import org.onap.aai.sparky.search.entity.SearchSuggestion;
import org.onap.aai.sparky.search.filters.entity.UiFilterValueEntity;
import org.onap.aai.sparky.util.NodeUtils;
-import org.onap.aai.sparky.viewandinspect.config.TierSupportUiConstants;
+import org.onap.aai.sparky.viewandinspect.config.SparkyConstants;
import com.fasterxml.jackson.databind.ObjectMapper;
public class AggregateVnfSearchProvider implements SearchProvider {
-
- private static final Logger LOG =
- LoggerFactory.getInstance().getLogger(AggregateVnfSearchProvider.class);
+
+ private static final Logger LOG = LoggerFactory.getInstance().getLogger(AggregateVnfSearchProvider.class);
private ObjectMapper mapper;
- private static SearchAdapter search = null;
-
+ private ElasticSearchAdapter elasticSearchAdapter = null;
private String autoSuggestIndexName;
- private String elasticSearchIp;
- private String elatsticSearchPort;
-
- public AggregateVnfSearchProvider() {
+ private String vnfSearchSuggestionRoute;
+ public AggregateVnfSearchProvider(ElasticSearchAdapter elasticSearchAdapter,
+ String autoSuggestIndexName, String vnfSearchSuggestionRoute) {
mapper = new ObjectMapper();
-
- try {
- if (search == null) {
- search = new SearchAdapter();
- }
- } catch (Exception exc) {
- LOG.error(AaiUiMsgs.CONFIGURATION_ERROR,
- "Search Configuration Error. Error = " + exc.getMessage());
- }
+ this.elasticSearchAdapter = elasticSearchAdapter;
+ this.autoSuggestIndexName = autoSuggestIndexName;
+ this.vnfSearchSuggestionRoute = vnfSearchSuggestionRoute;
}
-
+
public void setAutoSuggestIndexName(String autoSuggestIndexName) {
this.autoSuggestIndexName = autoSuggestIndexName;
}
- public void setElasticSearchIp(String elasticSearchIp) {
- this.elasticSearchIp = elasticSearchIp;
- }
-
- public void setElatsticSearchPort(String elatsticSearchPort) {
- this.elatsticSearchPort = elatsticSearchPort;
- }
-
- /**
- * 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 = elasticSearchIp;
- final String port = elatsticSearchPort;
- return String.format("http://%s:%s/%s/%s", host, port, indexName, api);
- }
-
@Override
public List<SearchSuggestion> search(QuerySearchEntity queryRequest) {
try {
/* Create suggestions query */
- JsonObject vnfSearch = VnfSearchQueryBuilder.createSuggestionsQuery(
- String.valueOf(queryRequest.getMaxResults()), queryRequest.getQueryStr());
+ JsonObject vnfSearch = VnfSearchQueryBuilder.createSuggestionsQuery(String.valueOf(queryRequest.getMaxResults()), queryRequest.getQueryStr());
/* Parse suggestions response */
- OperationResult opResult =
- search.doPost(getFullUrl(autoSuggestIndexName, TierSupportUiConstants.ES_SUGGEST_API),
- vnfSearch.toString(), DiUiConstants.APP_JSON);
+ OperationResult opResult = elasticSearchAdapter.doPost(
+ elasticSearchAdapter.buildElasticSearchUrlForApi(autoSuggestIndexName,
+ SparkyConstants.ES_SUGGEST_API),
+ vnfSearch.toString(), MediaType.APPLICATION_JSON_TYPE);
String result = opResult.getResult();
if (querySuggestion != null) {
CommonSearchSuggestion responseSuggestion = new CommonSearchSuggestion();
responseSuggestion.setText(querySuggestion.getString("text"));
- responseSuggestion.setRoute("vnfSearch"); // TODO -> Read route from
- // suggestive-search.properties instead of
- // hard coding
- responseSuggestion
- .setHashId(NodeUtils.generateUniqueShaDigest(querySuggestion.getString("text")));
+ responseSuggestion.setRoute(vnfSearchSuggestionRoute);
+ responseSuggestion.setHashId(NodeUtils.generateUniqueShaDigest(querySuggestion.getString("text")));
// Extract filter list from JSON and add to response suggestion
JSONObject payload = querySuggestion.getJSONObject("payload");
JSONArray filterList = payload.getJSONArray("filterList");
for (int filter = 0; filter < filterList.length(); filter++) {
String filterValueString = filterList.getJSONObject(filter).toString();
- UiFilterValueEntity filterValue =
- mapper.readValue(filterValueString, UiFilterValueEntity.class);
+ UiFilterValueEntity filterValue = mapper.readValue(filterValueString, UiFilterValueEntity.class);
responseSuggestion.getFilterValues().add(filterValue);
}
}
return returnList;
}
-
+
}