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

com.moon.core.util.PropertiesSupplier Maven / Gradle / Ivy

package com.moon.core.util;

import com.moon.core.enums.Const;
import com.moon.core.lang.LongUtil;

import java.util.function.Function;

import static com.moon.core.lang.IntUtil.defaultIfInvalid;
import static com.moon.core.lang.StringUtil.defaultIfWebNull;
import static com.moon.core.lang.StringUtil.trimToNull;

/**
 * @author moonsky
 */
public interface PropertiesSupplier {

    /**
     * override for {@link java.util.Map#get(Object)}
     *
     * @param key
     *
     * @return
     */
    V get(Object key);

    /**
     * get a string value
     *
     * @param key
     *
     * @return
     */
    default String getString(String key) {
        V value = get(key);
        return value == null ? null : value.toString();
    }

    /**
     * Get a string value or an empty string
     *
     * @param key
     *
     * @return
     */
    default String getOrEmpty(String key) { return defaultIfWebNull(getString(key), Const.EMPTY); }

    /**
     * 返回一个字符串或 null
     *
     * @param key
     *
     * @return
     */
    default String getOrNull(String key) { return trimToNull(getString(key)); }

    /**
     * 返回 int 数据
     *
     * @param key
     *
     * @return
     */
    default int getInt(String key) { return Integer.parseInt(getString(key)); }

    /**
     * 返回 int 数据,转换失败返回 0
     *
     * @param key
     *
     * @return
     */
    default int getOrZero(String key) { return getOrDefaultAsInt(key, 0); }

    /**
     * 返回 int 数据,转换失败返回 1
     *
     * @param key
     *
     * @return
     */
    default int getOrOne(String key) { return getOrDefaultAsInt(key, 1); }

    /**
     * 返回 int 数据,转换失败返回 defaultVal
     *
     * @param key
     * @param defaultValue
     *
     * @return
     */
    default int getOrDefaultAsInt(String key, int defaultValue) {
        return defaultIfInvalid(getString(key), defaultValue);
    }

    /**
     * 返回 long 数据
     *
     * @param key
     *
     * @return
     */
    default long getLong(String key) { return Long.parseLong(getString(key)); }

    /**
     * 返回 long 数据,转换失败返回 defaultVal
     *
     * @param key
     * @param defaultValue
     *
     * @return
     */
    default long getOrDefaultAsLong(String key, long defaultValue) {
        return LongUtil.defaultIfInvalid(getString(key), defaultValue);
    }

    /**
     * 返回 boolean 数据
     *
     * @param key
     *
     * @return
     */
    default boolean getBoolean(String key) { return Boolean.valueOf(getString(key)); }

    /**
     * 返回 int 数据,转换失败返回 true
     *
     * @param key
     *
     * @return
     */
    default boolean getOrTrue(String key) { return getOrDefaultAsBoolean(key, true); }

    /**
     * 返回 int 数据,转换失败返回 false
     *
     * @param key
     *
     * @return
     */
    default boolean getOrFalse(String key) { return getBoolean(key); }

    /**
     * 返回 int 数据,转换失败返回 defaultVal
     *
     * @param key
     * @param defaultVal
     *
     * @return
     */
    default boolean getOrDefaultAsBoolean(String key, boolean defaultVal) {
        String value = getString(key), trueVal = "true", falseVal = "false";
        if (trueVal.equalsIgnoreCase(value)) {
            return true;
        }
        if (falseVal.equalsIgnoreCase(value)) {
            return false;
        }
        return defaultVal;
    }

    /**
     * 自定义返回值转换成指定类型数据
     *
     * @param key
     * @param transformer
     * @param 
     *
     * @return
     */
    default  T getAndTransform(String key, Function transformer) {
        return transformer.apply(getString(key));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy