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

com.moon.core.model.BaseSupporter Maven / Gradle / Ivy

package com.moon.core.model;

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

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

    /**
     * null or toString
     *
     * @param data
     *
     * @return
     */
    default String stringify(Object data) { return data == null ? null : data.toString(); }

    /**
     * 转换,确保不会返回空对象
     *
     * @param set       源集合
     * @param mapper    转换器
     * @param container 转换后的容器
     * @param        源类型
     * @param        目标类型
     * @param        集合容器类型
     *
     * @return
     */
    default > C mapOrEmpty(
        Collection set, Function mapper, Supplier container
    ) {
        C resultSet = container.get();
        for (T item : set) { resultSet.add(mapper.apply(item)); }
        return resultSet;
    }

    /**
     * 转换成 HashSet
     *
     * @param set    源集合
     * @param mapper 转换器
     * @param     源类型
     * @param     目标类型
     *
     * @return 转换后的 HashSet
     */
    default  HashSet mapAsSetOrEmpty(
        Collection set, Function mapper
    ) { return mapOrEmpty(set, mapper, HashSet::new); }

    /**
     * 转换
     *
     * @param set
     * @param mapper
     * @param 
     * @param 
     *
     * @return
     */
    default  ArrayList mapAsListOrEmpty(
        Collection set, Function mapper
    ) { return mapOrEmpty(set, mapper, ArrayList::new); }

    /**
     * 默认
     *
     * @param value
     * @param defaultValue
     * @param 
     *
     * @return
     */
    default  T defaultIfNull(T value, T defaultValue) { return value == null ? defaultValue : value; }

    /**
     * 默认
     *
     * @param value
     * @param supplier
     * @param 
     *
     * @return
     */
    default  T elseIfNull(T value, Supplier supplier) { return value == null ? supplier.get() : value; }

    /**
     * property value or null
     *
     * @param e
     * @param presentGetter
     * @param 
     * @param 
     *
     * @return
     */
    default  V obtainIfNonNull(E e, Function presentGetter) {
        return e == null ? null : presentGetter.apply(e);
    }

    /**
     * 设置 hash set
     *
     * @param set
     * @param setter
     * @param 
     *
     * @return
     */
    default  Set ensureHashSet(Set set, Consumer setter) {
        return ensureSet(set, setter, HashSet::new);
    }

    /**
     * 设置 array list
     *
     * @param list
     * @param setter
     * @param 
     *
     * @return
     */
    default  List ensureArrayList(List list, Consumer setter) {
        return ensureList(list, setter, ArrayList::new);
    }

    /**
     * 设置 set
     *
     * @param set
     * @param setter
     * @param setSupplier
     * @param 
     *
     * @return
     */
    default > S ensureSet(
        S set, Consumer setter, Supplier setSupplier
    ) { return ensureNonNull(set, setter, setSupplier); }

    /**
     * 设置 list
     *
     * @param list
     * @param setter
     * @param listSupplier
     * @param 
     *
     * @return
     */
    default > L ensureList(
        L list, Consumer setter, Supplier listSupplier
    ) { return ensureNonNull(list, setter, listSupplier); }

    /**
     * 设置 object
     *
     * @param t
     * @param setter
     * @param elseIfAbsent
     * @param 
     *
     * @return
     */
    default  T ensureNonNull(
        T t, Consumer setter, Supplier elseIfAbsent
    ) {
        if (t == null) { setter.accept(t = elseIfAbsent.get()); }
        return t;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy