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

package com.hypixel.hytale.server.npc.asset.builder.validators;

import javax.annotation.Nonnull;
import com.hypixel.hytale.codec.schema.config.StringSchema;
import java.util.EnumSet;

public abstract class AssetValidator
{
    public static final EnumSet<Config> CanBeEmpty;
    public static final EnumSet<Config> ListCanBeEmpty;
    private final EnumSet<Config> config;
    
    public AssetValidator(final EnumSet<Config> config) {
        this.config = config;
    }
    
    public AssetValidator() {
        this(EnumSet.noneOf(Config.class));
    }
    
    public boolean isNullable() {
        return this.config.contains(Config.NULLABLE);
    }
    
    public boolean canBeEmpty() {
        return this.config.contains(Config.CAN_BE_EMPTY);
    }
    
    public boolean isListNullable() {
        return this.config.contains(Config.LIST_NULLABLE);
    }
    
    public boolean canListBeEmpty() {
        return this.config.contains(Config.LIST_CAN_BE_EMPTY);
    }
    
    public boolean isMatcher() {
        return this.config.contains(Config.MATCHER);
    }
    
    public abstract String getDomain();
    
    public abstract boolean test(final String p0);
    
    public abstract String errorMessage(final String p0, final String p1);
    
    public abstract String getAssetName();
    
    public void updateSchema(@Nonnull final StringSchema schema) {
        if (!this.isMatcher()) {
            schema.setHytaleAssetRef(this.getAssetName());
        }
    }
    
    static {
        CanBeEmpty = EnumSet.of(Config.NULLABLE, Config.CAN_BE_EMPTY);
        ListCanBeEmpty = EnumSet.of(Config.LIST_NULLABLE, Config.LIST_CAN_BE_EMPTY);
    }
    
    public enum Config
    {
        NULLABLE, 
        CAN_BE_EMPTY, 
        LIST_NULLABLE, 
        LIST_CAN_BE_EMPTY, 
        MATCHER;
    }
}
