// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: policy_condition.proto
package policy;

public final class PolicyCondition {

    private PolicyCondition() {
    }

    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {
    }

    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
        registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
    }

    /**
     * <pre>
     * Operator to be used when comparing Kpis with condition values
     * </pre>
     *
     * Protobuf enum {@code policy.NumericalOperator}
     */
    public enum NumericalOperator implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <pre>
         * Kpi numerical operator undefined
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_UNDEFINED = 0;</code>
         */
        POLICYRULE_CONDITION_NUMERICAL_UNDEFINED(0),
        /**
         * <pre>
         * Kpi is equal with value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_EQUAL = 1;</code>
         */
        POLICYRULE_CONDITION_NUMERICAL_EQUAL(1),
        /**
         * <pre>
         * Kpi is not equal with value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_NOT_EQUAL = 2;</code>
         */
        POLICYRULE_CONDITION_NUMERICAL_NOT_EQUAL(2),
        /**
         * <pre>
         * Kpi is less than value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_LESS_THAN = 3;</code>
         */
        POLICYRULE_CONDITION_NUMERICAL_LESS_THAN(3),
        /**
         * <pre>
         * Kpi is less than or equal with value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_LESS_THAN_EQUAL = 4;</code>
         */
        POLICYRULE_CONDITION_NUMERICAL_LESS_THAN_EQUAL(4),
        /**
         * <pre>
         * Kpi is greater than value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_GREATER_THAN = 5;</code>
         */
        POLICYRULE_CONDITION_NUMERICAL_GREATER_THAN(5),
        /**
         * <pre>
         * Kpi is less than or equal with value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_GREATER_THAN_EQUAL = 6;</code>
         */
        POLICYRULE_CONDITION_NUMERICAL_GREATER_THAN_EQUAL(6),
        UNRECOGNIZED(-1);

        /**
         * <pre>
         * Kpi numerical operator undefined
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_UNDEFINED = 0;</code>
         */
        public static final int POLICYRULE_CONDITION_NUMERICAL_UNDEFINED_VALUE = 0;

        /**
         * <pre>
         * Kpi is equal with value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_EQUAL = 1;</code>
         */
        public static final int POLICYRULE_CONDITION_NUMERICAL_EQUAL_VALUE = 1;

        /**
         * <pre>
         * Kpi is not equal with value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_NOT_EQUAL = 2;</code>
         */
        public static final int POLICYRULE_CONDITION_NUMERICAL_NOT_EQUAL_VALUE = 2;

        /**
         * <pre>
         * Kpi is less than value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_LESS_THAN = 3;</code>
         */
        public static final int POLICYRULE_CONDITION_NUMERICAL_LESS_THAN_VALUE = 3;

        /**
         * <pre>
         * Kpi is less than or equal with value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_LESS_THAN_EQUAL = 4;</code>
         */
        public static final int POLICYRULE_CONDITION_NUMERICAL_LESS_THAN_EQUAL_VALUE = 4;

        /**
         * <pre>
         * Kpi is greater than value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_GREATER_THAN = 5;</code>
         */
        public static final int POLICYRULE_CONDITION_NUMERICAL_GREATER_THAN_VALUE = 5;

        /**
         * <pre>
         * Kpi is less than or equal with value
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_NUMERICAL_GREATER_THAN_EQUAL = 6;</code>
         */
        public static final int POLICYRULE_CONDITION_NUMERICAL_GREATER_THAN_EQUAL_VALUE = 6;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static NumericalOperator valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static NumericalOperator forNumber(int value) {
            switch(value) {
                case 0:
                    return POLICYRULE_CONDITION_NUMERICAL_UNDEFINED;
                case 1:
                    return POLICYRULE_CONDITION_NUMERICAL_EQUAL;
                case 2:
                    return POLICYRULE_CONDITION_NUMERICAL_NOT_EQUAL;
                case 3:
                    return POLICYRULE_CONDITION_NUMERICAL_LESS_THAN;
                case 4:
                    return POLICYRULE_CONDITION_NUMERICAL_LESS_THAN_EQUAL;
                case 5:
                    return POLICYRULE_CONDITION_NUMERICAL_GREATER_THAN;
                case 6:
                    return POLICYRULE_CONDITION_NUMERICAL_GREATER_THAN_EQUAL;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<NumericalOperator> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<NumericalOperator> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<NumericalOperator>() {

            public NumericalOperator findValueByNumber(int number) {
                return NumericalOperator.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return policy.PolicyCondition.getDescriptor().getEnumTypes().get(0);
        }

        private static final NumericalOperator[] VALUES = values();

        public static NumericalOperator valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private NumericalOperator(int value) {
            this.value = value;
        }
    }

    /**
     * <pre>
     * Operator to be used when evaluating each condition
     * </pre>
     *
     * Protobuf enum {@code policy.BooleanOperator}
     */
    public enum BooleanOperator implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <pre>
         * Boolean operator undefined
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_BOOLEAN_UNDEFINED = 0;</code>
         */
        POLICYRULE_CONDITION_BOOLEAN_UNDEFINED(0),
        /**
         * <pre>
         * Boolean AND operator
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_BOOLEAN_AND = 1;</code>
         */
        POLICYRULE_CONDITION_BOOLEAN_AND(1),
        /**
         * <pre>
         * Boolean OR operator
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_BOOLEAN_OR = 2;</code>
         */
        POLICYRULE_CONDITION_BOOLEAN_OR(2),
        UNRECOGNIZED(-1);

        /**
         * <pre>
         * Boolean operator undefined
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_BOOLEAN_UNDEFINED = 0;</code>
         */
        public static final int POLICYRULE_CONDITION_BOOLEAN_UNDEFINED_VALUE = 0;

        /**
         * <pre>
         * Boolean AND operator
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_BOOLEAN_AND = 1;</code>
         */
        public static final int POLICYRULE_CONDITION_BOOLEAN_AND_VALUE = 1;

        /**
         * <pre>
         * Boolean OR operator
         * </pre>
         *
         * <code>POLICYRULE_CONDITION_BOOLEAN_OR = 2;</code>
         */
        public static final int POLICYRULE_CONDITION_BOOLEAN_OR_VALUE = 2;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static BooleanOperator valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static BooleanOperator forNumber(int value) {
            switch(value) {
                case 0:
                    return POLICYRULE_CONDITION_BOOLEAN_UNDEFINED;
                case 1:
                    return POLICYRULE_CONDITION_BOOLEAN_AND;
                case 2:
                    return POLICYRULE_CONDITION_BOOLEAN_OR;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<BooleanOperator> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<BooleanOperator> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<BooleanOperator>() {

            public BooleanOperator findValueByNumber(int number) {
                return BooleanOperator.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return policy.PolicyCondition.getDescriptor().getEnumTypes().get(1);
        }

        private static final BooleanOperator[] VALUES = values();

        public static BooleanOperator valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private BooleanOperator(int value) {
            this.value = value;
        }
    }

    public interface PolicyRuleConditionOrBuilder extends // @@protoc_insertion_point(interface_extends:policy.PolicyRuleCondition)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.monitoring.KpiId kpiId = 1;</code>
         * @return Whether the kpiId field is set.
         */
        boolean hasKpiId();

        /**
         * <code>.monitoring.KpiId kpiId = 1;</code>
         * @return The kpiId.
         */
        monitoring.Monitoring.KpiId getKpiId();

        /**
         * <code>.monitoring.KpiId kpiId = 1;</code>
         */
        monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();

        /**
         * <code>.policy.NumericalOperator numericalOperator = 2;</code>
         * @return The enum numeric value on the wire for numericalOperator.
         */
        int getNumericalOperatorValue();

        /**
         * <code>.policy.NumericalOperator numericalOperator = 2;</code>
         * @return The numericalOperator.
         */
        policy.PolicyCondition.NumericalOperator getNumericalOperator();

        /**
         * <code>.monitoring.KpiValue kpiValue = 3;</code>
         * @return Whether the kpiValue field is set.
         */
        boolean hasKpiValue();

        /**
         * <code>.monitoring.KpiValue kpiValue = 3;</code>
         * @return The kpiValue.
         */
        monitoring.Monitoring.KpiValue getKpiValue();

        /**
         * <code>.monitoring.KpiValue kpiValue = 3;</code>
         */
        monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder();
    }

    /**
     * <pre>
     * Condition
     * </pre>
     *
     * Protobuf type {@code policy.PolicyRuleCondition}
     */
    public static final class PolicyRuleCondition extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:policy.PolicyRuleCondition)
    PolicyRuleConditionOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use PolicyRuleCondition.newBuilder() to construct.
        private PolicyRuleCondition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private PolicyRuleCondition() {
            numericalOperator_ = 0;
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new PolicyRuleCondition();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return policy.PolicyCondition.internal_static_policy_PolicyRuleCondition_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return policy.PolicyCondition.internal_static_policy_PolicyRuleCondition_fieldAccessorTable.ensureFieldAccessorsInitialized(policy.PolicyCondition.PolicyRuleCondition.class, policy.PolicyCondition.PolicyRuleCondition.Builder.class);
        }

        public static final int KPIID_FIELD_NUMBER = 1;

        private monitoring.Monitoring.KpiId kpiId_;

        /**
         * <code>.monitoring.KpiId kpiId = 1;</code>
         * @return Whether the kpiId field is set.
         */
        @java.lang.Override
        public boolean hasKpiId() {
            return kpiId_ != null;
        }

        /**
         * <code>.monitoring.KpiId kpiId = 1;</code>
         * @return The kpiId.
         */
        @java.lang.Override
        public monitoring.Monitoring.KpiId getKpiId() {
            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
        }

        /**
         * <code>.monitoring.KpiId kpiId = 1;</code>
         */
        @java.lang.Override
        public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
        }

        public static final int NUMERICALOPERATOR_FIELD_NUMBER = 2;

        private int numericalOperator_ = 0;

        /**
         * <code>.policy.NumericalOperator numericalOperator = 2;</code>
         * @return The enum numeric value on the wire for numericalOperator.
         */
        @java.lang.Override
        public int getNumericalOperatorValue() {
            return numericalOperator_;
        }

        /**
         * <code>.policy.NumericalOperator numericalOperator = 2;</code>
         * @return The numericalOperator.
         */
        @java.lang.Override
        public policy.PolicyCondition.NumericalOperator getNumericalOperator() {
            policy.PolicyCondition.NumericalOperator result = policy.PolicyCondition.NumericalOperator.forNumber(numericalOperator_);
            return result == null ? policy.PolicyCondition.NumericalOperator.UNRECOGNIZED : result;
        }

        public static final int KPIVALUE_FIELD_NUMBER = 3;

        private monitoring.Monitoring.KpiValue kpiValue_;

        /**
         * <code>.monitoring.KpiValue kpiValue = 3;</code>
         * @return Whether the kpiValue field is set.
         */
        @java.lang.Override
        public boolean hasKpiValue() {
            return kpiValue_ != null;
        }

        /**
         * <code>.monitoring.KpiValue kpiValue = 3;</code>
         * @return The kpiValue.
         */
        @java.lang.Override
        public monitoring.Monitoring.KpiValue getKpiValue() {
            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
        }

        /**
         * <code>.monitoring.KpiValue kpiValue = 3;</code>
         */
        @java.lang.Override
        public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (kpiId_ != null) {
                output.writeMessage(1, getKpiId());
            }
            if (numericalOperator_ != policy.PolicyCondition.NumericalOperator.POLICYRULE_CONDITION_NUMERICAL_UNDEFINED.getNumber()) {
                output.writeEnum(2, numericalOperator_);
            }
            if (kpiValue_ != null) {
                output.writeMessage(3, getKpiValue());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (kpiId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
            }
            if (numericalOperator_ != policy.PolicyCondition.NumericalOperator.POLICYRULE_CONDITION_NUMERICAL_UNDEFINED.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, numericalOperator_);
            }
            if (kpiValue_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiValue());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof policy.PolicyCondition.PolicyRuleCondition)) {
                return super.equals(obj);
            }
            policy.PolicyCondition.PolicyRuleCondition other = (policy.PolicyCondition.PolicyRuleCondition) obj;
            if (hasKpiId() != other.hasKpiId())
                return false;
            if (hasKpiId()) {
                if (!getKpiId().equals(other.getKpiId()))
                    return false;
            }
            if (numericalOperator_ != other.numericalOperator_)
                return false;
            if (hasKpiValue() != other.hasKpiValue())
                return false;
            if (hasKpiValue()) {
                if (!getKpiValue().equals(other.getKpiValue()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasKpiId()) {
                hash = (37 * hash) + KPIID_FIELD_NUMBER;
                hash = (53 * hash) + getKpiId().hashCode();
            }
            hash = (37 * hash) + NUMERICALOPERATOR_FIELD_NUMBER;
            hash = (53 * hash) + numericalOperator_;
            if (hasKpiValue()) {
                hash = (37 * hash) + KPIVALUE_FIELD_NUMBER;
                hash = (53 * hash) + getKpiValue().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static policy.PolicyCondition.PolicyRuleCondition parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(policy.PolicyCondition.PolicyRuleCondition prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * Condition
         * </pre>
         *
         * Protobuf type {@code policy.PolicyRuleCondition}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:policy.PolicyRuleCondition)
        policy.PolicyCondition.PolicyRuleConditionOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return policy.PolicyCondition.internal_static_policy_PolicyRuleCondition_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return policy.PolicyCondition.internal_static_policy_PolicyRuleCondition_fieldAccessorTable.ensureFieldAccessorsInitialized(policy.PolicyCondition.PolicyRuleCondition.class, policy.PolicyCondition.PolicyRuleCondition.Builder.class);
            }

            // Construct using policy.PolicyCondition.PolicyRuleCondition.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                kpiId_ = null;
                if (kpiIdBuilder_ != null) {
                    kpiIdBuilder_.dispose();
                    kpiIdBuilder_ = null;
                }
                numericalOperator_ = 0;
                kpiValue_ = null;
                if (kpiValueBuilder_ != null) {
                    kpiValueBuilder_.dispose();
                    kpiValueBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return policy.PolicyCondition.internal_static_policy_PolicyRuleCondition_descriptor;
            }

            @java.lang.Override
            public policy.PolicyCondition.PolicyRuleCondition getDefaultInstanceForType() {
                return policy.PolicyCondition.PolicyRuleCondition.getDefaultInstance();
            }

            @java.lang.Override
            public policy.PolicyCondition.PolicyRuleCondition build() {
                policy.PolicyCondition.PolicyRuleCondition result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public policy.PolicyCondition.PolicyRuleCondition buildPartial() {
                policy.PolicyCondition.PolicyRuleCondition result = new policy.PolicyCondition.PolicyRuleCondition(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(policy.PolicyCondition.PolicyRuleCondition result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.numericalOperator_ = numericalOperator_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof policy.PolicyCondition.PolicyRuleCondition) {
                    return mergeFrom((policy.PolicyCondition.PolicyRuleCondition) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(policy.PolicyCondition.PolicyRuleCondition other) {
                if (other == policy.PolicyCondition.PolicyRuleCondition.getDefaultInstance())
                    return this;
                if (other.hasKpiId()) {
                    mergeKpiId(other.getKpiId());
                }
                if (other.numericalOperator_ != 0) {
                    setNumericalOperatorValue(other.getNumericalOperatorValue());
                }
                if (other.hasKpiValue()) {
                    mergeKpiValue(other.getKpiValue());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 16:
                                {
                                    numericalOperator_ = input.readEnum();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            case 26:
                                {
                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private monitoring.Monitoring.KpiId kpiId_;

            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;

            /**
             * <code>.monitoring.KpiId kpiId = 1;</code>
             * @return Whether the kpiId field is set.
             */
            public boolean hasKpiId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.monitoring.KpiId kpiId = 1;</code>
             * @return The kpiId.
             */
            public monitoring.Monitoring.KpiId getKpiId() {
                if (kpiIdBuilder_ == null) {
                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
                } else {
                    return kpiIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.monitoring.KpiId kpiId = 1;</code>
             */
            public Builder setKpiId(monitoring.Monitoring.KpiId value) {
                if (kpiIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    kpiId_ = value;
                } else {
                    kpiIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.monitoring.KpiId kpiId = 1;</code>
             */
            public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                if (kpiIdBuilder_ == null) {
                    kpiId_ = builderForValue.build();
                } else {
                    kpiIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.monitoring.KpiId kpiId = 1;</code>
             */
            public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                if (kpiIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
                        getKpiIdBuilder().mergeFrom(value);
                    } else {
                        kpiId_ = value;
                    }
                } else {
                    kpiIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.monitoring.KpiId kpiId = 1;</code>
             */
            public Builder clearKpiId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                kpiId_ = null;
                if (kpiIdBuilder_ != null) {
                    kpiIdBuilder_.dispose();
                    kpiIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.monitoring.KpiId kpiId = 1;</code>
             */
            public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getKpiIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.monitoring.KpiId kpiId = 1;</code>
             */
            public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
                if (kpiIdBuilder_ != null) {
                    return kpiIdBuilder_.getMessageOrBuilder();
                } else {
                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
                }
            }

            /**
             * <code>.monitoring.KpiId kpiId = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdFieldBuilder() {
                if (kpiIdBuilder_ == null) {
                    kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(getKpiId(), getParentForChildren(), isClean());
                    kpiId_ = null;
                }
                return kpiIdBuilder_;
            }

            private int numericalOperator_ = 0;

            /**
             * <code>.policy.NumericalOperator numericalOperator = 2;</code>
             * @return The enum numeric value on the wire for numericalOperator.
             */
            @java.lang.Override
            public int getNumericalOperatorValue() {
                return numericalOperator_;
            }

            /**
             * <code>.policy.NumericalOperator numericalOperator = 2;</code>
             * @param value The enum numeric value on the wire for numericalOperator to set.
             * @return This builder for chaining.
             */
            public Builder setNumericalOperatorValue(int value) {
                numericalOperator_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.policy.NumericalOperator numericalOperator = 2;</code>
             * @return The numericalOperator.
             */
            @java.lang.Override
            public policy.PolicyCondition.NumericalOperator getNumericalOperator() {
                policy.PolicyCondition.NumericalOperator result = policy.PolicyCondition.NumericalOperator.forNumber(numericalOperator_);
                return result == null ? policy.PolicyCondition.NumericalOperator.UNRECOGNIZED : result;
            }

            /**
             * <code>.policy.NumericalOperator numericalOperator = 2;</code>
             * @param value The numericalOperator to set.
             * @return This builder for chaining.
             */
            public Builder setNumericalOperator(policy.PolicyCondition.NumericalOperator value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000002;
                numericalOperator_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.policy.NumericalOperator numericalOperator = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearNumericalOperator() {
                bitField0_ = (bitField0_ & ~0x00000002);
                numericalOperator_ = 0;
                onChanged();
                return this;
            }

            private monitoring.Monitoring.KpiValue kpiValue_;

            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiValueBuilder_;

            /**
             * <code>.monitoring.KpiValue kpiValue = 3;</code>
             * @return Whether the kpiValue field is set.
             */
            public boolean hasKpiValue() {
                return ((bitField0_ & 0x00000004) != 0);
            }

            /**
             * <code>.monitoring.KpiValue kpiValue = 3;</code>
             * @return The kpiValue.
             */
            public monitoring.Monitoring.KpiValue getKpiValue() {
                if (kpiValueBuilder_ == null) {
                    return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
                } else {
                    return kpiValueBuilder_.getMessage();
                }
            }

            /**
             * <code>.monitoring.KpiValue kpiValue = 3;</code>
             */
            public Builder setKpiValue(monitoring.Monitoring.KpiValue value) {
                if (kpiValueBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    kpiValue_ = value;
                } else {
                    kpiValueBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.monitoring.KpiValue kpiValue = 3;</code>
             */
            public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                if (kpiValueBuilder_ == null) {
                    kpiValue_ = builderForValue.build();
                } else {
                    kpiValueBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.monitoring.KpiValue kpiValue = 3;</code>
             */
            public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
                if (kpiValueBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
                        getKpiValueBuilder().mergeFrom(value);
                    } else {
                        kpiValue_ = value;
                    }
                } else {
                    kpiValueBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.monitoring.KpiValue kpiValue = 3;</code>
             */
            public Builder clearKpiValue() {
                bitField0_ = (bitField0_ & ~0x00000004);
                kpiValue_ = null;
                if (kpiValueBuilder_ != null) {
                    kpiValueBuilder_.dispose();
                    kpiValueBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.monitoring.KpiValue kpiValue = 3;</code>
             */
            public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
                bitField0_ |= 0x00000004;
                onChanged();
                return getKpiValueFieldBuilder().getBuilder();
            }

            /**
             * <code>.monitoring.KpiValue kpiValue = 3;</code>
             */
            public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
                if (kpiValueBuilder_ != null) {
                    return kpiValueBuilder_.getMessageOrBuilder();
                } else {
                    return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
                }
            }

            /**
             * <code>.monitoring.KpiValue kpiValue = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> getKpiValueFieldBuilder() {
                if (kpiValueBuilder_ == null) {
                    kpiValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(getKpiValue(), getParentForChildren(), isClean());
                    kpiValue_ = null;
                }
                return kpiValueBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:policy.PolicyRuleCondition)
        }

        // @@protoc_insertion_point(class_scope:policy.PolicyRuleCondition)
        private static final policy.PolicyCondition.PolicyRuleCondition DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new policy.PolicyCondition.PolicyRuleCondition();
        }

        public static policy.PolicyCondition.PolicyRuleCondition getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<PolicyRuleCondition> PARSER = new com.google.protobuf.AbstractParser<PolicyRuleCondition>() {

            @java.lang.Override
            public PolicyRuleCondition parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<PolicyRuleCondition> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<PolicyRuleCondition> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public policy.PolicyCondition.PolicyRuleCondition getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_policy_PolicyRuleCondition_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_policy_PolicyRuleCondition_fieldAccessorTable;

    public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
        return descriptor;
    }

    private static com.google.protobuf.Descriptors.FileDescriptor descriptor;

    static {
        java.lang.String[] descriptorData = { "\n\026policy_condition.proto\022\006policy\032\020monito" + "ring.proto\"\225\001\n\023PolicyRuleCondition\022 \n\005kp" + "iId\030\001 \001(\0132\021.monitoring.KpiId\0224\n\021numerica" + "lOperator\030\002 \001(\0162\031.policy.NumericalOperat" + "or\022&\n\010kpiValue\030\003 \001(\0132\024.monitoring.KpiVal" + "ue*\343\002\n\021NumericalOperator\022,\n(POLICYRULE_C" + "ONDITION_NUMERICAL_UNDEFINED\020\000\022(\n$POLICY" + "RULE_CONDITION_NUMERICAL_EQUAL\020\001\022,\n(POLI" + "CYRULE_CONDITION_NUMERICAL_NOT_EQUAL\020\002\022," + "\n(POLICYRULE_CONDITION_NUMERICAL_LESS_TH" + "AN\020\003\0222\n.POLICYRULE_CONDITION_NUMERICAL_L" + "ESS_THAN_EQUAL\020\004\022/\n+POLICYRULE_CONDITION" + "_NUMERICAL_GREATER_THAN\020\005\0225\n1POLICYRULE_" + "CONDITION_NUMERICAL_GREATER_THAN_EQUAL\020\006" + "*\210\001\n\017BooleanOperator\022*\n&POLICYRULE_CONDI" + "TION_BOOLEAN_UNDEFINED\020\000\022$\n POLICYRULE_C" + "ONDITION_BOOLEAN_AND\020\001\022#\n\037POLICYRULE_CON" + "DITION_BOOLEAN_OR\020\002b\006proto3" };
        descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { monitoring.Monitoring.getDescriptor() });
        internal_static_policy_PolicyRuleCondition_descriptor = getDescriptor().getMessageTypes().get(0);
        internal_static_policy_PolicyRuleCondition_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_policy_PolicyRuleCondition_descriptor, new java.lang.String[] { "KpiId", "NumericalOperator", "KpiValue" });
        monitoring.Monitoring.getDescriptor();
    }
    // @@protoc_insertion_point(outer_class_scope)
}
