Commit 9cc67259 by zhanghou

900和910修改为通过xmlFilter方式获取节点的值

parent 5736a006
...@@ -5,25 +5,29 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtCreator; ...@@ -5,25 +5,29 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtCreator;
import com.prowidesoftware.brilliance.mx2mt.Mx2MtFieldsGenerate; import com.prowidesoftware.brilliance.mx2mt.Mx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.mx2mt.mt900910.impl.*; import com.prowidesoftware.brilliance.mx2mt.mt900910.impl.*;
import com.prowidesoftware.brilliance.exception.SwiftException; import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.util.DateUtil; import com.prowidesoftware.brilliance.util.*;
import com.prowidesoftware.brilliance.util.NumberUtil;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.brilliance.util.TemplateUtil;
import com.prowidesoftware.swift.model.mx.MxCamt05400102; import com.prowidesoftware.swift.model.mx.MxCamt05400102;
import com.prowidesoftware.swift.model.mx.dic.*; import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
public class Mx2Mt900910Creator extends AbstractMx2MtCreator { public class Mx2Mt900910Creator extends AbstractMx2MtCreator {
private static final Logger logger = LoggerFactory.getLogger(Mx2Mt900910Creator.class); private static final Logger logger = LoggerFactory.getLogger(Mx2Mt900910Creator.class);
@Override @Override
public void preProcess() {
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
Map<String, String> parentElementMaps = XmlUtil.getParentElementMaps(document);
map.put(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, parentElementMaps.get("GrpHdr"));
map.put(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, parentElementMaps.get("Ntfctn"));
map.put(Mx2MtConstants.MT_TEMPLATE_NAME, "swift_mt_900_910.vm");
}
@Override
public List<Mx2MtFieldsGenerate> getFieldsGenerateList() { public List<Mx2MtFieldsGenerate> getFieldsGenerateList() {
List<Mx2MtFieldsGenerate> fieldsGenerateList = new ArrayList<>(); List<Mx2MtFieldsGenerate> fieldsGenerateList = new ArrayList<>();
fieldsGenerateList.add(new Field13DGenerate()); fieldsGenerateList.add(new Field13DGenerate());
......
...@@ -3,9 +3,11 @@ package com.prowidesoftware.brilliance.mx2mt.mt900910.impl; ...@@ -3,9 +3,11 @@ package com.prowidesoftware.brilliance.mx2mt.mt900910.impl;
import com.prowidesoftware.brilliance.constants.Mx2MtConstants; import com.prowidesoftware.brilliance.constants.Mx2MtConstants;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate; import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.exception.SwiftException; import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxCamt05400102; import com.prowidesoftware.swift.model.mx.MxCamt05400102;
import com.prowidesoftware.swift.model.mx.dic.BankToCustomerDebitCreditNotificationV02; import com.prowidesoftware.swift.model.mx.dic.BankToCustomerDebitCreditNotificationV02;
import com.prowidesoftware.swift.model.mx.dic.GroupHeader42; import com.prowidesoftware.swift.model.mx.dic.GroupHeader42;
import org.dom4j.Document;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -16,21 +18,20 @@ public class Field20Generate extends AbstractMx2MtFieldsGenerate { ...@@ -16,21 +18,20 @@ public class Field20Generate extends AbstractMx2MtFieldsGenerate {
private static final Logger logger = LoggerFactory.getLogger(Field20Generate.class); private static final Logger logger = LoggerFactory.getLogger(Field20Generate.class);
@Override @Override
public void fieldsGenerate() throws SwiftException { public void fieldsGenerate() throws SwiftException {
try { try {
MxCamt05400102 mxCamt05400102 = (MxCamt05400102)map.get(Mx2MtConstants.MX_OBJECT); String msgId = "";
if (mxCamt05400102 == null || mxCamt05400102.getBkToCstmrDbtCdtNtfctn() == null) { Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
return; String id = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "GrpHdr.MsgId");
} if (StringUtil.isNotEmpty(id)) {
BankToCustomerDebitCreditNotificationV02 bkToCstmrDbtCdtNtfctn = mxCamt05400102.getBkToCstmrDbtCdtNtfctn(); msgId = id;
GroupHeader42 grpHdr = bkToCstmrDbtCdtNtfctn.getGrpHdr(); map.put("field20", msgId);
if (grpHdr != null) {
String field20 = grpHdr.getMsgId();
map.put("field20", field20);
} }
} catch (Exception e) { } catch (Exception e) {
throw new SwiftException("ERROR", e.getMessage()); throw new SwiftException("ERROR", e.getMessage());
} }
} }
} }
...@@ -3,8 +3,10 @@ package com.prowidesoftware.brilliance.mx2mt.mt900910.impl; ...@@ -3,8 +3,10 @@ package com.prowidesoftware.brilliance.mx2mt.mt900910.impl;
import com.prowidesoftware.brilliance.constants.Mx2MtConstants; import com.prowidesoftware.brilliance.constants.Mx2MtConstants;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate; import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.exception.SwiftException; import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxCamt05400102; import com.prowidesoftware.swift.model.mx.MxCamt05400102;
import com.prowidesoftware.swift.model.mx.dic.*; import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -20,30 +22,12 @@ public class Field21Generate extends AbstractMx2MtFieldsGenerate { ...@@ -20,30 +22,12 @@ public class Field21Generate extends AbstractMx2MtFieldsGenerate {
@Override @Override
public void fieldsGenerate() throws SwiftException { public void fieldsGenerate() throws SwiftException {
try { try {
MxCamt05400102 mxCamt05400102 = (MxCamt05400102)map.get(Mx2MtConstants.MX_OBJECT); String endToEndId = "";
if (mxCamt05400102 == null || mxCamt05400102.getBkToCstmrDbtCdtNtfctn() == null) { Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
return; String id = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.Refs.EndToEndId");
} if (StringUtil.isNotEmpty(id)) {
BankToCustomerDebitCreditNotificationV02 bkToCstmrDbtCdtNtfctn = mxCamt05400102.getBkToCstmrDbtCdtNtfctn(); endToEndId = id;
List<AccountNotification2> ntfctnList = bkToCstmrDbtCdtNtfctn.getNtfctn(); map.put("field21", endToEndId);
if (ntfctnList != null && ntfctnList.size() > 0) {
AccountNotification2 ntfctn = ntfctnList.get(0);
List<ReportEntry2> ntryList = ntfctn.getNtry();
if (ntryList != null && ntryList.size() > 0) {
ReportEntry2 ntry = ntryList.get(0);
List<EntryDetails1> ntryDtlsList = ntry.getNtryDtls();
if (ntryDtlsList != null && ntryDtlsList.size() > 0) {
EntryDetails1 ntryDtls = ntryDtlsList.get(0);
List<EntryTransaction2> txDtlsList = ntryDtls.getTxDtls();
if (txDtlsList != null && txDtlsList.size() > 0) {
EntryTransaction2 txDtls = txDtlsList.get(0);
TransactionReferences2 refs = txDtls.getRefs();
if (refs != null) {
map.put("field21", refs.getEndToEndId());
}
}
}
}
} }
} catch (Exception e) { } catch (Exception e) {
throw new SwiftException("ERROR", e.getMessage()); throw new SwiftException("ERROR", e.getMessage());
......
...@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.exception.SwiftException; ...@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.util.StringUtil; import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxCamt05400102; import com.prowidesoftware.swift.model.mx.MxCamt05400102;
import com.prowidesoftware.swift.model.mx.dic.*; import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -22,27 +23,17 @@ public class Field25aGenerate extends AbstractMx2MtFieldsGenerate { ...@@ -22,27 +23,17 @@ public class Field25aGenerate extends AbstractMx2MtFieldsGenerate {
@Override @Override
public void fieldsGenerate() throws SwiftException { public void fieldsGenerate() throws SwiftException {
try { try {
MxCamt05400102 mxCamt05400102 = (MxCamt05400102)map.get(Mx2MtConstants.MX_OBJECT); String iban = "";
if (mxCamt05400102 == null || mxCamt05400102.getBkToCstmrDbtCdtNtfctn() == null) { Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
return; String BAN = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Acct.Id.IBAN");
} if (StringUtil.isNotEmpty(BAN)) {
BankToCustomerDebitCreditNotificationV02 bkToCstmrDbtCdtNtfctn = mxCamt05400102.getBkToCstmrDbtCdtNtfctn(); iban = BAN;
List<AccountNotification2> ntfctnList = bkToCstmrDbtCdtNtfctn.getNtfctn(); map.put("field25a", iban);
if (ntfctnList != null && ntfctnList.size() > 0) { }else {
AccountNotification2 ntfctn = ntfctnList.get(0); String Id = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Acct.Id.Othr.Id");
CashAccount20 acct = ntfctn.getAcct(); if (StringUtil.isNotEmpty(Id)) {
if (acct != null) { iban = Id;
AccountIdentification4Choice id = acct.getId(); map.put("field25a", iban);
if (id != null) {
if (!StringUtil.isEmpty(id.getIBAN())) {
map.put("field25a", id.getIBAN());
} else {
GenericAccountIdentification1 othr = id.getOthr();
if (othr != null) {
map.put("field25a", othr.getId());
}
}
}
} }
} }
} catch (Exception e) { } catch (Exception e) {
......
...@@ -5,11 +5,16 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate; ...@@ -5,11 +5,16 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.exception.SwiftException; import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.util.DateUtil; import com.prowidesoftware.brilliance.util.DateUtil;
import com.prowidesoftware.brilliance.util.NumberUtil; import com.prowidesoftware.brilliance.util.NumberUtil;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxCamt05400102; import com.prowidesoftware.swift.model.mx.MxCamt05400102;
import com.prowidesoftware.swift.model.mx.dic.*; import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
...@@ -23,33 +28,25 @@ public class Field32AGenerate extends AbstractMx2MtFieldsGenerate { ...@@ -23,33 +28,25 @@ public class Field32AGenerate extends AbstractMx2MtFieldsGenerate {
@Override @Override
public void fieldsGenerate() throws SwiftException { public void fieldsGenerate() throws SwiftException {
try { try {
MxCamt05400102 mxCamt05400102 = (MxCamt05400102)map.get(Mx2MtConstants.MX_OBJECT); String dt = "";
if (mxCamt05400102 == null || mxCamt05400102.getBkToCstmrDbtCdtNtfctn() == null) { String amt = "";
return; String ccy = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String dateStr = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.ValDt.Dt");
if (StringUtil.isNotEmpty(dateStr)) {
XMLGregorianCalendar XmlDt = DatatypeFactory.newInstance().newXMLGregorianCalendar(dateStr);
dt = DateUtil.format(XmlDt, "yyMMdd");
} }
BankToCustomerDebitCreditNotificationV02 bkToCstmrDbtCdtNtfctn = mxCamt05400102.getBkToCstmrDbtCdtNtfctn(); String amtStr = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.Amt");
List<AccountNotification2> ntfctnList = bkToCstmrDbtCdtNtfctn.getNtfctn(); String ccyStr = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.Amt@Ccy");
if (ntfctnList != null && ntfctnList.size() > 0) { if (StringUtil.isNotEmpty(amtStr)&&StringUtil.isNotEmpty(ccyStr)) {
AccountNotification2 ntfctn = ntfctnList.get(0); amt = NumberUtil.formatAmt(new BigDecimal(amtStr), ccyStr);
List<ReportEntry2> ntryList = ntfctn.getNtry(); ccy = ccyStr;
if (ntryList != null && ntryList.size() > 0) { map.put("field32A",dt+ccy+amt);
ReportEntry2 ntry = ntryList.get(0);
String dateStr = "";
if (ntry.getValDt() != null) {
dateStr = DateUtil.format(ntry.getValDt().getDt(), "yyMMdd");
}
String ccy = "";
String amtStr = "";
ActiveOrHistoricCurrencyAndAmount amt = ntry.getAmt();
if (amt != null) {
ccy = amt.getCcy();
amtStr = NumberUtil.formatAmt(amt.getValue(), ccy);
}
map.put("field32A", dateStr+ccy+amtStr);
}
} }
} catch (Exception e) { } catch (Exception e) {
throw new SwiftException("ERROR", e.getMessage()); throw new SwiftException("ERROR", e.getMessage());
} }
} }
} }
...@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.exception.SwiftException; ...@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.util.StringUtil; import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxCamt05400102; import com.prowidesoftware.swift.model.mx.MxCamt05400102;
import com.prowidesoftware.swift.model.mx.dic.*; import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -32,54 +33,45 @@ public class Field50aGenerate extends AbstractMx2MtFieldsGenerate { ...@@ -32,54 +33,45 @@ public class Field50aGenerate extends AbstractMx2MtFieldsGenerate {
return; return;
} }
try { try {
TransactionParty2 rltdPties = getTransactionParty2(); Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
if (rltdPties == null) {
return;
}
String field50aOption = ""; String field50aOption = "";
String field50a = ""; String field50a = "";
PartyIdentification32 dbtr = rltdPties.getDbtr(); String bicCode = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Id.OrgId.BICOrBEI");
if (dbtr != null) { String Nm = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Nm");
if (dbtr.getId() != null if(StringUtil.isNotEmpty(bicCode)){
&& dbtr.getId().getOrgId() != null field50aOption = "A";
&& !StringUtil.isEmpty(dbtr.getId().getOrgId().getBICOrBEI())) { String account = getMtFormatAccount2();
field50aOption = "A"; if (StringUtil.isNotEmpty(account)) {
String bicCode = dbtr.getId().getOrgId().getBICOrBEI(); field50a = account + Mx2MtConstants.NEW_LINE + bicCode;
String account = getMtFormatAccount(rltdPties.getDbtrAcct()); } else {
if (StringUtil.isNotEmpty(account)) { field50a = bicCode;
field50a = account + Mx2MtConstants.NEW_LINE + bicCode; }
} else { }else if(StringUtil.isNotEmpty(Nm)){
field50a = bicCode; field50aOption = "K";
} String nameAddr = "";
} else if (!StringUtil.isEmpty(dbtr.getNm())) { int adrLineCounts = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.PstlAdr.AdrLine");
field50aOption = "K"; if(adrLineCounts>0){
String nameAddr = ""; for (int i=0; i<adrLineCounts; i++) {
PostalAddress6 pstlAdr = dbtr.getPstlAdr(); if (i == 4) {
if (pstlAdr != null) { break;
List<String> adrLineList = pstlAdr.getAdrLine(); }
if (adrLineList.size() > 0) { String adrLine = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.PstlAdr.AdrLine("+i+")");
for (int i=0; i<adrLineList.size(); i++) { if (adrLine.length() > 35) {
if (i == 4) { adrLine = adrLine.substring(0, 35);
break; }
} if (i == 0) {
String adrLine = adrLineList.get(i); nameAddr += adrLine;
if (adrLine.length() > 35) { } else {
adrLine = adrLine.substring(0, 35); nameAddr += Mx2MtConstants.NEW_LINE+adrLine;
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE+adrLine;
}
}
} }
} }
String account = getMtFormatAccount(rltdPties.getDbtrAcct());
if (!StringUtil.isEmpty(account)) { }
field50a = account + Mx2MtConstants.NEW_LINE + nameAddr;; String account = getMtFormatAccount2();
} else { if (StringUtil.isNotEmpty(account)) {
field50a = nameAddr; field50a = account + Mx2MtConstants.NEW_LINE + nameAddr;;
} } else {
field50a = nameAddr;
} }
} }
if (StringUtil.isNotEmpty(field50aOption) && StringUtil.isNotEmpty(field50a)) { if (StringUtil.isNotEmpty(field50aOption) && StringUtil.isNotEmpty(field50a)) {
...@@ -90,35 +82,22 @@ public class Field50aGenerate extends AbstractMx2MtFieldsGenerate { ...@@ -90,35 +82,22 @@ public class Field50aGenerate extends AbstractMx2MtFieldsGenerate {
throw new SwiftException("ERROR", e.getMessage()); throw new SwiftException("ERROR", e.getMessage());
} }
} }
private String getMtFormatAccount2(){
private TransactionParty2 getTransactionParty2() { Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
try { String account = "";
TransactionParty2 rltdPties = null; String otherId = "";
MxCamt05400102 mxCamt05400102 = (MxCamt05400102)map.get(Mx2MtConstants.MX_OBJECT); String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.DbtrAcct.Id.IBAN");
if (mxCamt05400102 == null || mxCamt05400102.getBkToCstmrDbtCdtNtfctn() == null) { if(StringUtil.isEmpty(iban)){
return null; otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.DbtrAcct.Id.Othr.SchmeNm.Cd");
} if(StringUtil.isEmpty(otherId)){
BankToCustomerDebitCreditNotificationV02 bkToCstmrDbtCdtNtfctn = mxCamt05400102.getBkToCstmrDbtCdtNtfctn(); otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.DbtrAcct.Id.Othr.Id");
List<AccountNotification2> ntfctnList = bkToCstmrDbtCdtNtfctn.getNtfctn();
if (ntfctnList != null && ntfctnList.size() > 0) {
AccountNotification2 ntfctn = ntfctnList.get(0);
List<ReportEntry2> ntryList = ntfctn.getNtry();
if (ntryList != null && ntryList.size() > 0) {
ReportEntry2 ntry = ntryList.get(0);
List<EntryDetails1> ntryDtlsList = ntry.getNtryDtls();
if (ntryDtlsList != null && ntryDtlsList.size() > 0) {
EntryDetails1 ntryDtls = ntryDtlsList.get(0);
List<EntryTransaction2> txDtlsList = ntryDtls.getTxDtls();
if (txDtlsList != null && txDtlsList.size() > 0) {
EntryTransaction2 txDtls = txDtlsList.get(0);
rltdPties = txDtls.getRltdPties();
}
}
}
} }
return rltdPties;
} catch (Exception e) {
throw new SwiftException("ERROR", e.getMessage());
} }
if (StringUtil.isNotEmpty(iban)) {
account = "/"+iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH"+otherId;
}
return account;
} }
} }
...@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.exception.SwiftException; ...@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.util.StringUtil; import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxCamt05400102; import com.prowidesoftware.swift.model.mx.MxCamt05400102;
import com.prowidesoftware.swift.model.mx.dic.*; import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -18,50 +19,38 @@ public class Field52aGenerate extends AbstractMx2MtFieldsGenerate { ...@@ -18,50 +19,38 @@ public class Field52aGenerate extends AbstractMx2MtFieldsGenerate {
@Override @Override
public void fieldsGenerate() throws SwiftException { public void fieldsGenerate() throws SwiftException {
try { try {
BranchAndFinancialInstitutionIdentification4 crDrTrAgt = getCrDrTrAgt(); Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
if (crDrTrAgt == null) {
return;
}
String field52aOption = ""; String field52aOption = "";
String field52a = ""; String field52a = "";
FinancialInstitutionIdentification7 finInstnId = crDrTrAgt.getFinInstnId(); String bicCode = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.DbtrAgt.FinInstnId.BIC");
if (finInstnId != null) { String memberId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.DbtrAgt.FinInstnId.ClrSysMmbId.MmbId");
String bicCode = finInstnId.getBIC(); String nm = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.DbtrAgt.FinInstnId.Nm");
String memberId = ""; if (StringUtil.isNotEmpty(bicCode)) {
ClearingSystemMemberIdentification2 clrSysMmbId = finInstnId.getClrSysMmbId(); field52aOption = "A";
if (clrSysMmbId != null) { if (StringUtil.isNotEmpty(memberId)) {
memberId = clrSysMmbId.getMmbId(); field52a = "/" + memberId + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field52a = bicCode;
} }
if (StringUtil.isNotEmpty(bicCode)) { }else if(StringUtil.isNotEmpty(nm)){
field52aOption = "A"; field52aOption = "D";
if (StringUtil.isNotEmpty(memberId)) { if (StringUtil.isNotEmpty(memberId)) {
field52a = "/" + memberId + Mx2MtConstants.NEW_LINE + bicCode; field52a = "/" + memberId;
} else { }
field52a = bicCode; int adrLineCount = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.DbtrAgt.FinInstnId.PstlAdr.AdrLine");
} if(adrLineCount>0){
} else if (!StringUtil.isEmpty(finInstnId.getNm())){ for (int i=0; i<adrLineCount; i++) {
field52aOption = "D"; if (i == 4) {
if (StringUtil.isNotEmpty(memberId)) { break;
field52a = "/" + memberId; }
} String adrLine = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.DbtrAgt.FinInstnId.PstlAdr.AdrLine("+i+")");
PostalAddress6 pstlAdr = finInstnId.getPstlAdr(); if (adrLine.length() > 35) {
if (pstlAdr != null) { adrLine = adrLine.substring(0, 35);
List<String> adrLineList = pstlAdr.getAdrLine(); }
if (adrLineList.size() > 0) { if (i==0 && StringUtil.isEmpty(field52a)) {
for (int i=0; i<adrLineList.size(); i++) { field52a += adrLine;
if (i == 4) { } else {
break; field52a += Mx2MtConstants.NEW_LINE+adrLine;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i==0 && StringUtil.isEmpty(field52a)) {
field52a += adrLine;
} else {
field52a += Mx2MtConstants.NEW_LINE+adrLine;
}
}
} }
} }
} }
...@@ -74,45 +63,4 @@ public class Field52aGenerate extends AbstractMx2MtFieldsGenerate { ...@@ -74,45 +63,4 @@ public class Field52aGenerate extends AbstractMx2MtFieldsGenerate {
throw new SwiftException("ERROR", e.getMessage()); throw new SwiftException("ERROR", e.getMessage());
} }
} }
private BranchAndFinancialInstitutionIdentification4 getCrDrTrAgt() {
try {
BranchAndFinancialInstitutionIdentification4 crDrTrAgt = null;
MxCamt05400102 mxCamt05400102 = (MxCamt05400102)map.get(Mx2MtConstants.MX_OBJECT);
if (mxCamt05400102 == null || mxCamt05400102.getBkToCstmrDbtCdtNtfctn() == null) {
return null;
}
BankToCustomerDebitCreditNotificationV02 bkToCstmrDbtCdtNtfctn = mxCamt05400102.getBkToCstmrDbtCdtNtfctn();
List<AccountNotification2> ntfctnList = bkToCstmrDbtCdtNtfctn.getNtfctn();
if (ntfctnList != null && ntfctnList.size() > 0) {
AccountNotification2 ntfctn = ntfctnList.get(0);
List<ReportEntry2> ntryList = ntfctn.getNtry();
if (ntryList != null && ntryList.size() > 0) {
ReportEntry2 ntry = ntryList.get(0);
List<EntryDetails1> ntryDtlsList = ntry.getNtryDtls();
if (ntryDtlsList != null && ntryDtlsList.size() > 0) {
EntryDetails1 ntryDtls = ntryDtlsList.get(0);
List<EntryTransaction2> txDtlsList = ntryDtls.getTxDtls();
if (txDtlsList != null && txDtlsList.size() > 0) {
EntryTransaction2 txDtls = txDtlsList.get(0);
TransactionAgents2 rltdAgts = txDtls.getRltdAgts();
if (rltdAgts != null) {
/*String mtType = (String)map.get("mtType");
if (Mx2MtConstants.MT_TYPE_900.equals(mtType)) {
crDrTrAgt = rltdAgts.getDbtrAgt();
} else if (Mx2MtConstants.MT_TYPE_910.equals(mtType)) {
crDrTrAgt = rltdAgts.getCdtrAgt();
}*/
crDrTrAgt = rltdAgts.getDbtrAgt();
}
}
}
}
}
return crDrTrAgt;
} catch (Exception e) {
logger.error(e.getMessage());
throw new SwiftException("ERROR", "Convert MT900/910 Field52a error");
}
}
} }
...@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.exception.SwiftException; ...@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.util.StringUtil; import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxCamt05400102; import com.prowidesoftware.swift.model.mx.MxCamt05400102;
import com.prowidesoftware.swift.model.mx.dic.*; import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -22,50 +23,38 @@ public class Field56aGenerate extends AbstractMx2MtFieldsGenerate { ...@@ -22,50 +23,38 @@ public class Field56aGenerate extends AbstractMx2MtFieldsGenerate {
return; return;
} }
try { try {
BranchAndFinancialInstitutionIdentification4 intrmyAgt1 = getIntrmyAgt1(); Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
if (intrmyAgt1 == null) {
return;
}
String field56aOption = ""; String field56aOption = "";
String field56a = ""; String field56a = "";
FinancialInstitutionIdentification7 finInstnId = intrmyAgt1.getFinInstnId(); String bicCode = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.IntrmyAgt1.FinInstnId.BIC");
if (finInstnId != null) { String memberId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.IntrmyAgt1.FinInstnId.ClrSysMmbId.MmbId");
String bicCode = finInstnId.getBIC(); String nm = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.IntrmyAgt1.FinInstnId.Nm");
String memberId = ""; if (StringUtil.isNotEmpty(bicCode)) {
ClearingSystemMemberIdentification2 clrSysMmbId = finInstnId.getClrSysMmbId(); field56aOption = "A";
if (clrSysMmbId != null) { if (StringUtil.isNotEmpty(memberId)) {
memberId = clrSysMmbId.getMmbId(); field56a = "/" + memberId + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field56a = bicCode;
} }
if (StringUtil.isNotEmpty(bicCode)) { }else if(StringUtil.isNotEmpty(nm)){
field56aOption = "A"; field56aOption = "D";
if (StringUtil.isNotEmpty(memberId)) { if (StringUtil.isNotEmpty(memberId)) {
field56a = "/" + memberId + Mx2MtConstants.NEW_LINE + bicCode; field56a = "/" + memberId;
} else { }
field56a = bicCode; int adrLineCount = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.IntrmyAgt1.FinInstnId.PstlAdr.AdrLine");
} if(adrLineCount>0){
} else if (!StringUtil.isEmpty(finInstnId.getNm())){ for (int i=0; i<adrLineCount; i++) {
field56aOption = "D"; if (i == 4) {
if (StringUtil.isNotEmpty(memberId)) { break;
field56a = "/" + memberId; }
} String adrLine = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.IntrmyAgt1.FinInstnId.PstlAdr.AdrLine("+i+")");
PostalAddress6 pstlAdr = finInstnId.getPstlAdr(); if (adrLine.length() > 35) {
if (pstlAdr != null) { adrLine = adrLine.substring(0, 35);
List<String> adrLineList = pstlAdr.getAdrLine(); }
if (adrLineList.size() > 0) { if (i==0 && StringUtil.isEmpty(field56a)) {
for (int i=0; i<adrLineList.size(); i++) { field56a += adrLine;
if (i == 4) { } else {
break; field56a += Mx2MtConstants.NEW_LINE+adrLine;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i==0 && StringUtil.isEmpty(field56a)) {
field56a += adrLine;
} else {
field56a += Mx2MtConstants.NEW_LINE+adrLine;
}
}
} }
} }
} }
...@@ -78,38 +67,4 @@ public class Field56aGenerate extends AbstractMx2MtFieldsGenerate { ...@@ -78,38 +67,4 @@ public class Field56aGenerate extends AbstractMx2MtFieldsGenerate {
throw new SwiftException("ERROR", e.getMessage()); throw new SwiftException("ERROR", e.getMessage());
} }
} }
private BranchAndFinancialInstitutionIdentification4 getIntrmyAgt1() {
try {
BranchAndFinancialInstitutionIdentification4 intrmyAgt1 = null;
MxCamt05400102 mxCamt05400102 = (MxCamt05400102)map.get(Mx2MtConstants.MX_OBJECT);
if (mxCamt05400102 == null || mxCamt05400102.getBkToCstmrDbtCdtNtfctn() == null) {
return null;
}
BankToCustomerDebitCreditNotificationV02 bkToCstmrDbtCdtNtfctn = mxCamt05400102.getBkToCstmrDbtCdtNtfctn();
List<AccountNotification2> ntfctnList = bkToCstmrDbtCdtNtfctn.getNtfctn();
if (ntfctnList != null && ntfctnList.size() > 0) {
AccountNotification2 ntfctn = ntfctnList.get(0);
List<ReportEntry2> ntryList = ntfctn.getNtry();
if (ntryList != null && ntryList.size() > 0) {
ReportEntry2 ntry = ntryList.get(0);
List<EntryDetails1> ntryDtlsList = ntry.getNtryDtls();
if (ntryDtlsList != null && ntryDtlsList.size() > 0) {
EntryDetails1 ntryDtls = ntryDtlsList.get(0);
List<EntryTransaction2> txDtlsList = ntryDtls.getTxDtls();
if (txDtlsList != null && txDtlsList.size() > 0) {
EntryTransaction2 txDtls = txDtlsList.get(0);
TransactionAgents2 rltdAgts = txDtls.getRltdAgts();
if (rltdAgts != null) {
intrmyAgt1 = rltdAgts.getIntrmyAgt1();
}
}
}
}
}
return intrmyAgt1;
} catch (Exception e) {
throw new SwiftException("ERROR", e.getMessage());
}
}
} }
...@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.exception.SwiftException; ...@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.util.StringUtil; import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxCamt05400102; import com.prowidesoftware.swift.model.mx.MxCamt05400102;
import com.prowidesoftware.swift.model.mx.dic.*; import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -19,12 +20,10 @@ public class Field72Generate extends AbstractMx2MtFieldsGenerate { ...@@ -19,12 +20,10 @@ public class Field72Generate extends AbstractMx2MtFieldsGenerate {
public void fieldsGenerate() throws SwiftException { public void fieldsGenerate() throws SwiftException {
try { try {
String field72 = ""; String field72 = "";
EntryTransaction2 txDtls = getEntryTransaction2(); Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
if (txDtls != null) { String AddtlTxInf = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "Ntfctn.Ntry.NtryDtls.TxDtls.AddtlTxInf");
String addtLtxnInf = txDtls.getAddtlTxInf(); if(StringUtil.isNotEmpty(AddtlTxInf)){
if (StringUtil.isNotEmpty(addtLtxnInf)) { field72 = StringUtil.getStringByEnter(AddtlTxInf, 35, 6);
field72 = StringUtil.getStringByEnter(addtLtxnInf, 35, 6);
}
} }
map.put("field72", field72); map.put("field72", field72);
} catch (Exception e) { } catch (Exception e) {
...@@ -32,35 +31,4 @@ public class Field72Generate extends AbstractMx2MtFieldsGenerate { ...@@ -32,35 +31,4 @@ public class Field72Generate extends AbstractMx2MtFieldsGenerate {
throw new SwiftException("ERROR", e.getMessage()); throw new SwiftException("ERROR", e.getMessage());
} }
} }
private EntryTransaction2 getEntryTransaction2() {
try {
EntryTransaction2 txDtls = null;
MxCamt05400102 mxCamt05400102 = (MxCamt05400102)map.get(Mx2MtConstants.MX_OBJECT);
if (mxCamt05400102 == null || mxCamt05400102.getBkToCstmrDbtCdtNtfctn() == null) {
return null;
}
BankToCustomerDebitCreditNotificationV02 bkToCstmrDbtCdtNtfctn = mxCamt05400102.getBkToCstmrDbtCdtNtfctn();
List<AccountNotification2> ntfctnList = bkToCstmrDbtCdtNtfctn.getNtfctn();
if (ntfctnList != null && ntfctnList.size() > 0) {
AccountNotification2 ntfctn = ntfctnList.get(0);
List<ReportEntry2> ntryList = ntfctn.getNtry();
if (ntryList != null && ntryList.size() > 0) {
ReportEntry2 ntry = ntryList.get(0);
List<EntryDetails1> ntryDtlsList = ntry.getNtryDtls();
if (ntryDtlsList != null && ntryDtlsList.size() > 0) {
EntryDetails1 ntryDtls = ntryDtlsList.get(0);
List<EntryTransaction2> txDtlsList = ntryDtls.getTxDtls();
if (txDtlsList != null && txDtlsList.size() > 0) {
return txDtlsList.get(0);
}
}
}
}
return txDtls;
} catch (Exception e) {
logger.error(e.getMessage());
throw new SwiftException("ERROR", e.getMessage());
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment