// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.codec.validation.validator;

import com.hypixel.hytale.codec.schema.config.Schema;
import com.hypixel.hytale.codec.schema.SchemaContext;
import com.hypixel.hytale.codec.validation.ValidationResults;
import javax.annotation.Nonnull;
import com.hypixel.hytale.codec.validation.Validator;

public class SequentialDoubleArrayValidator implements Validator<double[]>
{
    public static final SequentialDoubleArrayValidator NEQ_INSTANCE;
    public static final SequentialDoubleArrayValidator ALLOW_EQ_INSTANCE;
    private final boolean allowEquals;
    
    public SequentialDoubleArrayValidator(final boolean allowEquals) {
        this.allowEquals = allowEquals;
    }
    
    @Override
    public void accept(@Nonnull final double[] doubles, @Nonnull final ValidationResults results) {
        if (doubles.length <= 1) {
            return;
        }
        double last = doubles[0];
        for (int i = 1; i < doubles.length; ++i) {
            final double val = doubles[i];
            if ((!this.allowEquals && last >= val) || (this.allowEquals && last > val)) {
                results.fail(String.format("Values must be sequential. %f at index %d is larger than %s %f at index %d", last, i - 1, this.allowEquals ? "" : "or equal to", val, i));
            }
            last = val;
        }
    }
    
    @Override
    public void updateSchema(final SchemaContext context, final Schema target) {
    }
    
    static {
        NEQ_INSTANCE = new SequentialDoubleArrayValidator(false);
        ALLOW_EQ_INSTANCE = new SequentialDoubleArrayValidator(true);
    }
}
