Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.kcs.service.impl; import com.kcs.core.utilities.CollectionUtil; import com.kcs.core.utilities.StringUtil; import com.kcs.core.utilities.Utility; import com.kcs.dao.DatasetIpiDao; import com.kcs.dao.DatasetPtxDao; import com.kcs.dao.HeadGenXMLControlDao; import com.kcs.service.GenerateXml2Service; import com.kcs.genxml.beans.ptx.*; import com.kcs.genxml.beans.ipi.*; import com.kcs.model.Datasetipi; import com.kcs.model.Datasetptx; import com.kcs.model.HeadGenXMLControl; import java.util.ArrayList; import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.Predicate; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * * @author Sarawut */ @Service("generateXml2Service") public class GenerateXml2ServiceImpl extends Utility implements GenerateXml2Service { private final Logger logger = Logger.getLogger(GenerateXml2ServiceImpl.class); private final com.kcs.genxml.beans.ptx.ObjectFactory ptxOf = new com.kcs.genxml.beans.ptx.ObjectFactory(); private final com.kcs.genxml.beans.ipi.ObjectFactory ipiOf = new com.kcs.genxml.beans.ipi.ObjectFactory(); @Autowired private HeadGenXMLControlDao headDao; @Autowired private DatasetPtxDao ptxDao; @Autowired private DatasetIpiDao ipiDao; // <editor-fold defaultstate="collapsed" desc="ptx"> public byte[] generateXmlPtx(String datasetDate, String category) throws Exception { try { List<Datasetptx> mainList = ptxDao.findMainList(datasetDate, category); if (CollectionUtil.isEmpty(mainList)) { logger.error("not found slb main list"); return new byte[0]; } Datasetptx obj = mainList.get(0); DSPTX dsptx = ptxOf.createDSPTX(); HeadGenXMLControl head = headDao.getHeadGenXMLControlByDatasetCode("DS_PTX"); if (head != null) { dsptx.setName(head.getAttributesName()); dsptx.setType(head.getAttributesType()); dsptx.setSchemaVersion(head.getAttributesSchemaVersion()); } com.kcs.genxml.beans.ptx.DataSetCommonHeader dataSetCommonHeader = ptxOf.createDataSetCommonHeader(); dataSetCommonHeader.setDataSetDate(getXMLGregorianCalendarDate(obj.getDataSetDate())); dataSetCommonHeader.setOrganizationId(obj.getOrgId()); DSPTX.DSPTXHeader dSPTXHeader = ptxOf.createDSPTXDSPTXHeader(); dSPTXHeader.setDataSubmissionPeriod(obj.getDataSubPrd()); DSPTX.DSPTXContent content = ptxOf.createDSPTXDSPTXContent(); for (Datasetptx main : mainList) { nullToEmptyString(main); DSPTX.DSPTXContent.ContentRecordGroup contentRecordGroup = ptxOf .createDSPTXDSPTXContentContentRecordGroup(); contentRecordGroup.setReceivePaymentTransactionType(main.getTranType()); contentRecordGroup.setReceivePaymentItemType(main.getItemType()); contentRecordGroup.setReceivePaymentItemDescription(main.getItemDesc()); contentRecordGroup .setReceivePaymentTransactionDate(getXMLGregorianCalendarDate(main.getTranDate())); contentRecordGroup.setInvolvedPartyName(main.getIpName()); contentRecordGroup.setCountryIdOfInvolvedParty(main.getCtryIp()); contentRecordGroup.setPaymentMethod(main.getPymtMethd()); contentRecordGroup.setCurrencyId(com.kcs.genxml.beans.ptx.MV0072.fromValue(main.getCurr())); contentRecordGroup.setTransactionAmountInForeignCurrency(getXmlString(main.getTranAmt())); contentRecordGroup.setReceivePaymentItemTypeInfo(getRecievePaymentItemTypeInfo(main)); content.getContentRecordGroup().add(contentRecordGroup); } dsptx.setCommonHeader(dataSetCommonHeader); dsptx.setDSPTXHeader(dSPTXHeader); dsptx.setDSPTXContent(content); return generateToBytes(dsptx); } catch (Exception ex) { ex.printStackTrace(); throw ex; } } private DSPTX.DSPTXContent.ContentRecordGroup.ReceivePaymentItemTypeInfo getRecievePaymentItemTypeInfo( Datasetptx main) throws Exception { DSPTX.DSPTXContent.ContentRecordGroup.ReceivePaymentItemTypeInfo info = ptxOf .createDSPTXDSPTXContentContentRecordGroupReceivePaymentItemTypeInfo(); String itemType = main.getItemType(); if ("268022".equals(itemType) || "268027".equals(itemType)) { DSPTX.DSPTXContent.ContentRecordGroup.ReceivePaymentItemTypeInfo.PortfolioInvestmentDetails details = ptxOf .createDSPTXDSPTXContentContentRecordGroupReceivePaymentItemTypeInfoPortfolioInvestmentDetails(); details.setDebtInstrumentType(main.getDebtInsmType()); details.setIsinCode(main.getIsinCode()); details.setDebtInstrumentName(main.getDebtInsmName()); details.setIssuerOrInvestedOrganizationName(main.getIssuOrgName()); details.setCountryIdOfIssuerOrInvestedOrganization( com.kcs.genxml.beans.ptx.MV0025.fromValue(main.getCtryIssuOrg())); details.setIssueDate(getXMLGregorianCalendarDate(main.getIssuDate())); details.setMaturityDate(getXmlDateFormatString(main.getMatDate())); details.setOriginalTerm(getXmlString(main.getOrigTerm())); details.setOriginalTermUnit(main.getOrigTermUnit()); details.setCouponRate(getXmlString(main.getCoupRate())); details.setIntentionCountryId(main.getIntenCtry()); info.setPortfolioInvestmentDetails(details); } else if ("268016".equals(itemType) || "268023".equals(itemType) || "268028".equals(itemType)) { DSPTX.DSPTXContent.ContentRecordGroup.ReceivePaymentItemTypeInfo.TradeLoanDetails details = ptxOf .createDSPTXDSPTXContentContentRecordGroupReceivePaymentItemTypeInfoTradeLoanDetails(); details.setIssuerOrInvestedOrganizationName(main.getIssuOrgName()); details.setCountryIdOfIssuerOrInvestedOrganization( com.kcs.genxml.beans.ptx.MV0025.fromValue(main.getCtryIssuOrg())); info.setTradeLoanDetails(details); } else if ("268012".equals(itemType)) { DSPTX.DSPTXContent.ContentRecordGroup.ReceivePaymentItemTypeInfo.SellForeignCurrencySecurityDetails details = ptxOf .createDSPTXDSPTXContentContentRecordGroupReceivePaymentItemTypeInfoSellForeignCurrencySecurityDetails(); details.setInvolvedPartyId(main.getIpId()); details.setDebtInstrumentType(main.getDebtInsmType()); details.setIsinCode(main.getIsinCode()); details.setDebtInstrumentName(main.getDebtInsmName()); details.setIssuerOrInvestedOrganizationName(main.getIssuOrgName()); details.setCountryIdOfIssuerOrInvestedOrganization( com.kcs.genxml.beans.ptx.MV0025.fromValue(main.getCtryIssuOrg())); details.setIssueDate(getXMLGregorianCalendarDate(main.getIssuDate())); details.setMaturityDate(getXmlDateFormatString(main.getMatDate())); details.setOriginalTerm(getXmlString(main.getOrigTerm())); details.setOriginalTermUnit(main.getOrigTermUnit()); details.setCouponRate(getXmlString(main.getCoupRate())); details.setIntentionCountryId(main.getIntenCtry()); details.setUnitOfTransaction(getXmlString(main.getUnitTrans())); details.setSellForeignCurrencySecurityTransactionAmountInBahtEquivalent( getXmlString(main.getTranAmt())); info.setSellForeignCurrencySecurityDetails(details); } else if ("268015".equals(itemType)) { DSPTX.DSPTXContent.ContentRecordGroup.ReceivePaymentItemTypeInfo.ExportBillAdjustmentDetails details = ptxOf .createDSPTXDSPTXContentContentRecordGroupReceivePaymentItemTypeInfoExportBillAdjustmentDetails(); details.setInvolvedPartyId(main.getIpId()); details.setDefaultedBillPurchaseDate(getXMLGregorianCalendarDate(main.getPurchDate())); info.setExportBillAdjustmentDetails(details); } return info; } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="ipi"> @Override public byte[] generateXmlIpi(String datasetDate, String category) throws Exception { try { List<Datasetipi> mainList = ipiDao.findMainList(datasetDate, category); if (CollectionUtil.isEmpty(mainList)) { logger.error("not found slb main list"); return new byte[0]; } Datasetipi obj = mainList.get(0); DSIPI dsipi = ipiOf.createDSIPI(); HeadGenXMLControl head = headDao.getHeadGenXMLControlByDatasetCode("DS_IPI"); if (head != null) { dsipi.setName(head.getAttributesName()); dsipi.setType(head.getAttributesType()); dsipi.setSchemaVersion(head.getAttributesSchemaVersion()); } com.kcs.genxml.beans.ipi.DataSetCommonHeader dataSetCommonHeader = ipiOf.createDataSetCommonHeader(); dataSetCommonHeader.setDataSetDate(getXMLGregorianCalendarDate(obj.getDataSetDate())); dataSetCommonHeader.setOrganizationId(obj.getOrgId()); DSIPI.DSIPIHeader dSIPIHeader = ipiOf.createDSIPIDSIPIHeader(); DSIPI.DSIPIContent content = ipiOf.createDSIPIDSIPIContent(); List<Datasetipi> thaiNationalityIndividualDetailsList = ipiDao .findChildThaiNationalityIndividualDetailsList(datasetDate); List<Datasetipi> nonThaiNationalityIndividualDetailsList = ipiDao .findChildNonThaiNationalityIndividualDetailsList(datasetDate); List<Datasetipi> thaiOrganizationDetailsList = ipiDao.findChildThaiOrganizationDetailsList(datasetDate); List<Datasetipi> nonThaiOrganizationDetailsList = ipiDao .findChildNonThaiOrganizationDetailsList(datasetDate); List<Datasetipi> otherIdentificationDetailsList = ipiDao .findChildOtherIdentificationDetailsList(datasetDate); List<Datasetipi> relatedInvolvedPartyDetailsList = ipiDao .findChildRelatedInvolvedPartyDetailsList(datasetDate); for (Datasetipi main : mainList) { nullToEmptyString(main); DSIPI.DSIPIContent.ContentRecordGroup contentRecordGroup = ipiOf .createDSIPIDSIPIContentContentRecordGroup(); contentRecordGroup.setInvolvedPartyType(main.getIpType()); contentRecordGroup.setNationality(com.kcs.genxml.beans.ipi.MV0025.fromValue(main.getNat())); contentRecordGroup.setCountryOfResidence(com.kcs.genxml.beans.ipi.MV0025.fromValue(main.getCtry())); DSIPI.DSIPIContent.ContentRecordGroup.InvolvedPartyInfo involvedPartyInfo = ipiOf .createDSIPIDSIPIContentContentRecordGroupInvolvedPartyInfo(); List<Datasetipi> subList = filterChildIpi(main, thaiNationalityIndividualDetailsList); if (!subList.isEmpty()) { Datasetipi child = subList.get(0); nullToEmptyString(child); DSIPI.DSIPIContent.ContentRecordGroup.InvolvedPartyInfo.ThaiNationalityIndividualDetails thaiNationalityIndividualDetails = ipiOf .createDSIPIDSIPIContentContentRecordGroupInvolvedPartyInfoThaiNationalityIndividualDetails(); thaiNationalityIndividualDetails.setTitle(child.getTitl()); thaiNationalityIndividualDetails.setTitleThai(child.getTitlThai()); thaiNationalityIndividualDetails.setFirstName(child.getFirstName()); thaiNationalityIndividualDetails.setFirstNameThai(child.getFirstNameThai()); thaiNationalityIndividualDetails.setMiddleName(child.getMidName()); thaiNationalityIndividualDetails.setMiddleNameThai(child.getMidNameThai()); thaiNationalityIndividualDetails.setLastName(child.getLastName()); thaiNationalityIndividualDetails.setLastNameThai(child.getLastNameThai()); thaiNationalityIndividualDetails.setPersonalIdentificationNumber(child.getPersonalId()); thaiNationalityIndividualDetails.setTaxIdentificationNumber(child.getTaxId()); thaiNationalityIndividualDetails.setPassportNumber(child.getPassportNo()); thaiNationalityIndividualDetails.setBirthDate(getXmlDateFormatString(child.getBrthDate())); involvedPartyInfo.setThaiNationalityIndividualDetails(thaiNationalityIndividualDetails); } subList = filterChildIpi(main, nonThaiNationalityIndividualDetailsList); if (!subList.isEmpty()) { Datasetipi child = subList.get(0); nullToEmptyString(child); DSIPI.DSIPIContent.ContentRecordGroup.InvolvedPartyInfo.NonThaiNationalityIndividualDetails nonThaiNationalityIndividualDetails = ipiOf .createDSIPIDSIPIContentContentRecordGroupInvolvedPartyInfoNonThaiNationalityIndividualDetails(); nonThaiNationalityIndividualDetails.setTitle(child.getTitl()); nonThaiNationalityIndividualDetails.setTitleThai(child.getTitlThai()); nonThaiNationalityIndividualDetails.setFirstName(child.getFirstName()); nonThaiNationalityIndividualDetails.setFirstNameThai(child.getFirstNameThai()); nonThaiNationalityIndividualDetails.setMiddleName(child.getMidName()); nonThaiNationalityIndividualDetails.setMiddleNameThai(child.getMidNameThai()); nonThaiNationalityIndividualDetails.setLastName(child.getLastName()); nonThaiNationalityIndividualDetails.setLastNameThai(child.getLastNameThai()); nonThaiNationalityIndividualDetails.setPassportNumber(child.getPassportNo()); nonThaiNationalityIndividualDetails.setBirthDate(getXmlDateFormatString(child.getBrthDate())); involvedPartyInfo.setNonThaiNationalityIndividualDetails(nonThaiNationalityIndividualDetails); } subList = filterChildIpi(main, thaiOrganizationDetailsList); if (!subList.isEmpty()) { Datasetipi child = subList.get(0); nullToEmptyString(child); DSIPI.DSIPIContent.ContentRecordGroup.InvolvedPartyInfo.ThaiOrganizationDetails thaiOrganizationDetails = ipiOf .createDSIPIDSIPIContentContentRecordGroupInvolvedPartyInfoThaiOrganizationDetails(); thaiOrganizationDetails.setBoiFlag(child.getBoiFlag()); thaiOrganizationDetails.setPrimaryBusinessType(child.getBusType()); thaiOrganizationDetails.setJuristicIdentificationNumber(child.getJuristicId()); thaiOrganizationDetails .setJuristicRegisteredDate(getXmlDateFormatString(child.getJuristicDate())); thaiOrganizationDetails.setTaxIdentificationNumber(child.getTaxId()); thaiOrganizationDetails.setSwiftCode(child.getSwiftCode()); thaiOrganizationDetails.setTitle(child.getTitl()); thaiOrganizationDetails.setRegisteredBusinessName(child.getRegisBusName()); thaiOrganizationDetails.setTitleThai(child.getTitlThai()); thaiOrganizationDetails.setRegisteredBusinessNameThai(child.getRegisBusNameThai()); involvedPartyInfo.setThaiOrganizationDetails(thaiOrganizationDetails); } subList = filterChildIpi(main, nonThaiOrganizationDetailsList); if (!subList.isEmpty()) { Datasetipi child = subList.get(0); nullToEmptyString(child); DSIPI.DSIPIContent.ContentRecordGroup.InvolvedPartyInfo.NonThaiOrganizationDetails nonThaiOrganizationDetails = ipiOf .createDSIPIDSIPIContentContentRecordGroupInvolvedPartyInfoNonThaiOrganizationDetails(); nonThaiOrganizationDetails.setBoiFlag(child.getBoiFlag()); nonThaiOrganizationDetails.setPrimaryBusinessType(child.getBusType()); nonThaiOrganizationDetails.setSwiftCode(child.getSwiftCode()); nonThaiOrganizationDetails.setTitle(child.getTitl()); nonThaiOrganizationDetails.setRegisteredBusinessName(child.getRegisBusName()); nonThaiOrganizationDetails.setTitleThai(child.getTitlThai()); nonThaiOrganizationDetails.setRegisteredBusinessNameThai(child.getRegisBusNameThai()); involvedPartyInfo.setNonThaiOrganizationDetails(nonThaiOrganizationDetails); } contentRecordGroup.setInvolvedPartyInfo(involvedPartyInfo); subList = filterChildIpi(main, otherIdentificationDetailsList); DSIPI.DSIPIContent.ContentRecordGroup.OtherIdentificationInfo otherIdentificationInfo = ipiOf .createDSIPIDSIPIContentContentRecordGroupOtherIdentificationInfo(); for (Datasetipi child : subList) { nullToEmptyString(child); DSIPI.DSIPIContent.ContentRecordGroup.OtherIdentificationInfo.OtherIdentificationDetails otherIdentificationDetails = ipiOf .createDSIPIDSIPIContentContentRecordGroupOtherIdentificationInfoOtherIdentificationDetails(); if (StringUtil.isNotEmpty(child.getOthId())) { otherIdentificationDetails.setOtherIdentificationNumber(child.getOthId()); otherIdentificationDetails.setUniqueIdType(child.getIdType()); otherIdentificationInfo.getOtherIdentificationDetails().add(otherIdentificationDetails); } } contentRecordGroup.setOtherIdentificationInfo(otherIdentificationInfo); subList = filterChildIpi(main, relatedInvolvedPartyDetailsList); DSIPI.DSIPIContent.ContentRecordGroup.RelatedInvolvedPartyInfo relatedInvolvedPartyInfo = ipiOf .createDSIPIDSIPIContentContentRecordGroupRelatedInvolvedPartyInfo(); for (Datasetipi child : subList) { nullToEmptyString(child); DSIPI.DSIPIContent.ContentRecordGroup.RelatedInvolvedPartyInfo.RelatedInvolvedPartyDetails relatedInvolvedPartyDetails = ipiOf .createDSIPIDSIPIContentContentRecordGroupRelatedInvolvedPartyInfoRelatedInvolvedPartyDetails(); relatedInvolvedPartyDetails.setRelatedInvolvedPartyId(child.getRltdIp()); relatedInvolvedPartyDetails.setUniqueIdType(child.getRltdIpType()); relatedInvolvedPartyDetails.setIpIpRelationshipType(child.getIpIpRltnType()); relatedInvolvedPartyInfo.getRelatedInvolvedPartyDetails().add(relatedInvolvedPartyDetails); } contentRecordGroup.setRelatedInvolvedPartyInfo(relatedInvolvedPartyInfo); content.getContentRecordGroup().add(contentRecordGroup); } dsipi.setCommonHeader(dataSetCommonHeader); dsipi.setDSIPIHeader(dSIPIHeader); dsipi.setDSIPIContent(content); return generateToBytes(dsipi); } catch (Exception ex) { ex.printStackTrace(); throw ex; } } private List<Datasetipi> filterChildIpi(final Datasetipi main, List<Datasetipi> childList) { List<Datasetipi> result = new ArrayList<Datasetipi>(); final Predicate predicate = new Predicate() { @Override public boolean evaluate(Object o) { if (Utility.isNotNull(o)) { Datasetipi child = (Datasetipi) o; boolean result = (objEquals(main.getCustCode(), child.getCustCode())); return result; } return false; } }; result = (List<Datasetipi>) CollectionUtils.select(childList, predicate); return result; } // </editor-fold> }