bc62a95b0deb0d22445fc10853373c97e604a9b1
[aai/search-data-service.git] / src / main / java / org / openecomp / sa / searchdbabstraction / searchapi / DateHistogramAggregation.java
1 /**
2  * ============LICENSE_START=======================================================
3  * Search Data Service
4  * ================================================================================
5  * Copyright © 2017 AT&T Intellectual Property.
6  * Copyright © 2017 Amdocs
7  * All rights reserved.
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License ati
12  *
13  *    http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  *
22  * ECOMP and OpenECOMP are trademarks
23  * and service marks of AT&T Intellectual Property.
24  */
25 package org.openecomp.sa.searchdbabstraction.searchapi;
26
27 import com.fasterxml.jackson.annotation.JsonProperty;
28
29 /**
30  * An example of elasticsearch date_histogram aggregation:
31  *
32  * <p><pre>
33  * {
34  *    "aggs": {
35  *        "my_group": {
36  *            "date_histogram" : {
37  *               "field" : "date",
38  *               "interval" : "month"
39  *           }
40  *        }
41  *    }
42  * }
43  * </pre>
44  */
45
46 public class DateHistogramAggregation extends AbstractAggregation {
47
48   private String interval;
49
50   private String format;
51
52   @JsonProperty("time-zone")
53   private String timeZone;
54
55
56   public String getInterval() {
57     return interval;
58   }
59
60   public void setInterval(String interval) {
61     this.interval = interval;
62   }
63
64   public String getTimeZone() {
65     return timeZone;
66   }
67
68   public String getFormat() {
69     return format;
70   }
71
72   public void setFormat(String format) {
73     this.format = format;
74   }
75
76   public void setTimeZone(String timeZone) {
77     this.timeZone = timeZone;
78   }
79
80   @Override
81   public String toElasticSearch() {
82     StringBuilder sb = new StringBuilder();
83
84     sb.append("\"date_histogram\": {\"field\": \"");
85     sb.append(field);
86     sb.append("\"");
87     if (interval != null) {
88       sb.append(", \"interval\": \"");
89       sb.append(interval);
90       sb.append("\"");
91     }
92     if (format != null) {
93       sb.append(", \"format\": \"");
94       sb.append(format);
95       sb.append("\"");
96     }
97     if (timeZone != null) {
98       sb.append(", \"time_zone\": \"");
99       sb.append(timeZone);
100       sb.append("\"");
101     }
102     if (size != null) {
103       sb.append(", \"size\": ");
104       sb.append(size);
105     }
106     if (minThreshold != null) {
107       sb.append(", \"min_doc_count\": ").append(minThreshold);
108     }
109     sb.append("}");
110
111     return sb.toString();
112   }
113
114   @Override
115   public String toString() {
116     return "DateHistogramAggregation: [field=" + field + ", interval=" + interval + ", format="
117         + format + ", timeZone=" + timeZone + ", size=" + size + " minThreshold=" + minThreshold;
118   }
119 }