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

com.moon.core.enums.PropsSupplier Maven / Gradle / Ivy

package com.moon.core.enums;

import com.moon.core.lang.StringUtil;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;

/**
 * @author moonsky
 */
interface PropsSupplier extends EnumDescriptor, Supplier {
    /**
     * Gets a key
     *
     * @return
     */
    String key();

    /**
     * Gets a value
     *
     * @return
     */
    String value();

    /**
     * Gets a value
     *
     * @return
     */
    @Override
    default String get() { return value(); }

    /**
     * Gets a value, if value is an empty string,
     * will return a default value
     *
     * @param defaultValue
     * @return
     */
    default String getOrDefault(String defaultValue) { return StringUtil.defaultIfEmpty(get(), defaultValue); }

    /**
     * Gets a value, if value is an empty string,
     * will return a null value
     *
     * @return
     */
    default String getOrNull() { return getOrDefault(null); }

    /**
     * 如果某个参数配置了值,就执行函数
     *
     * @param consumer
     */
    default void ifConfigured(Consumer consumer) {
        String val = getOrNull();
        if (val != null) {
            consumer.accept(val);
        }
    }

    /**
     * 如果某个参数配置了值,就执行函数,并返回;
     * 否则返回默认值
     *
     * @param fn
     * @param defaultVal
     * @param 
     * @return
     */
    default  T ifConfiguredOrDefault(Function fn, T defaultVal) {
        String val = getOrNull();
        return val == null ? defaultVal : fn.apply(val);
    }

    /**
     * 如果某个参数配置了值,就执行函数,并返回;
     * 否则返回默认提供的数据
     *
     * @param fn
     * @param supplier
     * @param 
     * @return
     */
    default  T ifConfiguredOrElse(Function fn, Supplier supplier) {
        String val = getOrNull();
        return val == null ? supplier.get() : fn.apply(val);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy