유권자 패키지의 내용물도 후보자 패키지와 동일한 순서로 진행하겠습니다
유권자 패키지는 voter 이란 이름으로 설정했습니다
voter의 domain 즉 VoterVO를 먼저 만들어보겠습니다
@AllArgsConstructor
@Getter
@ToString
public class VoterVO {
private Integer vno;
private String name;
}
후보자 패키지의 VO와 마찬가지로
@AllargsConstructor (모든 생성자)
@Getter (읽기전용이기에)
@ToString
를 lombok를 사용해서 만들어 주었습니다
유권자 번호로 사용할 con 유권자 이름의 name를 만들어주면서 VO는 끝이 났습니다!! 항상 VO는 쉬운데....ㅎㅎ;;
VoterDAO
public class VoterDAO {
//VoterVO 타입의 배열 arr
private VoterVO[] arr;
//배열 초기화
public VoterDAO(){
arr = new VoterVO[4];
arr[0]= new VoterVO(1,"홍길동");
arr[1]= new VoterVO(2,"김두한");
arr[2]= new VoterVO(3,"시라소니");
arr[3]= new VoterVO(4,"마동석");
}
//vno =식별 / 지금 voter은 읽기 전용이라 안전 그래서 public로 지정
public VoterVO getOne(Integer vno){
//retunrn 설정 / 유권자 목록에 없으면 null 표시
VoterVO result = null;
//vo.Vno랑 vno가 같으면 투표 가능
for(VoterVO vo:arr){
if(vo.getVno()==vno){
result =vo;
break;
}
} //end for
return result;
}
}
유권자를 확인하는 로직까지 들어가면서 조금 복잡해진 모습을 볼 수 있습니다... 지옥은 여기서부터 시작이었던 것 같습니다
VoterService
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import voter.dao.VoterDAO;
import voter.domain.VoterVO;
@RequiredArgsConstructor
public class VoterService {
@NonNull
private VoterDAO voterDAO;
//유권자 확인 로직은 UI에게 보내주는
public VoterVO readOne(Integer vno) throws Exception{
VoterVO voter = voterDAO.getOne(vno);
//vno 값이 null이면 Exception 으로 ui에게 던져줌 readOne를 호출하는 사람<ui>에게 반듯이 null이라는것을 알려주려는것
if(voter == null){
throw new RuntimeException("voter is null");
}
//null이 아니면 voter 리턴
return voter;
}
}
readOne는 유권자 확인 로직에서 null 값이 나왔을 때 UI에게 알려주는 로직입니다
후보자 패키지와 마찬가지고 Service는 DAO에게 의존성을 가진 모습입니다
'개발자 성장 일지' 카테고리의 다른 글
2022.03.12 투표 시스템 후보자 (0) | 2022.03.12 |
---|---|
2022.03.12 반성 다짐 그리고 설계 (0) | 2022.03.12 |
2022.03.10 투표 서비스 <설계 그리고 후보자 패키지> (0) | 2022.03.10 |
2022.03.08 수업일지 (0) | 2022.03.08 |
돼지 저금통 만들기 (0) | 2022.03.07 |