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

org.unipop.process.predicate.Date Maven / Gradle / Ivy

package org.unipop.process.predicate;

import org.apache.tinkerpop.gremlin.process.traversal.P;
import org.apache.tinkerpop.gremlin.process.traversal.util.AndP;
import org.apache.tinkerpop.gremlin.process.traversal.util.OrP;

import java.util.Arrays;
import java.util.function.BiPredicate;

/**
 * Created by sbarzilay on 8/18/16.
 */
public class Date {
    public static  P eq(final V value) { return new P(DatePredicate.eq, value); }
    public static  P neq(final V value) { return new P(DatePredicate.neq, value); }
    public static  P lt(final V value) { return new P(DatePredicate.lt, value); }
    public static  P gt(final V value) { return new P(DatePredicate.gt, value); }
    public static  P gte(final V value) { return new P(DatePredicate.gte, value); }
    public static  P lte(final V value) { return new P(DatePredicate.lte, value); }
    public static  P inside(final V first, final V second) {
        return new AndP<>(Arrays.asList(new P(DatePredicate.gt, first), new P(DatePredicate.lt, second)));
    }
    public static  P outside(final V first, final V second) {
        return new OrP<>(Arrays.asList(new P(DatePredicate.lt, first), new P(DatePredicate.gt, second)));
    }
    public static  P between(final V first, final V second) {
        return new AndP<>(Arrays.asList(new P(DatePredicate.gte, first), new P(DatePredicate.lt, second)));
    }

    public enum DatePredicate implements BiPredicate {
        eq {
            @Override
            public boolean test(Object o, Object o2) {
                return ((java.util.Date)o).compareTo((java.util.Date) o2) == 0;
            }

            @Override
            public BiPredicate negate() {
                return neq;
            }
        },
        neq {
            @Override
            public boolean test(Object o, Object o2) {
                return !negate().test(o, o2);
            }

            @Override
            public BiPredicate negate() {
                return eq;
            }
        },
        gt {
            @Override
            public boolean test(Object o, Object o2) {
                return ((java.util.Date)o).compareTo((java.util.Date) o2) > 0;
            }

            @Override
            public BiPredicate negate() {
                return lte;
            }
        },
        lt {
            @Override
            public boolean test(Object o, Object o2) {
                return ((java.util.Date)o).compareTo((java.util.Date) o2) < 0;
            }

            @Override
            public BiPredicate negate() {
                return gte;
            }
        },
        gte {
            @Override
            public boolean test(Object o, Object o2) {
                return gt.or(eq).test(o, o2);
            }

            @Override
            public BiPredicate negate() {
                return lt;
            }
        },
        lte {
            @Override
            public boolean test(Object o, Object o2) {
                return lt.or(eq).test(o, o2);
            }

            @Override
            public BiPredicate negate() {
                return gt;
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy