Sha256: ac084364185ce0046863b09fe18632ea4ca9c3009ec751324c2b2f528edb2bb5

Contents?: true

Size: 1.98 KB

Versions: 1

Compression:

Stored size: 1.98 KB

Contents

package org.embulk.filter.row;

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

1 entries across 1 versions & 1 rubygems

Version Path
embulk-filter-row-0.2.1 src/main/java/org/embulk/filter/row/BooleanCondition.java