Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Lombok @Builder Model Class with field class and List Class

Im new to Spring and Im trying to create DTO with Lombok @Builder.
But i having trouble set up the data from field class take a look at addressDTO and childsDTO in ParentDTO class.

import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Parent {
    
    private String name;
    private Integer age;
    private Address address;
    private List<Child> childs;
}


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Child {
    
    private String name;
    private Integer age;

}


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Address {
    
    private Integer Zipcode;
    private String City;

}


DTO class

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
public class ParentDTO {
    
    private String nameDTO;
    private Integer ageDTO;
    private AddressDTO addressDTO;
    private List<ChildDTO> childsDTO;
    
    public static ParentDTO convertParentDTO(Parent parent) {
        return ParentDTO.builder()
                .nameDTO(parent.getName())
                .ageDTO(parent.getAge())
                .addressDTO( null) // i try this wont work .addressDTO(parent.getAddress()) .addressDTO( AddressDTO::connerAddressDTO)) 
                .childsDTO(null) // i try this .childsDTO(List.of()) then ?
                .build();
    }

}


import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
public class ChildDTO {
    
    private String nameDTO;
    private Integer ageDTO;
    
    public static ChildDTO convertChildDTO(Child child) {
        return ChildDTO.builder()
                .nameDTO(child.getName())
                .ageDTO(child.getAge())
                .build();
    }

}


import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
public class AddressDTO {
    
    private Integer ZipcodeDTO;
    private String CityDTO;
    
    public static AddressDTO connerAddressDTO(Address address) {
        return AddressDTO.builder()
                .ZipcodeDTO(address.getZipcode())
                .CityDTO(address.getCity())
                .build();
    }

}

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

If I understand well the question it’s should be like this.

import lombok.*;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
public class ParentDTO {
    private String nameDTO;
    private Integer ageDTO;
    private AddressDTO addressDTO;
    private List<ChildDTO> childsDTO;

    public static ParentDTO convertParentDTO(Parent parent) {
        return ParentDTO.builder()
            .nameDTO(parent.getName())
            .ageDTO(parent.getAge())
            .addressDTO(
                 AddressDTO.connerAddressDTO(
                     parent.getAddress()))
            .addressDTO(parent.getAddress())
            .childsDTO(toChildrenDto(parent.getChilds()))
         .build();
    }

    private static List<ChildDTO> toChildrenDto(List<Child> children) {
        if (children == null || children.isEmpty()) {
            return Collections.emptyList();
        }
        return children.stream()
                .map(c -> 
             ChildDTO.builder().ageDTO(c.getAge()).nameDTO(c.getName()).build())
      .collect(Collectors.toList());
    }
}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading