All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.feingto.cloud.dto.monitor.Rule Maven / Gradle / Ivy

There is a newer version: 2.3.5.RELEASE
Show newest version
package com.feingto.cloud.dto.monitor;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 规则
 *
 * @author longfei
 */
@Data
@Accessors(chain = true)
public class Rule implements Serializable {
    private static final long serialVersionUID = 4761866288675060103L;

    /**
     * 属性名
     */
    private String property;

    /**
     * 属性名标签
     */
    private String propertyLabel;

    /**
     * 要素(值/大小/长度/平均值/最大值/最小值等等)
     */
    private GetValue element;

    /**
     * 要素标签
     */
    private String elementLabel;

    /**
     * 操作符
     */
    private Operator op;

    /**
     * 操作符标签
     */
    private String opLabel;

    /**
     * 阈值
     */
    private String threshold;

    /**
     * 备注
     */
    private String remark;

    /**
     * 过滤规则组
     */
    private List groups = new ArrayList<>();

    /**
     * 属性取值
     */
    public enum GetValue {
        VALUE,
        LENGTH,
        SIZE,
        SUM,
        AVG,
        MAX,
        MIN;

        @JsonValue
        public String getName() {
            return name();
        }

        @JsonCreator
        public static GetValue setName(String op) {
            for (GetValue item : values()) {
                if (item.name().equalsIgnoreCase(op)) {
                    return item;
                }
            }
            return null;
        }
    }

    /**
     * 运算符
     */
    public enum Operator {
        /**
         * 等于
         */
        EQ,
        /**
         * 不等于
         */
        NEQ,
        /**
         * 以此开始
         */
        SLIKE,
        /**
         * 以此结束
         */
        ELIKE,
        /**
         * 包含
         */
        LIKE,
        /**
         * 大于
         */
        GT,
        /**
         * 小于
         */
        LT,
        /**
         * 大于或等于
         */
        GTE,
        /**
         * 小于或等于
         */
        LTE,
        /**
         * 包括
         */
        IN,
        /**
         * 不包括
         */
        NIN,
        /**
         * 空
         */
        ISEMPTY,
        /**
         * 非空
         */
        ISNOTEMPTY,
        /**
         * true
         */
        ISTRUE,
        /**
         * false
         */
        ISFALSE;

        @JsonValue
        public String getName() {
            return name();
        }

        @JsonCreator
        public static Operator setName(String op) {
            for (Operator item : values()) {
                if (item.name().equalsIgnoreCase(op)) {
                    return item;
                }
            }
            return null;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy