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

net.intelie.pipes.ValidationContext Maven / Gradle / Ivy

There is a newer version: 0.25.5
Show newest version
package net.intelie.pipes;

import java.util.Arrays;

public class ValidationContext {
    private final boolean hasWindow;

    public ValidationContext(boolean hasWindow) {
        this.hasWindow = hasWindow;
    }

    public ValidationContext maybeDefer(Object obj) throws PipeException {
        if (obj instanceof Expression)
            return defer((Expression) obj);
        return this;
    }

    public ValidationContext defer(Expression... expressions) throws PipeException {
        return defer(Arrays.asList(expressions));
    }

    public ValidationContext defer(Iterable iterable) throws PipeException {
        for (Expression expression : iterable)
            if (expression != null)
                expression.validate(this);
        return this;
    }

    public Instance validateAs(Expression instance) {
        return new Instance(instance);
    }

    public class Instance {
        private final Expression instance;

        public Instance(Expression instance) {
            this.instance = instance;
        }

        public Instance ensureNoWindow() throws PipeException {
            if (hasWindow)
                throw new PipeException("Expression '%s' can't be used inside a windowed aggregation.", instance);
            return this;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy