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;
    }
SWLab Bankware Global
  • 전체
  • BXM
  • BXCM
  • BXCP
  • BXI
제품 선택 시 더 정확한 매뉴얼 가이드를 제공해드립니다.

Copyright© Bankwareglobal All Rights Reserved.