package io.citrine.jcc.query;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonSetter;

/**
 * Class used to match against a property.
 *
 * @author Kyle Michel
 */
public class PropertiesQuery extends ValueQuery {

    @Override
    @JsonSetter("logic")
    public PropertiesQuery logic(final Logic logic) {
        super.logic(logic);
        return this;
    }

    @Override
    @JsonIgnore
    public PropertiesQuery name(final String extractAs, final FilterGroup filterGroup) {
        super.name(extractAs, filterGroup);
        return this;
    }

    @Override
    @JsonIgnore
    public PropertiesQuery name(final String extractAs) {
        super.name(extractAs);
        return this;
    }

    @Override
    @JsonIgnore
    public PropertiesQuery name(final FilterGroup filterGroup) {
        super.name(filterGroup);
        return this;
    }

    @Override
    @JsonIgnore
    public PropertiesQuery value(final String extractAs, final FilterGroup filterGroup) {
        super.value(extractAs, filterGroup);
        return this;
    }

    @Override
    @JsonIgnore
    public PropertiesQuery value(final String extractAs) {
        super.value(extractAs);
        return this;
    }

    @Override
    @JsonIgnore
    public PropertiesQuery value(final FilterGroup filterGroup) {
        super.value(filterGroup);
        return this;
    }

    @Override
    @JsonIgnore
    public PropertiesQuery units(final String extractAs, final FilterGroup filterGroup) {
        super.units(extractAs, filterGroup);
        return this;
    }

    @Override
    @JsonIgnore
    public PropertiesQuery units(final String extractAs) {
        super.units(extractAs);
        return this;
    }

    @Override
    @JsonIgnore
    public PropertiesQuery units(final FilterGroup filterGroup) {
        super.units(filterGroup);
        return this;
    }
}
@@ -24,16 +24,68 @@
 query;%0A%0A
+import com.fasterxml.jackson.annotation.JsonGetter;%0A
 import c
@@ -179,16 +179,105 @@
 nSetter;
+%0Aimport io.citrine.jcc.util.ListUtil;%0A%0Aimport java.util.ArrayList;%0Aimport java.util.List;
 %0A%0A/**%0A *
@@ -2039,10 +2039,1285 @@
 s;%0A    %7D
+%0A%0A    /**%0A     * Set the list of conditions operations. This adds to any operations that are already saved.%0A     *%0A     * @param properties List of %7B@link ValueQuery%7D objects.%0A     */%0A    @JsonSetter(%22conditions%22)%0A    private void conditions(final List%3CValueQuery%3E properties) %7B%0A        this.conditions = ListUtil.add(properties, this.conditions);%0A    %7D%0A%0A    /**%0A     * Add to the list of conditions operations.%0A     *%0A     * @param conditions %7B@link ValueQuery%7D object to add.%0A     * @return This object.%0A     */%0A    @JsonIgnore%0A    public PropertiesQuery conditions(final ValueQuery conditions) %7B%0A        this.conditions = ListUtil.add(conditions, this.conditions);%0A        return this;%0A    %7D%0A%0A    /**%0A     * Get an iterable of conditions operations.%0A     *%0A     * @return Iterable of %7B@link ValueQuery%7D objects.%0A     */%0A    @JsonGetter(%22conditions%22)%0A    public Iterable%3CValueQuery%3E conditions() %7B%0A        return this.conditions;%0A    %7D%0A%0A    /**%0A     * Get whether an conditions queries exist.%0A     *%0A     * @return True if any conditions queries exist.%0A     */%0A    @JsonIgnore%0A    public boolean hasConditions() %7B%0A        return ListUtil.hasContent(this.conditions);%0A    %7D%0A%0A    /** List of conditions queries. */%0A    private List%3CValueQuery%3E conditions = new ArrayList%3C%3E();
 %0A%7D

add conditions to property queries