2 * ============LICENSE_START=======================================================
3 * ONAP : ccsdk features
4 * ================================================================================
5 * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.ccsdk.features.sdnr.wt.common.database.responses;
24 import org.elasticsearch.client.Response;
25 import org.json.JSONArray;
26 import org.json.JSONObject;
27 import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit;
29 public class SearchResponse extends BaseResponse {
32 private SearchHit[] searchHits;
33 private JSONObject aggregations;
35 public SearchResponse(Response response) {
37 this.handleResult(this.getJson(response));
40 public SearchResponse(String json) {
42 this.handleResult(this.getJson(json));
45 private void handleResult(JSONObject result) {
46 if(result!=null && this.isResponseSucceeded()) {
47 JSONObject hitsouter=result.getJSONObject("hits");
48 this.total = hitsouter.getLong("total");
49 JSONArray a=hitsouter.getJSONArray("hits");
50 SearchHit[] hits=new SearchHit[a.length()];
51 for(int i=0;i<a.length();i++) {
52 hits[i]=new SearchHit(a.getJSONObject(i));
55 if(result.has("aggregations")) {
56 this.aggregations = result.getJSONObject("aggregations");
59 this.aggregations=null;
63 this.searchHits=new SearchHit[0];
66 public SearchHit[] getHits() {
67 return this.searchHits;
69 public long getTotal() {
72 public boolean hasAggregations() {
73 return this.aggregations!=null;
75 public AggregationEntries getAggregations(String property) {
76 AggregationEntries entries=new AggregationEntries();
77 if(this.aggregations!=null && this.aggregations.has(property)) {
78 JSONArray a=this.aggregations.getJSONObject(property).getJSONArray("buckets");
79 for(int i=0;i<a.length();i++) {
80 entries.put(a.getJSONObject(i).getString("key"),a.getJSONObject(i).getLong("doc_count") );