package nju.seec.helper.logic.convert; import com.google.common.collect.ImmutableMap; import lombok.experimental.UtilityClass; import nju.seec.helper.data.entity.Item; import nju.seec.helper.data.entity.Slide; import nju.seec.helper.web.dto.SlideDTO; import org.springframework.beans.BeanUtils; import java.util.Map; import java.util.stream.Collectors; /** * @author cst */ @UtilityClass public class DTOConvertFactory { @SuppressWarnings("rawtypes") private static final Map MAP = new ImmutableMap.Builder() .put(SlideDTO.class, (DTOConverter) slideDTO -> { Slide slide = new Slide(); BeanUtils.copyProperties(slideDTO, slide, "items"); slide.setItems(slideDTO.getItems().stream() .map(itemDTO -> { Item item = new Item(); BeanUtils.copyProperties(itemDTO, item); return item; }).collect(Collectors.toList())); return slide; }) .build(); @SuppressWarnings("unchecked") public Entity convert(DTO dto) { return (Entity) MAP.get(dto.getClass()) .convert(dto); } }