+/*
+ * Copyright (C) The Arvados Authors. All rights reserved.
+ *
+ * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0
+ *
+ */
+
+package org.arvados.client.api.model.argument;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonFormat(shape = JsonFormat.Shape.ARRAY)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({ "attribute", "operator", "operand" })
+public class Filter {
+
+ @JsonProperty("attribute")
+ private String attribute;
+
+ @JsonProperty("operator")
+ private Operator operator;
+
+ @JsonProperty("operand")
+ private Object operand;
+
+ private Filter(String attribute, Operator operator, Object operand) {
+ this.attribute = attribute;
+ this.operator = operator;
+ this.operand = operand;
+ }
+
+ public static Filter of(String attribute, Operator operator, Object operand) {
+ return new Filter(attribute, operator, operand);
+ }
+
+ public String getAttribute() {
+ return this.attribute;
+ }
+
+ public Operator getOperator() {
+ return this.operator;
+ }
+
+ public Object getOperand() {
+ return this.operand;
+ }
+
+ public boolean equals(Object o) {
+ if (o == this) return true;
+ if (!(o instanceof Filter)) return false;
+ final Filter other = (Filter) o;
+ final Object this$attribute = this.getAttribute();
+ final Object other$attribute = other.getAttribute();
+ if (this$attribute == null ? other$attribute != null : !this$attribute.equals(other$attribute)) return false;
+ final Object this$operator = this.getOperator();
+ final Object other$operator = other.getOperator();
+ if (this$operator == null ? other$operator != null : !this$operator.equals(other$operator)) return false;
+ final Object this$operand = this.getOperand();
+ final Object other$operand = other.getOperand();
+ if (this$operand == null ? other$operand != null : !this$operand.equals(other$operand)) return false;
+ return true;
+ }
+
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ final Object $attribute = this.getAttribute();
+ result = result * PRIME + ($attribute == null ? 43 : $attribute.hashCode());
+ final Object $operator = this.getOperator();
+ result = result * PRIME + ($operator == null ? 43 : $operator.hashCode());
+ final Object $operand = this.getOperand();
+ result = result * PRIME + ($operand == null ? 43 : $operand.hashCode());
+ return result;
+ }
+
+ public String toString() {
+ return "Filter(attribute=" + this.getAttribute() + ", operator=" + this.getOperator() + ", operand=" + this.getOperand() + ")";
+ }
+
+ public enum Operator {
+
+ @JsonProperty("<")
+ LESS,
+
+ @JsonProperty("<=")
+ LESS_EQUALS,
+
+ @JsonProperty(">=")
+ MORE_EQUALS,
+
+ @JsonProperty(">")
+ MORE,
+
+ @JsonProperty("like")
+ LIKE,
+
+ @JsonProperty("ilike")
+ ILIKE,
+
+ @JsonProperty("=")
+ EQUALS,
+
+ @JsonProperty("!=")
+ NOT_EQUALS,
+
+ @JsonProperty("in")
+ IN,
+
+ @JsonProperty("not in")
+ NOT_IN,
+
+ @JsonProperty("is_a")
+ IS_A
+ }
+}