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

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

import com.eactive.eai.batch.rule.nodeinfo.NodeInfoManager;
import com.eactive.eai.batch.rule.nodeinfo.NodeInfoVO;

public class RECV_INSBT extends DefaultTelegram implements TelegramService
{

	/**
     * 생성자 : 퇴직연금용 길이결정용 텔레그램 클래스 이다.
     */
    public RECV_INSBT() {
    }

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

    //---------------- 특정 필드값을 구하는 부분
    // 전문종별코드 필드값 리턴
    public String getTelegramType()
    {
		return super.getFieldValueString(7);
    }
    // 거래구분코드 필드값 리턴
    public String getTrClass()
    {
		return super.getFieldValueString(8);
    }
    //응답코드 필드값 리턴
    public String getResCode()
    {
		return super.getFieldValueString(11);
    }

    /**
     *  20060417 add by khs : 원치 않는 전문종별 도착시, 소켓에 있는 garvage 데이터를 없애기 위해 사용한다.
     *
     *  return value :      <0 계산 할 수 없거나 장애이다.
     *                      >0 해당 데이터를 소켓에서 더 읽어들인다.
     */
    public int getRemainDataLength()
    {
        try {
            int     idx;
            String  strLength;
    
            String  strRuleCode   = batchDoc.getBatchMsg().getHeader().getRuleCode();
            String  strPhaseCode  = batchDoc.getBatchMsg().getBody().getFlowPhaseCode();
            NodeInfoVO  vo = NodeInfoManager.getInstance().getNodeInfo(strRuleCode, strPhaseCode);
    
            idx = vo.getLengthField();
            if (idx == 0) return -1;
    
            strLength = new String((byte[])this.al_Field.get(idx-1));
            int     nDocLen = Integer.parseInt(strLength);
            int     nReceivedLen = 0;
            for (int i=2; i<this.al_FieldLength.length ; i++) {
                nReceivedLen = nReceivedLen + Integer.parseInt(this.al_FieldLength[i]);
            }
    
            return (nDocLen-nReceivedLen);
            
        } catch (Exception ex) {
            this.batchDoc.getBatchMsg().getBody().setErrorMsg(ex.toString());
            return -1;
        }
    }
}
