package com.prowidesoftware.brilliance.mx2mt.mt900910.impl;

import com.prowidesoftware.brilliance.constants.Mx2MtConstants;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.swift.model.mx.MxCamt05400102;
import com.prowidesoftware.swift.model.mx.dic.BankToCustomerDebitCreditNotificationV02;
import com.prowidesoftware.swift.model.mx.dic.GroupHeader42;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * <GrpHdr><MsgId>
 */
public class Field20Generate extends AbstractMx2MtFieldsGenerate {

    private static final Logger logger = LoggerFactory.getLogger(Field20Generate.class);

    @Override
    public void fieldsGenerate() throws SwiftException {
        logger.info("Field20Generate start.");
        try {
            MxCamt05400102 mxCamt05400102 = (MxCamt05400102)map.get(Mx2MtConstants.MX_OBJECT);
            if (mxCamt05400102 == null || mxCamt05400102.getBkToCstmrDbtCdtNtfctn() == null) {
                return;
            }
            BankToCustomerDebitCreditNotificationV02 bkToCstmrDbtCdtNtfctn = mxCamt05400102.getBkToCstmrDbtCdtNtfctn();
            GroupHeader42 grpHdr = bkToCstmrDbtCdtNtfctn.getGrpHdr();
            if (grpHdr != null) {
                String field20 = grpHdr.getMsgId();
                map.put("field20", field20);
            }
        } catch (Exception e) {
            logger.error(e.getMessage());
            throw new SwiftException("ERROR", "Convert MT900/910 Field20 error");
        }
    }
}