package com.brilliance;

import com.brilliance.swift.SwiftTransfer;
import com.brilliance.swift.util.DateUtil;
import com.prowidesoftware.swift.model.mt.AbstractMT;
import com.prowidesoftware.swift.model.mt.mt1xx.MT103;
import com.prowidesoftware.swift.model.mt.mt1xx.MT103_STP;
import org.apache.commons.io.FileUtils;
import org.junit.Test;

import javax.xml.datatype.DatatypeConfigurationException;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class JsonMxConvertTest {
    @Test
    public void json2MxTest() throws IOException {
        File file = FileUtils.toFile(Mx2MtTest.class.getResource("/mxjson/JSONpacs00800108.json"));
        String isoXml = SwiftTransfer.json2Mx(FileUtils.readFileToString(file, "UTF-8"));
        System.out.println(isoXml);
    }

    @Test
    public void mx2JsonTest() throws IOException {
        File file = FileUtils.toFile(Mx2MtTest.class.getResource("/mxjson/Pacs00800108.xml"));
        String isoJson = SwiftTransfer.mx2Json(FileUtils.readFileToString(file, "UTF-8"));
        System.out.println(isoJson);
    }

    @Test
    public void dateFormatTest() throws DatatypeConfigurationException, ParseException {
        String date="2023-12-10 20:10:11";
        String isoDateTime = DateUtil.date2XMLGregorianCalendarStr(date);
        System.out.println(isoDateTime);
    }


    @Test
    public void testDate(){
        TimeZone timezone = TimeZone.getTimeZone("UTC");
        //"Z" indicates UTC, which means no timezone offset
        //2024-01-03T07:06:36.496+08:00
        //标准的ISO 8601日期格式 yyyy-MM-ddThh:mm:ss.sss+/-hh:mm
        // 发报时,采用东八区时间,样例如2024-01-03T07:06:36.496+08:00
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
        dateFormat.setTimeZone(timezone);
        String ISODate = dateFormat.format(new Date());
        System.out.println(ISODate+"+08:00");
    }

    @Test
    public void testMt() throws IOException {
        File file = FileUtils.toFile(Mx2MtTest.class.getResource("/swiftTxt/MT103.txt"));
        String mtStr =FileUtils.readFileToString(file, "UTF-8");
        AbstractMT abstractMT = AbstractMT.parse(mtStr);
        if(abstractMT!=null)
        {
            String mtType=abstractMT.getMessageType();
            if("103".equals(mtType))
            {
                if(abstractMT.getSwiftMessage().getBlock3().isSTP()) {
                    MT103_STP mt103Stp= (MT103_STP) abstractMT;
                    System.out.println("this is mt103_stp");
                    System.out.println(mt103Stp.message());
                }else {
                    MT103 mt103= (MT103) abstractMT;
                    mt103.getField50A();
                    mt103.getField50F();
                    mt103.getField50K();

                    mt103.getField59();
                    mt103.getField59A();
                    mt103.getField59F();
                    System.out.println("this is mt103");
                    System.out.println(mt103.message());
                }

            }
        }


    }
}