업무를 진행하다가 고객사의 요구 조건으로 솔루션에 엑셀 업로드의 기능 개선이 필요하였고, 그중 아래의 방법을 개발하게 되었다.
인터페이스 업로드 기능을 하면서 업로드 한 엑셀의 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;
}