使用构建器将属性值从对象映射到对象

时间:2018-06-01 15:48:46

标签: java spring builder lombok

我有ParticipantDTO类,它有一些属性,如name,surname,personalData等。

我有字段 pesel ,这是每个人的唯一编号,并根据此编号可以获得birthDate。我有一个处理 pesel 的方法来获取 birthDate ,就像:

String getBirth(String pesel){...}

问题是...... 如果我有ParticipantDTO的实例,我如何处理它以填充 birthDate 字段? BirthDate PersonalData 类属性, pesel PersonalData ParticipantDTO 的属性。我想获得类似的东西:

ParticipantDTO fillBirthDate(ParticipantDTO source){...}

我不知道这样做的简单方法。反思,也许吧? :(

如果我有例如:

  public static PersonalData samplePersonalData() {
return PersonalData.builder()
    .birthDate(**none!**)
    .emergencyContactName("Uncle Bob")
    .emergencyContactNumber(444555666L)
    .build();

}

  public static ParticipantDTO sampleParticipantWithoutBirthDate() {
return ParticipantDTO.builder()
    .id(1L)
    .firstName("Sample")
    .pesel("98101012345")
    .personalData(samplePersonalData)
    .build();

}

我打电话给: ParticipantDTO participantWithBirthDate = fillBirthDate(参与者) 我希望 participantWithBirthDate.getPersonalData.getBirthDate =“01.01.1998”,因为 pesel 是“980101 ....

Assumtions: ParticipantDTO 课程:

@Immutable
@Builder
@EqualsAndHashCode
@ToString
@Getter
public final class ParticipantDTO {

  private final Long id;
  private final String firstName;
  private final String pesel;

  @Builder.Default
  private final PersonalData personalData = 
     PersonalData.builder().build();

PersonalData 类:

@Value
@Builder
@EqualsAndHashCode(exclude = "birthDate")
public class PersonalData {

  private final String birthDate;
  private final String emergencyContactName;
  private final Long emergencyContactNumber;

0 个答案:

没有答案