DTOConvertFactory.java 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package nju.seec.helper.logic.convert;
  2. import com.google.common.collect.ImmutableMap;
  3. import lombok.experimental.UtilityClass;
  4. import nju.seec.helper.data.entity.Item;
  5. import nju.seec.helper.data.entity.Slide;
  6. import nju.seec.helper.web.dto.SlideDTO;
  7. import org.springframework.beans.BeanUtils;
  8. import java.util.Map;
  9. import java.util.stream.Collectors;
  10. /**
  11. * @author cst
  12. */
  13. @UtilityClass
  14. public class DTOConvertFactory {
  15. @SuppressWarnings("rawtypes")
  16. private static final Map<Class, DTOConverter> MAP = new ImmutableMap.Builder<Class, DTOConverter>()
  17. .put(SlideDTO.class, (DTOConverter<SlideDTO, Slide>) slideDTO -> {
  18. Slide slide = new Slide();
  19. BeanUtils.copyProperties(slideDTO, slide, "items");
  20. slide.setItems(slideDTO.getItems().stream()
  21. .map(itemDTO -> {
  22. Item item = new Item();
  23. BeanUtils.copyProperties(itemDTO, item);
  24. return item;
  25. }).collect(Collectors.toList()));
  26. return slide;
  27. })
  28. .build();
  29. @SuppressWarnings("unchecked")
  30. public <DTO, Entity> Entity convert(DTO dto) {
  31. return (Entity) MAP.get(dto.getClass())
  32. .convert(dto);
  33. }
  34. }