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

import com.eactive.eai.batch.rule.phaseinfo.PhaseInfoVO;
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_ML12X extends DefaultTelegram implements TelegramService
{

    public RECV_ML12X() {
    }

    public boolean doExecute() {

        return true;
    }
    /**
     *  RULE의 TelegramType만 가지고, 다음 텔레그램의 ID를 결정한다.
     */
    public String getRealRecvTelegram() {

        PhaseInfoVO info = (PhaseInfoVO) this.al_NextStage.get(0);
        if ( info == null ) return "";
        batchDoc.getBatchMsg().getPhaseinfo().setPhaseSeq       (info.getPhaseSeq()  );  //Stage Logging 용
        batchDoc.getBatchMsg().getPhaseinfo().setPhaseTelegramID(info.getTelegramID());  //Stage Logging 용
        return info.getTelegramID();
    }
    /**
     * int getCalculatedLength(int idx)
     * --------------------------------------------------------------------------------------
     * 전달된 인덱스 idx는 비정형 필드여야 한다. 즉 필드의 길이값이 FILE_NO_LENGTH("XX") 이어야 한다.
     * 해당 비정형 필드에 대해 실질적인 전문길이를 동적으로 계산해 낸다.
     */
    public int getCalculatedLength(int idx) {

        if (idx >= this.getFieldCount()) {
            logger.debug("{} getCalculatedLength> parameter is bigger than field count", logHeader);
            String[] msgArgs = new String[2];
            msgArgs[0] = this.batchDoc.getBatchMsg().getHeader().getProcessCode();
            msgArgs[1] = ""+idx;
            String errCode = "BECEAIFJI011";
            String errMsg = ExceptionUtil.getErrorCode (errCode, msgArgs);
            this.batchDoc.getBatchMsg().getBody().setErrorMsg(errMsg);
            return -1;
        }
        if (!this.getFieldLength(idx).equalsIgnoreCase(TelegramService.FIELD_NO_LENGTH)) {
            String[] msgArgs = new String[2];
            msgArgs[0] = this.batchDoc.getBatchMsg().getHeader().getProcessCode();
            msgArgs[1] = ""+idx;
            String errCode = "BECEAIFJI012";
            String errMsg = ExceptionUtil.getErrorCode (errCode, msgArgs);
            this.batchDoc.getBatchMsg().getBody().setErrorMsg(errMsg);
            return -1;
        }
        return 0;
    }

}
