ItemStream, ItemReader Interface
배치처리를 위해 데이터를 읽어올 ItemStream, ItemReader Interface 를 구현한다.
(1) ItemStream 작성
open 메소드에서는 입력 파라미터 값 확인과 데이터를 조회 처리(Iterator)할 DBIO를 호출한다.
close 메소드에서는 DB 연결 정보를 종료 처리한다.
public class MSmpDBToDBBtch implements ItemStream { // ItemStream Interface 추가
@Override
public void open(ExecutionContext executionContext) throws ItemStreamException
{
if(dSmpEmpTst001 == null)
{
dSmpEmpTst001 = DefaultApplicationContext.getBean(DSmpEmpTst001.class);
}
/**
* 배치 입력파라미터 "deptNo" Get
*/
String feduDeptNo = DefaultBatchApplicationContext.getJobParameter("deptNo");
if(StringUtils.isEmpty(feduDeptNo))
{
throw new ItemStreamException("배치 입력아규먼트 'deptNo' 값이 존재하지 않습니다.");
}
/**
* 입력받은 "deptNo" 에 대하여 샘플용 직원정보를 Iterator로 가져온다.
*/
DSmpEmpTst001selectList01InDto inDto = new DSmpEmpTst001selectList01InDto();
inDto.setFeduDeptNo(Integer.parseInt(feduDeptNo));
iterator = dSmpEmpTst001.selectList01(inDto).iterator();
}
@Override
public void update(ExecutionContext executionContext) throws ItemStreamException
{
}
@Override
public void close() throws ItemStreamException
{
DasUtils.disconnectDasExecutor(iterator);
}
}
(2) ItemReader 작성
조회 처리한 Iterator 에서 한건 씩 데이터를 가지고 와 ItemProcessor로 Return 처리 하고, 데이터가 존재하지 않을 경우에는 null 을 Return하여 종료 처리한다.
public class MSmpDBToDBBtch implements ItemReader<MSmpDBToDBBtch01Dto>, ItemStream { // ItemReader Interface 추가
@Override
public MSmpDBToDBBtch01Dto read() throws Exception, UnexpectedInputException,
ParseException, NonTransientResourceException
{
MSmpDBToDBBtch01Dto out = null;
if(iterator.hasNext())
{
out = new MSmpDBToDBBtch01Dto();
DSmpEmpTst001selectList01OutDto input = iterator.next();
out.setFeduEmpNo(input.getFeduEmpNo()); // set [FW샘플 임직원번호]
out.setFeduEmpNm(input.getFeduEmpNm()); // set [FW샘플 임직원명]
out.setFeduOccpNm(input.getFeduOccpNm()); // set [FW샘플 직업명]
out.setFeduMngrEmpNo(input.getFeduMngrEmpNo()); // set [FW샘플 관리자임직원번호]
out.setFeduHireDt(input.getFeduHireDt()); // set [FW샘플 입사일자]
out.setFeduPayAmt(input.getFeduPayAmt()); // set [FW샘플 급여금액]
out.setFeduDeptNo(input.getFeduDeptNo()); // set [FW샘플 부서번호]
}
return out;
}