aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/aai/sa/searchdbabstraction/searchapi/RangeQuery.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/aai/sa/searchdbabstraction/searchapi/RangeQuery.java')
-rw-r--r--src/main/java/org/onap/aai/sa/searchdbabstraction/searchapi/RangeQuery.java492
1 files changed, 242 insertions, 250 deletions
diff --git a/src/main/java/org/onap/aai/sa/searchdbabstraction/searchapi/RangeQuery.java b/src/main/java/org/onap/aai/sa/searchdbabstraction/searchapi/RangeQuery.java
index c5b4886..60cc9e6 100644
--- a/src/main/java/org/onap/aai/sa/searchdbabstraction/searchapi/RangeQuery.java
+++ b/src/main/java/org/onap/aai/sa/searchdbabstraction/searchapi/RangeQuery.java
@@ -25,22 +25,26 @@ import com.fasterxml.jackson.annotation.JsonProperty;
/**
* This class represents a simple range query.
*
- * <p>A range query is composed of one or more operator/value pairs which define
- * the upper and lower bounds of the range, and a field to apply the query to.
+ * <p>
+ * A range query is composed of one or more operator/value pairs which define the upper and lower bounds of the range,
+ * and a field to apply the query to.
*
- * <p>Operators may be one of the following:
+ * <p>
+ * Operators may be one of the following:
* <ul>
- * <li>gt - Greater than. </li>
- * <li>gte - Greater than or equal to. </li>
- * <li>lt - Less than. </li>
- * <li>lte - Less than or equal to. </li>
+ * <li>gt - Greater than.</li>
+ * <li>gte - Greater than or equal to.</li>
+ * <li>lt - Less than.</li>
+ * <li>lte - Less than or equal to.</li>
* </ul>
- * Values may be either numeric values (Integer or Double) or Strings representing
- * dates.
+ * Values may be either numeric values (Integer or Double) or Strings representing dates.
*
- * <p>The following examples illustrate a couple of variants of the range query:
+ * <p>
+ * The following examples illustrate a couple of variants of the range query:
*
- * <p><pre>
+ * <p>
+ *
+ * <pre>
* // A simple numeric range query:
* {
* "range": {
@@ -62,283 +66,271 @@ import com.fasterxml.jackson.annotation.JsonProperty;
*/
public class RangeQuery {
- /**
- * The name of the field to apply the range query against.
- */
- private String field;
-
- /**
- * The value of the field must be greater than this value to be a match.<br>
- * NOTE: Only one of 'gt' or 'gte' should be set on any single {@link RangeQuery}
- * instance.
- */
- private Object gt;
-
- /**
- * The value of the field must be greater than or equal to this value to be a match.<br>
- * NOTE: Only one of 'gt' or 'gte' should be set on any single {@link RangeQuery}
- * instance.
- */
- private Object gte;
-
- /**
- * The value of the field must be less than this value to be a match.<br>
- * NOTE: Only one of 'lt' or 'lte' should be set on any single {@link RangeQuery}
- * instance.
- */
- private Object lt;
-
- /**
- * The value of the field must be less than or equal to than this value to be a match.<br>
- * NOTE: Only one of 'lt' or 'lte' should be set on any single {@link RangeQuery}
- * instance.
- */
- private Object lte;
-
- private String format;
-
- @JsonProperty("time-zone")
- private String timeZone;
-
- public String getField() {
- return field;
- }
-
- public void setField(String field) {
- this.field = field;
- }
-
- public Object getGt() {
- return gt;
- }
-
- public void setGt(Object gt) {
-
- // It does not make sense to assign a value to both the 'greater than'
- // and 'greater than or equal' operations, so make sure we are not
- // trying to do that.
- if (gte == null) {
-
- // Make sure that we are not trying to mix both numeric and date
- // type values in the same queries.
- if (((lt != null) && !typesMatch(gt, lt))
- || ((lte != null) && !typesMatch(gt, lte))) {
- throw new IllegalArgumentException("Cannot mix date and numeric values in the same ranged query");
- }
-
- // If we made it here, then we're all good. Store the value.
- this.gt = gt;
- } else {
- throw new IllegalArgumentException("Cannot assign both 'gt' and 'gte' fields in the same ranged query");
+ /**
+ * The name of the field to apply the range query against.
+ */
+ private String field;
+
+ /**
+ * The value of the field must be greater than this value to be a match.<br>
+ * NOTE: Only one of 'gt' or 'gte' should be set on any single {@link RangeQuery} instance.
+ */
+ private Object gt;
+
+ /**
+ * The value of the field must be greater than or equal to this value to be a match.<br>
+ * NOTE: Only one of 'gt' or 'gte' should be set on any single {@link RangeQuery} instance.
+ */
+ private Object gte;
+
+ /**
+ * The value of the field must be less than this value to be a match.<br>
+ * NOTE: Only one of 'lt' or 'lte' should be set on any single {@link RangeQuery} instance.
+ */
+ private Object lt;
+
+ /**
+ * The value of the field must be less than or equal to than this value to be a match.<br>
+ * NOTE: Only one of 'lt' or 'lte' should be set on any single {@link RangeQuery} instance.
+ */
+ private Object lte;
+
+ private String format;
+
+ @JsonProperty("time-zone")
+ private String timeZone;
+
+ public String getField() {
+ return field;
}
- }
+ public void setField(String field) {
+ this.field = field;
+ }
- public Object getGte() {
- return gte;
- }
-
- public void setGte(Object gte) {
+ public Object getGt() {
+ return gt;
+ }
- // It does not make sense to assign a value to both the 'greater than'
- // and 'greater than or equal' operations, so make sure we are not
- // trying to do that.
- if (gt == null) {
+ public void setGt(Object gt) {
- // Make sure that we are not trying to mix both numeric and date
- // type values in the same queries.
- if (((lt != null) && !typesMatch(gte, lt))
- || ((lte != null) && !typesMatch(gte, lte))) {
- throw new IllegalArgumentException("Cannot mix date and numeric values in the same ranged query");
- }
+ // It does not make sense to assign a value to both the 'greater than'
+ // and 'greater than or equal' operations, so make sure we are not
+ // trying to do that.
+ if (gte == null) {
- // If we made it here, then we're all good. Store the value.
- this.gte = gte;
+ // Make sure that we are not trying to mix both numeric and date
+ // type values in the same queries.
+ if (((lt != null) && !typesMatch(gt, lt)) || ((lte != null) && !typesMatch(gt, lte))) {
+ throw new IllegalArgumentException("Cannot mix date and numeric values in the same ranged query");
+ }
- } else {
- throw new IllegalArgumentException("Cannot assign both 'gt' and 'gte' fields in the same ranged query");
+ // If we made it here, then we're all good. Store the value.
+ this.gt = gt;
+ } else {
+ throw new IllegalArgumentException("Cannot assign both 'gt' and 'gte' fields in the same ranged query");
+ }
}
- }
- public Object getLt() {
- return lt;
- }
- public void setLt(Object lt) {
+ public Object getGte() {
+ return gte;
+ }
+
+ public void setGte(Object gte) {
- // It does not make sense to assign a value to both the 'less than'
- // and 'less than or equal' operations, so make sure we are not
- // trying to do that.
- if (lte == null) {
+ // It does not make sense to assign a value to both the 'greater than'
+ // and 'greater than or equal' operations, so make sure we are not
+ // trying to do that.
+ if (gt == null) {
- // Make sure that we are not trying to mix both numeric and date
- // type values in the same queries.
- if (((gt != null) && !typesMatch(lt, gt))
- || ((gte != null) && !typesMatch(lt, gte))) {
- throw new IllegalArgumentException("Cannot mix date and numeric values in the same ranged query");
- }
+ // Make sure that we are not trying to mix both numeric and date
+ // type values in the same queries.
+ if (((lt != null) && !typesMatch(gte, lt)) || ((lte != null) && !typesMatch(gte, lte))) {
+ throw new IllegalArgumentException("Cannot mix date and numeric values in the same ranged query");
+ }
- // If we made it here, then we're all good. Store the value.
+ // If we made it here, then we're all good. Store the value.
+ this.gte = gte;
- this.lt = lt;
- } else {
- throw new IllegalArgumentException("Cannot assign both 'lt' and 'lte' fields in the same ranged query");
+ } else {
+ throw new IllegalArgumentException("Cannot assign both 'gt' and 'gte' fields in the same ranged query");
+ }
}
- }
- public Object getLte() {
- return lte;
- }
+ public Object getLt() {
+ return lt;
+ }
- public void setLte(Object lte) {
+ public void setLt(Object lt) {
- // It does not make sense to assign a value to both the 'greater than'
- // and 'greater than or equal' operations, so make sure we are not
- // trying to do that.
- if (lt == null) {
+ // It does not make sense to assign a value to both the 'less than'
+ // and 'less than or equal' operations, so make sure we are not
+ // trying to do that.
+ if (lte == null) {
- // Make sure that we are not trying to mix both numeric and date
- // type values in the same queries.
- if (((gt != null) && !typesMatch(lte, gt))
- || ((gte != null) && !typesMatch(lte, gte))) {
- throw new IllegalArgumentException("Cannot mix date and numeric values in the same ranged query");
- }
+ // Make sure that we are not trying to mix both numeric and date
+ // type values in the same queries.
+ if (((gt != null) && !typesMatch(lt, gt)) || ((gte != null) && !typesMatch(lt, gte))) {
+ throw new IllegalArgumentException("Cannot mix date and numeric values in the same ranged query");
+ }
- // If we made it here, then we're all good. Store the value.
+ // If we made it here, then we're all good. Store the value.
- this.lte = lte;
- } else {
- throw new IllegalArgumentException("Cannot assign both 'lt' and 'lte' fields in the same ranged query");
+ this.lt = lt;
+ } else {
+ throw new IllegalArgumentException("Cannot assign both 'lt' and 'lte' fields in the same ranged query");
+ }
}
- }
-
- public String getFormat() {
- return format;
- }
-
- public void setFormat(String format) {
- this.format = format;
- }
-
- public String getTimeZone() {
- return timeZone;
- }
-
- public void setTimeZone(String timeZone) {
- this.timeZone = timeZone;
- }
-
- /**
- * This convenience method determines whether or not the supplied
- * value needs to be enclosed in '"' characters when generating
- * ElasticSearch compatible syntax.
- *
- * @param val - The value to check.
- * @return - A string representation of the value for inclusion
- * in an ElasticSearch syntax string.
- */
- private String formatStringOrNumericVal(Object val) {
-
- if (val instanceof String) {
- return "\"" + val.toString() + "\"";
- } else {
- return val.toString();
+
+ public Object getLte() {
+ return lte;
}
- }
-
-
- /**
- * This convenience method verifies that the supplied objects are
- * of classes considered to be compatible for a ranged query.
- *
- * @param value1 - The first value to check.
- * @param value2 - The second value to check.
- * @return - True if the two objects are compatible for inclusion in the
- * same ranged query, False, otherwise.
- */
- boolean typesMatch(Object value1, Object value2) {
-
- return ((value1 instanceof String) && (value2 instanceof String))
- || (!(value1 instanceof String) && !(value2 instanceof String));
- }
-
-
- /**
- * This method returns a string which represents this query in syntax
- * that is understandable by ElasticSearch and is suitable for inclusion
- * in an ElasticSearch query string.
- *
- * @return - ElasticSearch syntax string.
- */
- public String toElasticSearch() {
-
- StringBuilder sb = new StringBuilder();
-
- sb.append("{");
- sb.append("\"range\": {");
- sb.append("\"").append(field).append("\": {");
-
- // We may have one or zero of 'greater than' or 'greater
- // than or equal'
- boolean needComma = false;
- if (gte != null) {
- sb.append("\"gte\": ").append(formatStringOrNumericVal(gte));
- needComma = true;
- } else if (gt != null) {
- sb.append("\"gt\": ").append(formatStringOrNumericVal(gt));
- needComma = true;
+
+ public void setLte(Object lte) {
+
+ // It does not make sense to assign a value to both the 'greater than'
+ // and 'greater than or equal' operations, so make sure we are not
+ // trying to do that.
+ if (lt == null) {
+
+ // Make sure that we are not trying to mix both numeric and date
+ // type values in the same queries.
+ if (((gt != null) && !typesMatch(lte, gt)) || ((gte != null) && !typesMatch(lte, gte))) {
+ throw new IllegalArgumentException("Cannot mix date and numeric values in the same ranged query");
+ }
+
+ // If we made it here, then we're all good. Store the value.
+
+ this.lte = lte;
+ } else {
+ throw new IllegalArgumentException("Cannot assign both 'lt' and 'lte' fields in the same ranged query");
+ }
}
- // We may have one or zero of 'less than' or 'less
- // than or equal'
- if (lte != null) {
- if (needComma) {
- sb.append(", ");
- }
- sb.append("\"lte\": ").append(formatStringOrNumericVal(lte));
- } else if (lt != null) {
- if (needComma) {
- sb.append(", ");
- }
- sb.append("\"lt\": ").append(formatStringOrNumericVal(lt));
+ public String getFormat() {
+ return format;
}
- // Append the format specifier if one was provided.
- if (format != null) {
- sb.append(", \"format\": \"").append(format).append("\"");
+ public void setFormat(String format) {
+ this.format = format;
}
- // Append the time zone specifier if one was provided.
- if (timeZone != null) {
- sb.append(", \"time_zone\": \"").append(timeZone).append("\"");
+ public String getTimeZone() {
+ return timeZone;
}
- sb.append("}");
- sb.append("}");
- sb.append("}");
+ public void setTimeZone(String timeZone) {
+ this.timeZone = timeZone;
+ }
- return sb.toString();
- }
+ /**
+ * This convenience method determines whether or not the supplied value needs to be enclosed in '"' characters when
+ * generating ElasticSearch compatible syntax.
+ *
+ * @param val - The value to check.
+ * @return - A string representation of the value for inclusion in an ElasticSearch syntax string.
+ */
+ private String formatStringOrNumericVal(Object val) {
+
+ if (val instanceof String) {
+ return "\"" + val.toString() + "\"";
+ } else {
+ return val.toString();
+ }
+ }
- @Override
- public String toString() {
- String str = "{ field: " + field + ", ";
+ /**
+ * This convenience method verifies that the supplied objects are of classes considered to be compatible for a
+ * ranged query.
+ *
+ * @param value1 - The first value to check.
+ * @param value2 - The second value to check.
+ * @return - True if the two objects are compatible for inclusion in the same ranged query, False, otherwise.
+ */
+ boolean typesMatch(Object value1, Object value2) {
- if (gt != null) {
- str += "gt: " + gt;
- } else if (gte != null) {
- str += "gte: " + gte;
+ return ((value1 instanceof String) && (value2 instanceof String))
+ || (!(value1 instanceof String) && !(value2 instanceof String));
}
- if (lt != null) {
- str += (((gt != null) || (gte != null)) ? ", " : "") + "lt: " + lt;
- } else if (lte != null) {
- str += (((gt != null) || (gte != null)) ? ", " : "") + "lte: " + lte;
+
+ /**
+ * This method returns a string which represents this query in syntax that is understandable by ElasticSearch and is
+ * suitable for inclusion in an ElasticSearch query string.
+ *
+ * @return - ElasticSearch syntax string.
+ */
+ public String toElasticSearch() {
+
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("{");
+ sb.append("\"range\": {");
+ sb.append("\"").append(field).append("\": {");
+
+ // We may have one or zero of 'greater than' or 'greater
+ // than or equal'
+ boolean needComma = false;
+ if (gte != null) {
+ sb.append("\"gte\": ").append(formatStringOrNumericVal(gte));
+ needComma = true;
+ } else if (gt != null) {
+ sb.append("\"gt\": ").append(formatStringOrNumericVal(gt));
+ needComma = true;
+ }
+
+ // We may have one or zero of 'less than' or 'less
+ // than or equal'
+ if (lte != null) {
+ if (needComma) {
+ sb.append(", ");
+ }
+ sb.append("\"lte\": ").append(formatStringOrNumericVal(lte));
+ } else if (lt != null) {
+ if (needComma) {
+ sb.append(", ");
+ }
+ sb.append("\"lt\": ").append(formatStringOrNumericVal(lt));
+ }
+
+ // Append the format specifier if one was provided.
+ if (format != null) {
+ sb.append(", \"format\": \"").append(format).append("\"");
+ }
+
+ // Append the time zone specifier if one was provided.
+ if (timeZone != null) {
+ sb.append(", \"time_zone\": \"").append(timeZone).append("\"");
+ }
+
+ sb.append("}");
+ sb.append("}");
+ sb.append("}");
+
+ return sb.toString();
}
- str += "}";
+ @Override
+ public String toString() {
- return str;
- }
+ String str = "{ field: " + field + ", ";
+
+ if (gt != null) {
+ str += "gt: " + gt;
+ } else if (gte != null) {
+ str += "gte: " + gte;
+ }
+
+ if (lt != null) {
+ str += (((gt != null) || (gte != null)) ? ", " : "") + "lt: " + lt;
+ } else if (lte != null) {
+ str += (((gt != null) || (gte != null)) ? ", " : "") + "lte: " + lte;
+ }
+
+ str += "}";
+
+ return str;
+ }
}