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

io.logz.sawmill.conditions.InCondition Maven / Gradle / Ivy

The newest version!
package io.logz.sawmill.conditions;

import io.logz.sawmill.Condition;
import io.logz.sawmill.Doc;
import io.logz.sawmill.annotations.ConditionProvider;
import io.logz.sawmill.parser.ConditionParser;
import io.logz.sawmill.utilities.JsonUtils;

import java.util.List;
import java.util.Map;

import static java.util.Objects.requireNonNull;

@ConditionProvider(type = "in", factory = InCondition.Factory.class)
public class InCondition implements Condition {

    private String path;
    private String value;

    public InCondition(String path, String value) {
        this.path = requireNonNull(path);
        this.value = requireNonNull(value);
    }

    @Override
    public boolean evaluate(Doc doc) {
        if (!doc.hasField(path)) {
            return false;
        }

        Object pathValue = doc.getField(path);
        if (!(pathValue instanceof List)) {
            return false;
        }

        List valuesList = (List) pathValue;
        return valuesList.stream().anyMatch(value::equals);
    }

    public static class Factory implements Condition.Factory {
        public Factory() {
        }

        @Override
        public Condition create(Map config, ConditionParser conditionParser) {
            Configuration configuration = JsonUtils.fromJsonMap(Configuration.class, config);
            return new InCondition(configuration.getPath(), configuration.getValue());
        }
    }

    public static class Configuration {
        private String path;
        private String value;

        public Configuration() {

        }


        public String getPath() {
            return path;
        }

        public String getValue() {
            return value;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy