package com.eactive.eai.batch.job.jobItem.ksnet;

import java.lang.String;
import java.io.ByteArrayOutputStream;

import com.eactive.eai.common.exception.ExceptionUtil;

import com.eactive.eai.batch.job.jobItem.DefaultTelegram;
import com.eactive.eai.batch.job.jobItem.TelegramService;

public class RECV_KSN25_0630 extends DefaultTelegram implements TelegramService
{
    /**
     * 생성자
     */
    public RECV_KSN25_0630() {
        //송신 파일 통보
    }

    /**
     * 전문 해체하기
     */
    public boolean doExecute() {
        if (!super.doExecute()) return false;
        return true;
    }

    /**
     * 전문 Validation
     */
    public boolean doValidation()
    {
        if (!super.doValidation()) return false;

        return true;
    }

    public boolean doPostExecute() {
        if (!super.doPostExecute()) return false;
        try {
            //DB로그에 남길 전문 헤더 설정
            ByteArrayOutputStream baout = new ByteArrayOutputStream();
            for (int i=0; i<this.al_Field.size(); i++) {
                baout.write((byte[])this.al_Field.get(i));
            }
            batchDoc.getBatchMsg().setTelegramHeader(new String(baout.toByteArray()));

            batchDoc.getBatchMsg().setTelegramBody("");

            // 자체 테스트시에만 사용되는 콤포넌트로 실제 기관 수신시에 사용되지는 않음
            String fileName = super.getFieldValueString(3);
            batchDoc.getBatchMsg().getHeader().setBizCode( fileName );
            batchDoc.getBatchMsg().getHeader().setFileName( fileName );

            return true;

        } catch(Exception ex) {
            String[] msgArgs = new String[1];
            msgArgs[0] = this.batchDoc.getBatchMsg().getHeader().getProcessCode();
            String errCode = "BECEAIFJI002";
            String errMsg = ExceptionUtil.getErrorCode (ex, errCode, msgArgs);
            this.batchDoc.getBatchMsg().getBody().setErrorMsg(errMsg);
            logger.error( ex.getMessage(), ex);
            return false;
        }
    }

    // 전문종별코드 필드값 리턴
    public String getTelegramType()
    {
    	String rsgubun = super.getFieldValueString(1);
    	if ( rsgubun.equals("NG"))
    		return "0630";
    	return "0000";
    }

    //응답코드 필드값 리턴
    public String getResCode()
    {
        return super.getFieldValueString(9);
    }
}
