Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.73 KB | None | 0 0
  1. package eu.hexgate.sexyrankbackend.domain.users;
  2.  
  3. import eu.hexgate.sexyrankbackend.domain.shared.AppError;
  4. import eu.hexgate.sexyrankbackend.domain.users.api.EmptyRequireData;
  5. import eu.hexgate.sexyrankbackend.domain.users.api.UserDto;
  6. import io.vavr.collection.List;
  7. import io.vavr.control.Either;
  8.  
  9. class UsersFactory {
  10.  
  11.     Either<AppError, User> create(UserDto dto) {
  12.         return getValidUserOrReturnError(dto)
  13.                 .map(this::toDto);
  14.     }
  15.  
  16.     private Either<AppError, UserDto> getValidUserOrReturnError(UserDto userDto) {
  17.  
  18.         List<String> errors = List.empty();
  19.  
  20.         if (userDto.getEmail() == null)
  21.             errors = errors.append("email");
  22.  
  23.         if (userDto.getUsername() == null)
  24.             errors = errors.append("username");
  25.  
  26.         if (userDto.getGender() == null)
  27.             errors = errors.append("gender");
  28.  
  29.         return errors.isEmpty() ?
  30.                 Either.right(userDto) :
  31.                 Either.left(new EmptyRequireData(String.join(", ", errors.toJavaList())));
  32.  
  33.  
  34.     }
  35.  
  36.     private User toDto(UserDto dto) {
  37.         return User.builder()
  38.                 .birthday(new Birthday(dto.getBirthday()))
  39.                 .email(new Email(dto.getEmail()))
  40.                 .username(new Username(dto.getUsername()))
  41.                 .photos(createPhotos(dto.getPhotos()))
  42.                 .gender(Gender.from(dto.getGender()))
  43.                 .rank(Rank.ofStartValue())
  44.                 .points(Points.zero())
  45.                 .build();
  46.     }
  47.  
  48.     private Photos createPhotos(java.util.List<String> photosStr) {
  49.         return new Photos(List.ofAll(
  50.                 photosStr
  51.                         .stream()
  52.                         .map(Photo::new))
  53.         );
  54.  
  55.     }
  56.  
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement