From fd031f9bd22b508b51d5b67510652199b5322430 Mon Sep 17 00:00:00 2001 From: akulikov Date: Fri, 2 Sep 2022 18:03:27 +0300 Subject: [PATCH] reports-service, classes for reports (not complete) --- .../ReportsServiceApplication.java | 2 +- .../reports/AbstractReport.java | 85 +++++++++++++ .../reports/bt_17_1/ReportBR_0420315_P1.java | 66 +++++++++++ .../reports/bt_17_1/ReportBR_0420315_P2.java | 63 ++++++++++ .../reports/bt_17_2/ReportBR_0420317.java | 83 +++++++++++++ .../reports/bt_17_3/ReportBR_0420318.java | 112 ++++++++++++++++++ .../reports/bt_17_4/ReportBR_0420314_P1.java | 82 +++++++++++++ .../reports/bt_17_4/ReportBR_0420314_P2.java | 71 +++++++++++ .../reports/bt_17_5/ReportBR_0420312_P1.java | 77 ++++++++++++ .../reports/bt_17_5/ReportBR_0420312_P10.java | 59 +++++++++ .../reports/bt_17_5/ReportBR_0420312_P2.java | 43 +++++++ .../reports/bt_17_5/ReportBR_0420312_P3.java | 44 +++++++ .../reports/bt_17_5/ReportBR_0420312_P4.java | 36 ++++++ .../reports/bt_17_5/ReportBR_0420312_P5.java | 35 ++++++ .../reports/bt_17_5/ReportBR_0420312_P6.java | 35 ++++++ .../reports/bt_17_5/ReportBR_0420312_P8.java | 35 ++++++ .../services/ReportsService.java | 93 ++++++++++++--- .../xml_test/CustomLocalDateConverter.java | 32 ----- .../xml_test/FormattedLocalDateConverter.java | 37 ++++++ .../xml_test/RootElementForWrite.java | 2 +- 20 files changed, 1044 insertions(+), 48 deletions(-) create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/AbstractReport.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_1/ReportBR_0420315_P1.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_1/ReportBR_0420315_P2.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_2/ReportBR_0420317.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_3/ReportBR_0420318.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_4/ReportBR_0420314_P1.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_4/ReportBR_0420314_P2.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P1.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P10.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P2.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P3.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P4.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P5.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P6.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P8.java delete mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/CustomLocalDateConverter.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/FormattedLocalDateConverter.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/ReportsServiceApplication.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/ReportsServiceApplication.java index 9c9f83420..3fd498a1b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/ReportsServiceApplication.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/ReportsServiceApplication.java @@ -16,6 +16,6 @@ public class ReportsServiceApplication { System.exit(-1); } ReportsService reportsService = new ReportsService(); - reportsService.writeXML(null); + reportsService.writeXML(); } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/AbstractReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/AbstractReport.java new file mode 100644 index 000000000..7f81d2558 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/AbstractReport.java @@ -0,0 +1,85 @@ +package ru.spcex.clearing.reports_service.reports; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import com.thoughtworks.xstream.annotations.XStreamConverter; +import ru.spcex.clearing.reports_service.xml_test.FormattedLocalDateConverter; + +import java.time.LocalDate; + +/** + * Общая шапка (атрибуты) для всех отчетов + */ +public class AbstractReport { + + @XStreamAsAttribute + @XStreamAlias("version") + private String version; + + @XStreamAsAttribute + @XStreamAlias("code") + private String code; + + @XStreamAsAttribute + @XStreamAlias("name") + private String name; + + @XStreamAsAttribute + @XStreamAlias("startDate") + @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) + private LocalDate startDate; + + @XStreamAsAttribute + @XStreamAlias("endDate") + @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) + private LocalDate endDate; + + + public AbstractReport(String version, String code, String name, LocalDate startDate, LocalDate endDate) { + this.version = version; + this.code = code; + this.name = name; + this.startDate = startDate; + this.endDate = endDate; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public LocalDate getEndDate() { + return endDate; + } + + public void setEndDate(LocalDate endDate) { + this.endDate = endDate; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_1/ReportBR_0420315_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_1/ReportBR_0420315_P1.java new file mode 100644 index 000000000..46f64c450 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_1/ReportBR_0420315_P1.java @@ -0,0 +1,66 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_1; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +@XStreamAlias("report") +public class ReportBR_0420315_P1 extends AbstractReport { + + @XStreamAlias("rows") + private final List rows = new ArrayList<>(); + + public ReportBR_0420315_P1(LocalDate startDate, + LocalDate endDate) { + super("0.0.1", + "0420315", + "Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период", + startDate, + endDate); + } + + public List getRows() { + return rows; + } + + + @XStreamAlias("row") + public static class Info_0420315_P1 { + @XStreamAlias("company_id") + @XStreamAsAttribute + private String companyId; + + @XStreamAlias("company_fullName") + @XStreamAsAttribute + private String companyFullName; + + @XStreamAlias("listing_market") + @XStreamAsAttribute + private String listingMarket; + + @XStreamAlias("contract_qty") + @XStreamAsAttribute + private String contractQty; + + @XStreamAlias("liabilities_amount") + @XStreamAsAttribute + private String liabilitiesAmount; + + public Info_0420315_P1(String companyId, + String companyFullName, + String listingMarket, + String contractQty, + String liabilitiesAmount) { + this.companyId = companyId; + this.companyFullName = companyFullName; + this.listingMarket = listingMarket; + this.contractQty = contractQty; + this.liabilitiesAmount = liabilitiesAmount; + } + + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_1/ReportBR_0420315_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_1/ReportBR_0420315_P2.java new file mode 100644 index 000000000..e7cd1e9c8 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_1/ReportBR_0420315_P2.java @@ -0,0 +1,63 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_1; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; + +@XStreamAlias("report") +public class ReportBR_0420315_P2 extends AbstractReport { + + @XStreamAlias("total") + private final Info_0420315_P2 total; + + public ReportBR_0420315_P2(LocalDate startDate, LocalDate endDate, String contractQty, String liabilitiesAmount) { + super("0.0.1", + "0420315", + "Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период", + startDate, + endDate); + total = new Info_0420315_P2(contractQty, liabilitiesAmount); + } + + public Info_0420315_P2 getTotal() { + return total; + } + + + public static class Info_0420315_P2 { + @XStreamAlias("contract_qty") + @XStreamAsAttribute + private String contractQty; + + @XStreamAlias("liabilities_amount") + @XStreamAsAttribute + private String liabilitiesAmount; + + + public Info_0420315_P2(String contractQty, String liabilitiesAmount) { + this.contractQty = contractQty; + this.liabilitiesAmount = liabilitiesAmount; + } + + public String getContractQty() { + return contractQty; + } + + public void setContractQty(String contractQty) { + this.contractQty = contractQty; + } + + public String getLiabilitiesAmount() { + return liabilitiesAmount; + } + + public void setLiabilitiesAmount(String liabilitiesAmount) { + this.liabilitiesAmount = liabilitiesAmount; + } + + } + + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_2/ReportBR_0420317.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_2/ReportBR_0420317.java new file mode 100644 index 000000000..6dddc1217 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_2/ReportBR_0420317.java @@ -0,0 +1,83 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_2; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +@XStreamAlias("report") +public class ReportBR_0420317 extends AbstractReport { + + @XStreamAlias("rows") + private final List rows = new ArrayList<>(); + + public ReportBR_0420317(LocalDate startDate, LocalDate endDate) { + super("0.0.1", + "0420317", + "Сведения о предоставлении, прекращении, приостановке," + + " возобновлении допуска к клиринговому обслуживанию", + startDate, + endDate); + } + + public List getRows() { + return rows; + } + + + @XStreamAlias("row") + public static class Info_0420317 { + @XStreamAsAttribute + @XStreamAlias("relation_supplierId") + private String relationSupplierId; + + @XStreamAsAttribute + @XStreamAlias("relation_serviceId") + private String relationServiceId; + + @XStreamAsAttribute + @XStreamAlias("relation_serviceStatus") + private String relationServiceStatus; + + @XStreamAsAttribute + @XStreamAlias("relation_updatedAt") + private String relationUpdatedAt; + + @XStreamAsAttribute + @XStreamAlias("company_fullName") + private String companyFullName; + + @XStreamAsAttribute + @XStreamAlias("companySymbol_code") + private String companySymbolCode; + + @XStreamAsAttribute + @XStreamAlias("companyInfo_countryCode") + private String companyInfoCountryCode; + + @XStreamAsAttribute + @XStreamAlias("relation_comment") + private String relationComment; + + public Info_0420317(String relationSupplierId, + String relationServiceId, + String relationServiceStatus, + String relationUpdatedAt, + String companyFullName, + String companySymbolCode, + String companyInfoCountryCode, + String relationComment) { + this.relationSupplierId = relationSupplierId; + this.relationServiceId = relationServiceId; + this.relationServiceStatus = relationServiceStatus; + this.relationUpdatedAt = relationUpdatedAt; + this.companyFullName = companyFullName; + this.companySymbolCode = companySymbolCode; + this.companyInfoCountryCode = companyInfoCountryCode; + this.relationComment = relationComment; + } + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_3/ReportBR_0420318.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_3/ReportBR_0420318.java new file mode 100644 index 000000000..df5aedc3c --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_3/ReportBR_0420318.java @@ -0,0 +1,112 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_3; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +@XStreamAlias("report") +public class ReportBR_0420318 extends AbstractReport { + + @XStreamAlias("rows") + private final List rows = new ArrayList<>(); + + public ReportBR_0420318(LocalDate startDate, LocalDate endDate) { + super("0.0.3", + "0420318", + "Сведения о неисполненных обязательствах", + startDate, + endDate); + } + + public List getRows() { + return rows; + } + + + @XStreamAlias("row") + public static class Info_0420318 { + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_fullName") + private String liabilitiesClaimsAssetsFullName; + + @XStreamAsAttribute + @XStreamAlias("CompanySymbols_code") + private String companySymbolsCode; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_countryCode") + private String liabilitiesClaimsAssetsCountryCode; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_settlementDate") + private String liabilitiesClaimsAssetsSettlementDate; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_accountType") + private String liabilitiesClaimsAssetsAccountType; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_Contract") + private String liabilitiesClaimsAssetsContract; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsMoney_currencyCode") + private String liabilitiesClaimsMoneyCurrencyCode; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesAmount_amount") + private String liabilitiesAmountAmount; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsMoney_name") + private String liabilitiesClaimsMoneyName; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_liabilities") + private String liabilitiesClaimsAssetsLiabilities; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_comment") + private String liabilitiesClaimsAssetsComment; + + @XStreamAsAttribute + @XStreamAlias("companySymbol_value") + private String companySymbolValue; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_fullNames") + private String liabilitiesClaimsAssetsFullNames; + + public Info_0420318(String liabilitiesClaimsAssetsFullName, + String companySymbolsCode, + String liabilitiesClaimsAssetsCountryCode, + String liabilitiesClaimsAssetsSettlementDate, + String liabilitiesClaimsAssetsAccountType, + String liabilitiesClaimsAssetsContract, + String liabilitiesClaimsMoneyCurrencyCode, + String liabilitiesAmountAmount, + String liabilitiesClaimsMoneyName, + String liabilitiesClaimsAssetsLiabilities, + String liabilitiesClaimsAssetsComment, + String companySymbolValue, + String liabilitiesClaimsAssetsFullNames) { + this.liabilitiesClaimsAssetsFullName = liabilitiesClaimsAssetsFullName; + this.companySymbolsCode = companySymbolsCode; + this.liabilitiesClaimsAssetsCountryCode = liabilitiesClaimsAssetsCountryCode; + this.liabilitiesClaimsAssetsSettlementDate = liabilitiesClaimsAssetsSettlementDate; + this.liabilitiesClaimsAssetsAccountType = liabilitiesClaimsAssetsAccountType; + this.liabilitiesClaimsAssetsContract = liabilitiesClaimsAssetsContract; + this.liabilitiesClaimsMoneyCurrencyCode = liabilitiesClaimsMoneyCurrencyCode; + this.liabilitiesAmountAmount = liabilitiesAmountAmount; + this.liabilitiesClaimsMoneyName = liabilitiesClaimsMoneyName; + this.liabilitiesClaimsAssetsLiabilities = liabilitiesClaimsAssetsLiabilities; + this.liabilitiesClaimsAssetsComment = liabilitiesClaimsAssetsComment; + this.companySymbolValue = companySymbolValue; + this.liabilitiesClaimsAssetsFullNames = liabilitiesClaimsAssetsFullNames; + } + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_4/ReportBR_0420314_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_4/ReportBR_0420314_P1.java new file mode 100644 index 000000000..29be65e6f --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_4/ReportBR_0420314_P1.java @@ -0,0 +1,82 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_4; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +@XStreamAlias("report") +public class ReportBR_0420314_P1 extends AbstractReport { + + @XStreamAlias("rows") + private final List rows = new ArrayList<>(); + + public ReportBR_0420314_P1(LocalDate startDate, LocalDate endDate) { + super("0.0.1", + "0420314", + "Сведения об УК и операциях, проведенных по торговым счетам", + startDate, + endDate); + } + + public List getRows() { + return rows; + } + + + @XStreamAlias("partOne") + public static class Info_0420314_P1 { + @XStreamAsAttribute + @XStreamAlias("paymentInstruction_senderId") + private String paymentInstructionSenderId; + + @XStreamAsAttribute + @XStreamAlias("profileDocument_id") + private String profileDocumentId; + + @XStreamAsAttribute + @XStreamAlias("company_fullName") + private String companyFullName; + + @XStreamAsAttribute + @XStreamAlias("companySymbol_code") + private String companySymbolCode; + + @XStreamAsAttribute + @XStreamAlias("companySymbol_value") + private String companySymbolValue; + + @XStreamAsAttribute + @XStreamAlias("clearingMemberCategory_clearingMemberCategory") + private String clearingMemberCategoryClearingMemberCategory; + + @XStreamAsAttribute + @XStreamAlias("profileDocument_documentTypeAndValidFromDate") + private String profileDocumentDocumentTypeAndValidFromDate; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity") + private String liabilitiesClaimsAssetsLiabilitiesQuantity; + + public Info_0420314_P1(String paymentInstructionSenderId, + String profileDocumentId, + String companyFullName, + String companySymbolCode, + String companySymbolValue, + String clearingMemberCategoryClearingMemberCategory, + String profileDocumentDocumentTypeAndValidFromDate, + String liabilitiesClaimsAssetsLiabilitiesQuantity) { + this.paymentInstructionSenderId = paymentInstructionSenderId; + this.profileDocumentId = profileDocumentId; + this.companyFullName = companyFullName; + this.companySymbolCode = companySymbolCode; + this.companySymbolValue = companySymbolValue; + this.clearingMemberCategoryClearingMemberCategory = clearingMemberCategoryClearingMemberCategory; + this.profileDocumentDocumentTypeAndValidFromDate = profileDocumentDocumentTypeAndValidFromDate; + this.liabilitiesClaimsAssetsLiabilitiesQuantity = liabilitiesClaimsAssetsLiabilitiesQuantity; + } + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_4/ReportBR_0420314_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_4/ReportBR_0420314_P2.java new file mode 100644 index 000000000..2c27b00c7 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_4/ReportBR_0420314_P2.java @@ -0,0 +1,71 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_4; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +@XStreamAlias("report") +public class ReportBR_0420314_P2 extends AbstractReport { + + @XStreamAlias("rows") + private final List rows = new ArrayList<>(); + + public ReportBR_0420314_P2(LocalDate startDate, LocalDate endDate) { + super("0.0.1", + "0420314", + "Сведения об УК и операциях, проведенных по торговым счетам", + startDate, + endDate); + } + + public List getRows() { + return rows; + } + + + @XStreamAlias("partTwo") + public static class Info_0420314_P2 { + @XStreamAsAttribute + @XStreamAlias("paymentInstruction_senderId") + private String paymentInstructionSenderId; + + @XStreamAsAttribute + @XStreamAlias("profileDocument_id") + private String profileDocumentId; + + @XStreamAsAttribute + @XStreamAlias("accountBalance_openBalanceAmount") + private String accountBalanceOpenBalanceAmount; + + @XStreamAsAttribute + @XStreamAlias("paymentInstruction_creditLeg_amount") + private String paymentInstructionCreditLegAmount; + + @XStreamAsAttribute + @XStreamAlias("paymentInstruction_debitLeg_amount") + private String paymentInstructionDebitLegAmount; + + @XStreamAsAttribute + @XStreamAlias("accountBalance_closeBalanceAmount") + private String accountBalanceCloseBalanceAmount; + + public Info_0420314_P2(String paymentInstructionSenderId, + String profileDocumentId, + String accountBalanceOpenBalanceAmount, + String paymentInstructionCreditLegAmount, + String paymentInstructionDebitLegAmount, + String accountBalanceCloseBalanceAmount) { + this.paymentInstructionSenderId = paymentInstructionSenderId; + this.profileDocumentId = profileDocumentId; + this.accountBalanceOpenBalanceAmount = accountBalanceOpenBalanceAmount; + this.paymentInstructionCreditLegAmount = paymentInstructionCreditLegAmount; + this.paymentInstructionDebitLegAmount = paymentInstructionDebitLegAmount; + this.accountBalanceCloseBalanceAmount = accountBalanceCloseBalanceAmount; + } + + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P1.java new file mode 100644 index 000000000..a7cab0270 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P1.java @@ -0,0 +1,77 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_5; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; + +@XStreamAlias("report") +public class ReportBR_0420312_P1 extends AbstractReport { + + @XStreamAlias("partOne") + private final Info_0420312_P1 partOne; + + public ReportBR_0420312_P1(LocalDate startDate, + LocalDate endDate, + String liabilitiesClaimsAssetsCompanyId, + String liabilitiesClaimsAssetsFullName, + String companySymbolCode, + String companySymbolValue, + String companyInfoCountryCode, + String clearingMemberCategoryClearingMemberCategory) { + super("0.0.5", + "0420312", + "Сведения о клиринговом обеспечении", + startDate, + endDate); + partOne = new Info_0420312_P1(liabilitiesClaimsAssetsCompanyId, + liabilitiesClaimsAssetsFullName, + companySymbolCode, + companySymbolValue, + companyInfoCountryCode, + clearingMemberCategoryClearingMemberCategory); + } + + public static class Info_0420312_P1 { + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_companyId") + private String liabilitiesClaimsAssetsCompanyId; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_fullName") + private String liabilitiesClaimsAssetsFullName; + + @XStreamAsAttribute + @XStreamAlias("companySymbol_code") + private String companySymbolCode; + + @XStreamAsAttribute + @XStreamAlias("companySymbol_value") + private String companySymbolValue; + + @XStreamAsAttribute + @XStreamAlias("companyInfo_countryCode") + private String companyInfoCountryCode; + + @XStreamAsAttribute + @XStreamAlias("clearingMemberCategory_clearingMemberCategory") + private String clearingMemberCategoryClearingMemberCategory; + + + public Info_0420312_P1(String liabilitiesClaimsAssetsCompanyId, + String liabilitiesClaimsAssetsFullName, + String companySymbolCode, + String companySymbolValue, + String companyInfoCountryCode, + String clearingMemberCategoryClearingMemberCategory) { + this.liabilitiesClaimsAssetsCompanyId = liabilitiesClaimsAssetsCompanyId; + this.liabilitiesClaimsAssetsFullName = liabilitiesClaimsAssetsFullName; + this.companySymbolCode = companySymbolCode; + this.companySymbolValue = companySymbolValue; + this.companyInfoCountryCode = companyInfoCountryCode; + this.clearingMemberCategoryClearingMemberCategory = clearingMemberCategoryClearingMemberCategory; + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P10.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P10.java new file mode 100644 index 000000000..021fb5ec2 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P10.java @@ -0,0 +1,59 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_5; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; + +@XStreamAlias("report") +public class ReportBR_0420312_P10 extends AbstractReport { + + @XStreamAlias("partThree") + private final Info_0420312_P10 partTen; + + public ReportBR_0420312_P10(LocalDate startDate, + LocalDate endDate, + String currencyId, + String liabilitiesClaimsAssetsCompanyId, + String liabilitiesClaimsMoneyCurrencyCode, + String liabilitiesClaimsAssetsLiabilities) { + super("0.0.5", + "0420312", + "Сведения о клиринговом обеспечении", + startDate, + endDate); + partTen = new Info_0420312_P10(currencyId, + liabilitiesClaimsAssetsCompanyId, + liabilitiesClaimsMoneyCurrencyCode, + liabilitiesClaimsAssetsLiabilities); + } + + public static class Info_0420312_P10 { + @XStreamAsAttribute + @XStreamAlias("currency_id") + private String currencyId; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_companyId") + private String liabilitiesClaimsAssetsCompanyId; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsMoney_currencyCode") + private String liabilitiesClaimsMoneyCurrencyCode; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_liabilities") + private String liabilitiesClaimsAssetsLiabilities; + + public Info_0420312_P10(String currencyId, + String liabilitiesClaimsAssetsCompanyId, + String liabilitiesClaimsMoneyCurrencyCode, + String liabilitiesClaimsAssetsLiabilities) { + this.currencyId = currencyId; + this.liabilitiesClaimsAssetsCompanyId = liabilitiesClaimsAssetsCompanyId; + this.liabilitiesClaimsMoneyCurrencyCode = liabilitiesClaimsMoneyCurrencyCode; + this.liabilitiesClaimsAssetsLiabilities = liabilitiesClaimsAssetsLiabilities; + } + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P2.java new file mode 100644 index 000000000..1345d1a63 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P2.java @@ -0,0 +1,43 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_5; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; + +@XStreamAlias("report") +public class ReportBR_0420312_P2 extends AbstractReport { + + @XStreamAlias("partTwo") + private final Info_0420312_P2 partTwo; + + public ReportBR_0420312_P2(LocalDate startDate, + LocalDate endDate, + String liabilitiesClaimsAssetsCompanyId, + String liabilitiesClaimsAssetsLiabilities) { + super("0.0.5", + "0420312", + "Сведения о клиринговом обеспечении", + startDate, + endDate); + partTwo = new Info_0420312_P2(liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsLiabilities); + } + + public static class Info_0420312_P2 { + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_companyId") + private String liabilitiesClaimsAssetsCompanyId; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_liabilities") + private String liabilitiesClaimsAssetsLiabilities; + + public Info_0420312_P2(String liabilitiesClaimsAssetsCompanyId, + String liabilitiesClaimsAssetsLiabilities) { + this.liabilitiesClaimsAssetsCompanyId = liabilitiesClaimsAssetsCompanyId; + this.liabilitiesClaimsAssetsLiabilities = liabilitiesClaimsAssetsLiabilities; + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P3.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P3.java new file mode 100644 index 000000000..521f6d0bd --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P3.java @@ -0,0 +1,44 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_5; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; + +@XStreamAlias("report") +public class ReportBR_0420312_P3 extends AbstractReport { + + @XStreamAlias("partThree") + private final Info_0420312_P3 partThree; + + public ReportBR_0420312_P3(LocalDate startDate, + LocalDate endDate, + String liabilitiesClaimsAssetsCompanyId, + String liabilitiesClaimsAssetsLiabilities) { + super("0.0.5", + "0420312", + "Сведения о клиринговом обеспечении", + startDate, + endDate); + partThree = new Info_0420312_P3(liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsLiabilities); + } + + public static class Info_0420312_P3 { + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_companyId") + private String liabilitiesClaimsAssetsCompanyId; + + @XStreamAsAttribute + @XStreamAlias("liabilitiesClaimsAssets_fullName") + private String liabilitiesClaimsAssetsLiabilities; + + + public Info_0420312_P3(String liabilitiesClaimsAssetsCompanyId, + String liabilitiesClaimsAssetsLiabilities) { + this.liabilitiesClaimsAssetsCompanyId = liabilitiesClaimsAssetsCompanyId; + this.liabilitiesClaimsAssetsLiabilities = liabilitiesClaimsAssetsLiabilities; + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P4.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P4.java new file mode 100644 index 000000000..f9e7b695c --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P4.java @@ -0,0 +1,36 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_5; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; + +@XStreamAlias("report") +public class ReportBR_0420312_P4 extends AbstractReport { + + @XStreamAlias("partThree") + private final Info_0420312_P4 partFour; + + public ReportBR_0420312_P4(LocalDate startDate, + LocalDate endDate, + String liabilitiesAmount) { + super("0.0.5", + "0420312", + "Сведения о клиринговом обеспечении", + startDate, + endDate); + partFour = new Info_0420312_P4(liabilitiesAmount); + } + + public static class Info_0420312_P4 { + @XStreamAsAttribute + @XStreamAlias("liabilities_amount") + private String liabilitiesAmount; + + public Info_0420312_P4(String liabilitiesAmount) { + this.liabilitiesAmount = liabilitiesAmount; + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P5.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P5.java new file mode 100644 index 000000000..154536139 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P5.java @@ -0,0 +1,35 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_5; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; + +@XStreamAlias("report") +public class ReportBR_0420312_P5 extends AbstractReport { + + @XStreamAlias("partThree") + private final Info_0420312_P5 partFive; + + public ReportBR_0420312_P5(LocalDate startDate, + LocalDate endDate, + String liabilitiesAmount) { + super("0.0.5", + "0420312", + "Сведения о клиринговом обеспечении", + startDate, + endDate); + partFive = new Info_0420312_P5(liabilitiesAmount); + } + + public static class Info_0420312_P5 { + @XStreamAsAttribute + @XStreamAlias("liabilities_amount") + private String liabilitiesAmount; + + public Info_0420312_P5(String liabilitiesAmount) { + this.liabilitiesAmount = liabilitiesAmount; + } + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P6.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P6.java new file mode 100644 index 000000000..41d1200dc --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P6.java @@ -0,0 +1,35 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_5; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; + +@XStreamAlias("report") +public class ReportBR_0420312_P6 extends AbstractReport { + + @XStreamAlias("partThree") + private final Info_0420312_P6 partSix; + + public ReportBR_0420312_P6(LocalDate startDate, + LocalDate endDate, + String liabilitiesAmount) { + super("0.0.5", + "0420312", + "Сведения о клиринговом обеспечении", + startDate, + endDate); + partSix = new Info_0420312_P6(liabilitiesAmount); + } + + public static class Info_0420312_P6 { + @XStreamAsAttribute + @XStreamAlias("liabilities_amount") + private String liabilitiesAmount; + + public Info_0420312_P6(String liabilitiesAmount) { + this.liabilitiesAmount = liabilitiesAmount; + } + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P8.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P8.java new file mode 100644 index 000000000..3e26fcea5 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/reports/bt_17_5/ReportBR_0420312_P8.java @@ -0,0 +1,35 @@ +package ru.spcex.clearing.reports_service.reports.bt_17_5; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports_service.reports.AbstractReport; + +import java.time.LocalDate; + +@XStreamAlias("report") +public class ReportBR_0420312_P8 extends AbstractReport { + + @XStreamAlias("partThree") + private final Info_0420312_P8 partEight; + + public ReportBR_0420312_P8(LocalDate startDate, + LocalDate endDate, + String liabilitiesAmount) { + super("0.0.5", + "0420312", + "Сведения о клиринговом обеспечении", + startDate, + endDate); + partEight = new Info_0420312_P8(liabilitiesAmount); + } + + public static class Info_0420312_P8 { + @XStreamAsAttribute + @XStreamAlias("liabilities_amount") + private String liabilitiesAmount; + + public Info_0420312_P8(String liabilitiesAmount) { + this.liabilitiesAmount = liabilitiesAmount; + } + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/services/ReportsService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/services/ReportsService.java index b94cba214..e125b6abc 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/services/ReportsService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/services/ReportsService.java @@ -1,24 +1,89 @@ package ru.spcex.clearing.reports_service.services; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.AbstractDriver; -import ru.spcex.clearing.reports_service.xml_test.ChildElementForWrite; -import ru.spcex.clearing.reports_service.xml_test.CustomLocalDateConverter; -import ru.spcex.clearing.reports_service.xml_test.RootElementForWrite; +import com.thoughtworks.xstream.io.naming.NoNameCoder; +import com.thoughtworks.xstream.io.xml.XppDriver; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ru.spcex.clearing.reports_service.reports.bt_17_1.ReportBR_0420315_P1; +import ru.spcex.clearing.reports_service.reports.bt_17_1.ReportBR_0420315_P2; +import ru.spcex.clearing.reports_service.reports.bt_17_2.ReportBR_0420317; +import ru.spcex.clearing.reports_service.reports.bt_17_3.ReportBR_0420318; +import ru.spcex.clearing.reports_service.reports.bt_17_4.ReportBR_0420314_P1; + +import java.time.LocalDate; public class ReportsService { - public void writeXML(AbstractDriver driver) { - XStream xStream = driver == null ? new XStream() : new XStream(driver); + private final Logger log = LoggerFactory.getLogger(getClass()); - // достаточно только для рутового объекта вызвать обработку аннотаций - xStream.processAnnotations(RootElementForWrite.class); - xStream.registerConverter(new CustomLocalDateConverter(), -100); + public void writeXML() { + XStream xStream = new XStream(new XppDriver(new NoNameCoder())); + + xStream.processAnnotations(ReportBR_0420315_P1.class); + xStream.processAnnotations(ReportBR_0420315_P2.class); + xStream.processAnnotations(ReportBR_0420317.class); + xStream.processAnnotations(ReportBR_0420318.class); + xStream.processAnnotations(ReportBR_0420314_P1.class); + + ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(LocalDate.now(), LocalDate.now()); + ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1("companyId", + "companyFullName", + "listingMarket", + "contractorQty", + "liabilitiesAmount"); + reportBR_0420315_p1.getRows().add(info_0420315_p1); + log.info("ReportBR_0420315_P1:\n{}\n", xStream.toXML(reportBR_0420315_p1)); + + ReportBR_0420315_P2 reportBR_0420315_p2 = new ReportBR_0420315_P2(LocalDate.now(), + LocalDate.now(), + "contractorQty", + "liabilitiesAmount"); + log.info("ReportBR_0420315_P2:\n{}\n", xStream.toXML(reportBR_0420315_p2)); + + ReportBR_0420317 reportBR_0420317 = new ReportBR_0420317(LocalDate.now(), LocalDate.now()); + ReportBR_0420317.Info_0420317 info_0420317 = new ReportBR_0420317.Info_0420317("relationSupplierId", + "relationServiceId", + "relationServiceStatus", + "relationUpdatedAt", + "companyFullName", + "companySymbolCode", + "companyInfoCountryCode", + "relationComment"); + reportBR_0420317.getRows().add(info_0420317); + log.info("ReportBR_0420317:\n{}\n", xStream.toXML(reportBR_0420317)); + + ReportBR_0420318 reportBR_0420318 = new ReportBR_0420318(LocalDate.now(), LocalDate.now()); + ReportBR_0420318.Info_0420318 info_0420318 = new ReportBR_0420318.Info_0420318( + "liabilitiesClaimsAssetsFullName", + "companySymbolsCode", + "liabilitiesClaimsAssetsCountryCode", + "liabilitiesClaimsAssetsSettlementDate", + "liabilitiesClaimsAssetsAccountType", + "liabilitiesClaimsAssetsContract", + "liabilitiesClaimsMoneyCurrencyCode", + "liabilitiesAmountAmount", + "liabilitiesClaimsMoneyName", + "liabilitiesClaimsAssetsLiabilities", + "liabilitiesClaimsAssetsComment", + "companySymbolValue", + "liabilitiesClaimsAssetsFullNames"); + reportBR_0420318.getRows().add(info_0420318); + log.info("ReportBR_0420318:\n{}\n", xStream.toXML(reportBR_0420318)); + + ReportBR_0420314_P1 reportBR_0420314P1 = new ReportBR_0420314_P1(LocalDate.now(), LocalDate.now()); + ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1( + "paymentInstructionSenderId", + "profileDocumentId", + "companyFullName", + "companySymbolCode", + "companySymbolValue", + "clearingMemberCategoryClearingMemberCategory", + "profileDocumentDocumentTypeAndValidFromDate", + "liabilitiesClaimsAssetsLiabilitiesQuantity" + ); + reportBR_0420314P1.getRows().add(info_0420314P1); + log.info("ReportBR_0420314:\n{}\n", xStream.toXML(reportBR_0420314P1)); - RootElementForWrite elementForWrite = new RootElementForWrite(); - elementForWrite.getTestList().add(new ChildElementForWrite()); - elementForWrite.getTestList().add(new ChildElementForWrite()); - String dataXml = xStream.toXML(elementForWrite); - System.out.println(dataXml); } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/CustomLocalDateConverter.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/CustomLocalDateConverter.java deleted file mode 100644 index 11a414756..000000000 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/CustomLocalDateConverter.java +++ /dev/null @@ -1,32 +0,0 @@ -package ru.spcex.clearing.reports_service.xml_test; - -import com.thoughtworks.xstream.converters.Converter; -import com.thoughtworks.xstream.converters.MarshallingContext; -import com.thoughtworks.xstream.converters.UnmarshallingContext; -import com.thoughtworks.xstream.io.HierarchicalStreamReader; -import com.thoughtworks.xstream.io.HierarchicalStreamWriter; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -// самый большой минус работы с датами: если у какой то даты отличается формат, для нее нужен кастомный конвертер -public class CustomLocalDateConverter implements Converter { - private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); - @Override - public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { - LocalDate date = (LocalDate) source; - writer.setValue(formatter.format(date)); - writer.addAttribute("formatted", "true"); - } - - @Override - public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { - // not implemented (not used) - return null; - } - - @Override - public boolean canConvert(Class type) { - return LocalDate.class.isAssignableFrom(type); - } -} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/FormattedLocalDateConverter.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/FormattedLocalDateConverter.java new file mode 100644 index 000000000..52ed1fe0b --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/FormattedLocalDateConverter.java @@ -0,0 +1,37 @@ +package ru.spcex.clearing.reports_service.xml_test; + +import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.Objects; + +public class FormattedLocalDateConverter extends AbstractSingleValueConverter { + private final String DEFAULT_PATTERN = "dd.MM.yyyy"; + private final DateTimeFormatter formatter; + + public FormattedLocalDateConverter() { + formatter = DateTimeFormatter.ofPattern(DEFAULT_PATTERN); + } + + public FormattedLocalDateConverter(String pattern) { + formatter = DateTimeFormatter.ofPattern(Objects.requireNonNullElse(pattern, DEFAULT_PATTERN)); + } + + @Override + public boolean canConvert(Class type) { + return LocalDate.class.isAssignableFrom(type); + } + + @Override + public Object fromString(String str) { + // not implemented (not used) + return null; + } + + @Override + public String toString(Object obj) { + LocalDate date = (LocalDate) obj; + return date != null ? formatter.format(date) : ""; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/RootElementForWrite.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/RootElementForWrite.java index f8ae35408..73f4aa13e 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/RootElementForWrite.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports_service/xml_test/RootElementForWrite.java @@ -29,7 +29,7 @@ public class RootElementForWrite { private LocalDate testLocalDateDefault = LocalDate.now(); - @XStreamConverter(CustomLocalDateConverter.class) + @XStreamConverter(FormattedLocalDateConverter.class) private LocalDate testLocalDateCustom = LocalDate.now(); private LocalDateTime testLocalDateTime = LocalDateTime.now();