Skip to content

Instantly share code, notes, and snippets.

@apolichronopoulos
Last active March 30, 2021 20:46
Show Gist options
  • Save apolichronopoulos/5039d48fca54791f0952799357482a14 to your computer and use it in GitHub Desktop.
Save apolichronopoulos/5039d48fca54791f0952799357482a14 to your computer and use it in GitHub Desktop.
import gr.datamation.swift.common.SwiftMessage;
import gr.datamation.swift.corporate.processor.EnvelopeBuilder;
import gr.datamation.swift.processor.SwiftMsgProcessor;
import gr.datamation.swift.validator.SwiftValidObj;
import java.util.Arrays;
public class TradeFinanceBuild {
private static final String mt770string =
"{1:F01COPZBEB0AXXX0377002038}{2:O7701452110804LRLRXXXX4A1100009036611108041652N}{3:{108:MT770 001 OF 001}{433:/NOK/SUSPECT }}{4:\n" +
":20:02462\n" +
":12:770\n" +
":77E:\n" +
":27A:1/3\n" +
":21A:16XXX\n" +
":25F:FINAL\n" +
":13E:201410251250\n" +
":53C:/APPLCANT ACCOUNT\n" +
":24D:TELE\n" +
":73A:CHARGES INFORMATION\n" +
":71A:OTH\n" +
":58A:TESTBICC\n" +
":25A:/SETTLEMENT CHARGES ACCOUNT\n" +
":71M:BENE\n" +
":21E:REFERENCE CONTRACT NUMBER\n" +
":29T:OTHR/OTHER TRANSPORT MODE\n" +
":45C:UNDERTAKING\n" +
"CLAUSE\n" +
"OF\n" +
"THE\n" +
"APPLICANT\n" +
":29A:ALEXANDRAKIS ALEXANDROS\n" +
"AGIOY GEORGIOY 24\n" +
"ZOGRAFOY\n" +
"6948212121\n" +
":72Z:ADDITIONAL INFORMATION ABOUT\n" +
"THE BANK 1\n" +
"ADDITIONAL INFORMATION ABOUT\n" +
"THE BANK 2\n" +
":29S:OTHR/PARTY IDENTIFIER\n" +
":23X:EMAL/NARRATIVE\n" +
":29U:TESTBICA\n" +
":21R:REF121212\n" +
"-}{5:{MAC:00000000}{CHK:7500CB09B73B}{TNG:}}{S:{SAC:}{COP:P}}";
private static final String mt700string1 =
"{1:F01COPZBEB0AXXX0377002610}{2:O7001511110804LRLRXXXX4A1100009042331108041713N}{3:{108:MT700 004 OF 030}}{4:\n" +
":27:1/1\n" +
":40A:IRREVOCABLE TRANSFERABLE\n" +
":20:02179\n" +
":40E:UCP LATEST VERSION\n" +
":31D:001118AMSTERDAM\n" +
":51A:TESTNLVT\n" +
":50:FRANZ HOLZAPFEL GMBH\n" +
"WIEN\n" +
":59:SAM COOKE\n" +
"a48TH STREET\n" +
"NEW YORK, N.Y. 10016\n" +
":32B:USD105,\n" +
":41A:TESTSEVT\n" +
"BY PAYMENT\n" +
":49:CONFIRM\n" +
"-}{5:{MAC:00000000}{CHK:8632214CDF08}{TNG:}}{S:{SAC:}{COP:P}}\n";
public static void main(String[] args) {
SwiftMsgProcessor smp = new SwiftMsgProcessor("\n");
try {
SwiftMessage indexMessage = smp.ParseMsgStringToObject(mt770string);
SwiftMessage detailMessage = smp.ParseMsgStringToObject(mt700string1);
EnvelopeBuilder constructor = new EnvelopeBuilder();
// use a SwiftMessage object just to have an easy reference for building block 1 and 2
SwiftMessage envelopeMessage798 = new SwiftMessage();
// Set Tags for block1
envelopeMessage798.setArgApplid("F");
envelopeMessage798.setArgServid("01");
envelopeMessage798.setArgLTaddrBlk1("ISSUGB2LAXXX");
envelopeMessage798.setArgSesno("0000");
envelopeMessage798.setArgOsn("000000");
// Set Tags for block2
envelopeMessage798.setArgInoutind("I");
envelopeMessage798.setArgMsgtype("798");
envelopeMessage798.setArgLTaddrBlk2("REIMUS33AXXX");
envelopeMessage798.setArgMsgprior("N");
constructor.setBlock1(envelopeMessage798.getBlock1());
constructor.setBlock2(envelopeMessage798.getBlock2());
constructor.setIndexMessage(indexMessage);
constructor.setTransactionReferenceNumber("TRANS1234");
constructor.setCustomerReferenceNumber("CUSTOMER1234");
constructor.setTag77ELine0("FOLLOWS THE ENCLOSED MESSAGE");
constructor.setDetailEnclosedMessages(Arrays.asList((SwiftMessage) detailMessage));
SwiftValidObj swiftValidObj = constructor.encloseMessages();
if (!swiftValidObj.hasErrors()) {
System.out.println("Messages are valid");
System.out.println(new SwiftMsgProcessor("\n").BuildMsgStringFromObject(swiftValidObj.getSwiftMessages().get(0)));
System.out.println(new SwiftMsgProcessor("\n").BuildMsgStringFromObject(swiftValidObj.getSwiftMessages().get(1)));
} else {
System.out.println(swiftValidObj.getValidationErrorList());
}
} catch (Exception e) {
e.printStackTrace();
System.err.println("Message cannot be parsed");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment