package com.brilliance;

import com.prowidesoftware.swift.model.mt.AbstractMT;
import com.prowidesoftware.swift.model.mt1xx.MT103;
import com.prowidesoftware.swift.model.mx.BusinessAppHdrV02;
import com.prowidesoftware.swift.model.mx.MxPacs00800108;
import com.prowidesoftware.swift.model.mx.dic.BranchAndFinancialInstitutionIdentification6;
import com.prowidesoftware.swift.model.mx.dic.FinancialInstitutionIdentification18;
import com.prowidesoftware.swift.model.mx.dic.Party44Choice;
import org.apache.commons.io.FileUtils;
import org.junit.Test;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;

public class JavaBean2XmlTest {

    @Test
    public void javaBean2XmlTest() throws Exception {
        JAXBContext context = JAXBContext.newInstance(MxPacs00800108._classes);    // 获取上下文对象
        Marshaller marshaller = context.createMarshaller(); // 根据上下文获取marshaller对象

        marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");  // 设置编码字符集
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化XML输出,有分行和缩进
        MxPacs00800108 mxPacs00800108=new MxPacs00800108();
        BusinessAppHdrV02 businessAppHdrV02=new BusinessAppHdrV02();
        Party44Choice party44Choice=new Party44Choice();
        BranchAndFinancialInstitutionIdentification6 fiId=new BranchAndFinancialInstitutionIdentification6();
        FinancialInstitutionIdentification18 finInstnId=new FinancialInstitutionIdentification18();
        finInstnId.setBICFI("NCBKCNSHXXX");
        fiId.setFinInstnId(finInstnId);
        party44Choice.setFIId(fiId);
        businessAppHdrV02.setFr(party44Choice);
        mxPacs00800108.setAppHdr(businessAppHdrV02);
        System.out.println(mxPacs00800108.getAppHdr().xml());
        marshaller.marshal(mxPacs00800108,System.out);   // 打印到控制台

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        marshaller.marshal(mxPacs00800108, baos);
        String xmlObj = new String(baos.toByteArray());         // 生成XML字符串
      //  System.out.println(xmlObj);
    }

    @Test
    public void test(){
      /*  ClearingSystemMemberCode[] values = ClearingSystemMemberCode.values();
        for (ClearingSystemMemberCode tmpCode : values) {
            System.out.println(tmpCode.value());
            System.out.println(tmpCode.desc());
            break;
        }*/

        File file = FileUtils.toFile(Mx2MtTest.class.getResource("/swiftTxt/MT103_gcy.txt"));
        try {
            AbstractMT abstractMT=AbstractMT.parse(file);
            MT103 mt103= (MT103) abstractMT;
            System.out.println(abstractMT.getMessageType());
            //System.out.println(abstractMT.getField50K().getName());

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}