두개의 DTO 객체 사이에서 타입을 변환 하여 전달 할 경우

정병웅·2023년 4월 11일
0

자바

목록 보기
4/8

업무를 진행하다가 고객사의 요구 조건으로 솔루션에 엑셀 업로드의 기능 개선이 필요하였고, 그중 아래의 방법을 개발하게 되었다.

인터페이스 업로드 기능을 하면서 업로드 한 엑셀의 row 데이터를 저장하는 InterfaceBatchDto와 인터페이스의 정보를 저장한 InterfaceDto 가 있다.
InterfaceBatchDto → InterfaceDto 로 데이터를 전달 할때 특정 변수 가 Data Type이 달라서 conversion을 시켜줘야한다.

진행 설명

InterfaceBatchDto.java

private String ownerIds; //인터페이스 담당자

InterfaceDto.java

private List<UserDto> owners = new ArrayList<>();

//생성자
public IntefaceDto(,,,List<UserDto> owners,,,) {
,,,중략,,
	this.owners = owners;
,,,중략,,
}

InterfaceBatchDto 의 변수 타입은 String이고, InterfaceDto 의 변수 타입은 UserDto 타입의 ArrayList 이다.

따라서 InterfaceDto에 InterfaceBatchDto의 값을 set 해주기 위해 InterfaceMapper.java를 생성한다.
그리고 String을 List 로 변환 하는 method를 InterfaceMapper 내부에 정의 한다.

→ InterfaceDto 객체는 파라미터로 InterfaceBatchDto와 UserIdChecker 를 받는다.

String을 List로 변환하는 Method를 InterfaceMapper에 정의 한다.

/* jbw 2023.04.06 
    코드 추가 : I/F 상세보기 담당자 노출  가능하도록 수정 진행*/
    public List<UserDto> ifOwnerToList(String ownerIds){
        if (ownerIds == null) return new ArrayList<>();
        //UserDto 타입의 List를 생성 한다.
        List<UserDto> userDtoList = new ArrayList<>();
        //ownerIds 는 "test1,test2,test3" 이런 형식으로 들어오기 때문에 "," 를 기준으로 구분 하여 String[]에 넣는다.
        String[] ownerIds2 = ownerIds.contains(",") ? ownerIds.split(",") : ownerIds.split(";");
        //for 문을 돌면서 UserDto 객체를 생성하며, ownerIds 값을 userId에 set 한다.
        //그리고 UserDto를 List에 add 한다.
        for (int i=0; i < ownerIds2.length; i++) {
            UserDto userDto = new UserDto();
            userDto.setUserId(ownerIds2[i]);
            userDtoList.add(userDto);
        }
        //String -> ArrayList 로 변환한 값을 반환 한다.
        return userDtoList;
    }
/* jbw 2023.04.06 
    코드 추가 : I/F 상세보기 담당자 노출  가능하도록 수정 진행*/
    public List<UserDto> ifOwnerToList(String ownerIds){
        if (ownerIds == null) return new ArrayList<>();
        //UserDto 타입의 List를 생성 한다.
        List<UserDto> userDtoList = new ArrayList<>();
        //ownerIds 는 "test1,test2,test3" 이런 형식으로 들어오기 때문에 "," 를 기준으로 구분 하여 String[]에 넣는다.
        String[] ownerIds2 = ownerIds.contains(",") ? ownerIds.split(",") : ownerIds.split(";");
        //for 문을 돌면서 UserDto 객체를 생성하며, ownerIds 값을 userId에 set 한다.
        //그리고 UserDto를 List에 add 한다.
        for (int i=0; i < ownerIds2.length; i++) {
            UserDto userDto = new UserDto();
            userDto.setUserId(ownerIds2[i]);
            userDtoList.add(userDto);
        }
        //String -> ArrayList 로 변환한 값을 반환 한다.
        return userDtoList;
    }
profile
인생은 IT 노가다

0개의 댓글