package com.test.bijihoudaun.util;

import cn.hutool.core.bean.BeanUtil;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 实体复制工具类
 */
public class EntityCopier {

    /**
     * 复制实体属性到另一个实体
     * @param source 源实体
     * @param target 目标实体
     * @param <S> 源类型
     * @param <T> 目标类型
     */
    public static <S, T> void copyEntityToEntity(S source, T target) {
        BeanUtil.copyProperties(source, target);
    }

    /**
     * 复制实体属性到目标类的新实例
     * @param source 源实体
     * @param targetClass 目标类
     * @param <S> 源类型
     * @param <T> 目标类型
     * @return 目标类的新实例
     */
    public static <S, T> T copyEntityToClass(S source, Class<T> targetClass) {
        return BeanUtil.copyProperties(source, targetClass);
    }

    /**
     * 复制实体列表到目标类列表
     * @param sourceList 源列表
     * @param targetClass 目标类
     * @param <S> 源类型
     * @param <T> 目标类型
     * @return 目标类的新列表
     */
    public static <S, T> List<T> copyList(List<S> sourceList, Class<T> targetClass) {
        return sourceList.stream()
                .map(source -> copyEntityToClass(source, targetClass))
                .collect(Collectors.toList());
    }
}
