Sha256: edd5881f3623dfd40edc056e04691843400d1698a074cd7fe3e46c23e87347ed

Contents?: true

Size: 1.99 KB

Versions: 8

Compression:

Stored size: 1.99 KB

Contents

package org.embulk.filter.row.condition;

public class BooleanCondition implements Condition
{
    private BooleanComparator comparator;

    // @FunctionalInterface
    interface BooleanComparator
    {
        boolean compare(Boolean subject);
    }

    public BooleanCondition(final String operator, final Boolean argument, final boolean not)
    {
        final BooleanComparator comparator;
        switch (operator.toUpperCase()) {
            case "IS NULL":
                comparator = new BooleanComparator() {
                    public boolean compare(Boolean subject)
                    {
                        return subject == null;
                    }
                };
                break;
            case "IS NOT NULL":
                comparator = new BooleanComparator() {
                    public boolean compare(Boolean subject)
                    {
                        return subject != null;
                    }
                };
                break;
            case "!=":
                comparator = new BooleanComparator() {
                    public boolean compare(Boolean subject)
                    {
                        return subject == null ? true : !subject.equals(argument);
                    }
                };
                break;
            default: // case "==":
                comparator = new BooleanComparator() {
                    public boolean compare(Boolean subject)
                    {
                        return subject == null ? false : subject.equals(argument);
                    }
                };
                break;
        }
        this.comparator = comparator;
        if (not) {
            this.comparator = new BooleanComparator() {
                public boolean compare(Boolean subject)
                {
                    return !comparator.compare(subject);
                }
            };
        }
    }

    public boolean compare(Boolean subject)
    {
        return this.comparator.compare(subject);
    }
}

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
embulk-filter-row-0.5.1 src/main/java/org/embulk/filter/row/condition/BooleanCondition.java
embulk-filter-row-0.5.0 src/main/java/org/embulk/filter/row/condition/BooleanCondition.java
embulk-filter-row-0.4.0 src/main/java/org/embulk/filter/row/condition/BooleanCondition.java
embulk-filter-row-0.3.3 src/main/java/org/embulk/filter/row/condition/BooleanCondition.java
embulk-filter-row-0.3.2 src/main/java/org/embulk/filter/row/condition/BooleanCondition.java
embulk-filter-row-0.3.1 src/main/java/org/embulk/filter/row/condition/BooleanCondition.java
embulk-filter-row-0.3.0 src/main/java/org/embulk/filter/row/condition/BooleanCondition.java
embulk-filter-row-0.2.2 src/main/java/org/embulk/filter/row/condition/BooleanCondition.java