dictionaries.xml (data.sql) поправил опечатки в LICC, добавил юниттест
This commit is contained in:
parent
1ec5303b12
commit
4b1a834883
5 changed files with 194 additions and 14 deletions
|
|
@ -112,6 +112,11 @@
|
||||||
<groupId>org.mockito</groupId>
|
<groupId>org.mockito</groupId>
|
||||||
<artifactId>mockito-core</artifactId>
|
<artifactId>mockito-core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
||||||
|
<artifactId>jackson-dataformat-xml</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
<documentType id="19" code="XCNT" name="Документ о расторжении Договора клиринга"/>
|
<documentType id="19" code="XCNT" name="Документ о расторжении Договора клиринга"/>
|
||||||
<documentType id="20" code="LICD" name="Документ о дилерской лицензии"/>
|
<documentType id="20" code="LICD" name="Документ о дилерской лицензии"/>
|
||||||
<documentType id="21" code="LICT" name="Документ о лицензии по управлению ЦБ"/>
|
<documentType id="21" code="LICT" name="Документ о лицензии по управлению ЦБ"/>
|
||||||
<documentType id="22" code="LICС" name="Документ о лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)"/>
|
<documentType id="22" code="LICC" name="Документ о лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)"/>
|
||||||
<documentType id="23" code="LICF" name="Документ о лицензии форекс-дилера"/>
|
<documentType id="23" code="LICF" name="Документ о лицензии форекс-дилера"/>
|
||||||
<documentType id="24" code="LICM" name="Документ о лицензии на управление инвестиционными фондами, паевыми инвестиционными фондами, негосударственными пенсионными фондами"/>
|
<documentType id="24" code="LICM" name="Документ о лицензии на управление инвестиционными фондами, паевыми инвестиционными фондами, негосударственными пенсионными фондами"/>
|
||||||
<companySymbol id="1" code="INN" name="Индивидуальный налоговый номер" shortname="ИНН"/>
|
<companySymbol id="1" code="INN" name="Индивидуальный налоговый номер" shortname="ИНН"/>
|
||||||
|
|
@ -76,7 +76,7 @@
|
||||||
<companySymbol id="9" code="OGRN" name="Основной государственный регистрационный номер" shortname="ОГРН"/>
|
<companySymbol id="9" code="OGRN" name="Основной государственный регистрационный номер" shortname="ОГРН"/>
|
||||||
<companySymbol id="10" code="LICD" name="Номер дилерской лицензии" shortname="Дилерская деятельность"/>
|
<companySymbol id="10" code="LICD" name="Номер дилерской лицензии" shortname="Дилерская деятельность"/>
|
||||||
<companySymbol id="11" code="LICT" name="Номер лицензии по управлению ЦБ" shortname="Управление ценными бумагами"/>
|
<companySymbol id="11" code="LICT" name="Номер лицензии по управлению ЦБ" shortname="Управление ценными бумагами"/>
|
||||||
<companySymbol id="12" code="LICС" name="Номер лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)" shortname="Брокерская деятельность ПФИ"/>
|
<companySymbol id="12" code="LICC" name="Номер лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)" shortname="Брокерская деятельность ПФИ"/>
|
||||||
<companySymbol id="13" code="LICF" name="Номер лицензии форекс-дилера" shortname="Деятельность форекс-дилера"/>
|
<companySymbol id="13" code="LICF" name="Номер лицензии форекс-дилера" shortname="Деятельность форекс-дилера"/>
|
||||||
<companySymbol id="14" code="LICR" name="Номер брокерской лицензии" shortname="Брокерская деятельность"/>
|
<companySymbol id="14" code="LICR" name="Номер брокерской лицензии" shortname="Брокерская деятельность"/>
|
||||||
<companySymbol id="15" code="TRDC" name="Код участника торгов" shortname="Биржевой код"/>
|
<companySymbol id="15" code="TRDC" name="Код участника торгов" shortname="Биржевой код"/>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
|
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
|
||||||
<meta version="3.12.2.95">
|
<meta version="3.12.2.96">
|
||||||
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
|
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
|
||||||
<!--Здесь словари-->
|
<!--Здесь словари-->
|
||||||
<enums>
|
<enums>
|
||||||
|
|
@ -920,7 +920,7 @@
|
||||||
<clearingDate type="6" name="Текущая дата" shortname="Дата" visible="false" searchable="true" sortable="true" ignore="true"/>
|
<clearingDate type="6" name="Текущая дата" shortname="Дата" visible="false" searchable="true" sortable="true" ignore="true"/>
|
||||||
</errorText>
|
</errorText>
|
||||||
|
|
||||||
<clientCode name="Коды клиентов компании" destination="client-codes" class="ru.clearing.classes.statics.data.account.ClientCode" logUpdates="true" table="client_сode">
|
<clientCode name="Коды клиентов компании" destination="client-codes" class="ru.clearing.classes.statics.data.account.ClientCode" logUpdates="true" table="client_code">
|
||||||
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
|
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
|
||||||
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
|
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
|
||||||
<code type="2" length="255" name="Код клиента" shortname="Код клиента" searchable="true" sortable="true" visible="true"/>
|
<code type="2" length="255" name="Код клиента" shortname="Код клиента" searchable="true" sortable="true" visible="true"/>
|
||||||
|
|
@ -1498,7 +1498,7 @@
|
||||||
<counterPartyId type="1" dbname="Идентификатор компании-партнера, с которой заключена сделка" name="Наименование компании-партнера, с которой заключена сделка" shortname="Партнер" visible="false" searchable="true" sortable="true" link="company" linkCode="shortName"/>
|
<counterPartyId type="1" dbname="Идентификатор компании-партнера, с которой заключена сделка" name="Наименование компании-партнера, с которой заключена сделка" shortname="Партнер" visible="false" searchable="true" sortable="true" link="company" linkCode="shortName"/>
|
||||||
<counterPartyTradingClearingRegistryId type="1" dbname="Идентификатор торгово-клирингового регистра партнера" name="Торгово-клиринговый регистр партнера" shortname="ТКР партнера" visible="true" searchable="true" sortable="true" link="tradingClearingRegistry" linkCode="code" ignore="true"/>
|
<counterPartyTradingClearingRegistryId type="1" dbname="Идентификатор торгово-клирингового регистра партнера" name="Торгово-клиринговый регистр партнера" shortname="ТКР партнера" visible="true" searchable="true" sortable="true" link="tradingClearingRegistry" linkCode="code" ignore="true"/>
|
||||||
<counterPartyTradingClearingRegistry type="2" length="20" dbname="Торгово-клиринговый регистр партнера" name="Торгово-клиринговый регистр партнера" shortname="ТКР партнера" visible="true" searchable="true" sortable="true" />
|
<counterPartyTradingClearingRegistry type="2" length="20" dbname="Торгово-клиринговый регистр партнера" name="Торгово-клиринговый регистр партнера" shortname="ТКР партнера" visible="true" searchable="true" sortable="true" />
|
||||||
<coverageStatus type="12" dbname="Код статуса достаточности обеспечения" name="Cтатус достаточности обеспечения" shortname="Обеспеченность" searchable="true" sortable="true" link="allowed"/>
|
<coverageStatus type="12" dbname="Код статуса достаточности обеспечения" name="Статус достаточности обеспечения" shortname="Обеспеченность" searchable="true" sortable="true" link="allowed"/>
|
||||||
<sessionId type="1" dbname="Идентификатор клиринговой сессии" name="Клиринговая сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
|
<sessionId type="1" dbname="Идентификатор клиринговой сессии" name="Клиринговая сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
|
||||||
<id type="1" name="Идентификатор записи" shortname="ID" visible="false" searchable="true" sortable="true"/>
|
<id type="1" name="Идентификатор записи" shortname="ID" visible="false" searchable="true" sortable="true"/>
|
||||||
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" visible="false" searchable="true" sortable="true"/>
|
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" visible="false" searchable="true" sortable="true"/>
|
||||||
|
|
@ -1537,7 +1537,7 @@
|
||||||
<settlementDate type="6" name="Дата расчетов" shortname="Дата расчетов" visible="true" searchable="true" sortable="true"/>
|
<settlementDate type="6" name="Дата расчетов" shortname="Дата расчетов" visible="true" searchable="true" sortable="true"/>
|
||||||
<settlementCurrency type="12" dbname="Код валюты расчетов по инструменту" name="Валюта расчетов по инструменту" shortname="Валюта" visible="true" searchable="true" sortable="true" link="currencyCode" linkCode="code"/>
|
<settlementCurrency type="12" dbname="Код валюты расчетов по инструменту" name="Валюта расчетов по инструменту" shortname="Валюта" visible="true" searchable="true" sortable="true" link="currencyCode" linkCode="code"/>
|
||||||
<exchangeExecutionMicroseconds type="4" name="Микросекунды заключения сделки в Торговой системе" shortname="Микросекунды заключения сделки" visible="true" searchable="true" sortable="true"/>
|
<exchangeExecutionMicroseconds type="4" name="Микросекунды заключения сделки в Торговой системе" shortname="Микросекунды заключения сделки" visible="true" searchable="true" sortable="true"/>
|
||||||
<coverageStatus type="12" dbname="Код статуса достаточности обеспечения" name="Cтатус достаточности обеспечения" shortname="Обеспеченность" searchable="true" sortable="true" link="allowed"/>
|
<coverageStatus type="12" dbname="Код статуса достаточности обеспечения" name="Статус достаточности обеспечения" shortname="Обеспеченность" searchable="true" sortable="true" link="allowed"/>
|
||||||
<sessionId type="1" dbname="Идентификатор клиринговой сессии" name="Клиринговая сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
|
<sessionId type="1" dbname="Идентификатор клиринговой сессии" name="Клиринговая сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
|
||||||
</executionFond>
|
</executionFond>
|
||||||
<executionCurrency name="Сделки с валютными инструментами" destination="execution-currency" class="ru.clearing.classes.statics.data.execution.ExecutionCurrency" logUpdates="true" table="execution_currency">
|
<executionCurrency name="Сделки с валютными инструментами" destination="execution-currency" class="ru.clearing.classes.statics.data.execution.ExecutionCurrency" logUpdates="true" table="execution_currency">
|
||||||
|
|
@ -1565,7 +1565,7 @@
|
||||||
<side type="12" dbname="Код направления сделки" name="Направление сделки" shortname="Направление" visible="true" searchable="true" sortable="true" link="side"/>
|
<side type="12" dbname="Код направления сделки" name="Направление сделки" shortname="Направление" visible="true" searchable="true" sortable="true" link="side"/>
|
||||||
<currencyCode type="12" name="Код валюты лота" shortname="Код валюты лота" searchable="true" sortable="true" link="currencyCode" linkCode="code"/>
|
<currencyCode type="12" name="Код валюты лота" shortname="Код валюты лота" searchable="true" sortable="true" link="currencyCode" linkCode="code"/>
|
||||||
<settlementOrganization type="2" length="255" name="Наименование расчетной организации" shortname="Расчетная организация" searchable="true" sortable="true" visible="true"/>
|
<settlementOrganization type="2" length="255" name="Наименование расчетной организации" shortname="Расчетная организация" searchable="true" sortable="true" visible="true"/>
|
||||||
<coverageStatus type="12" dbname="Код статуса достаточности обеспечения" name="Cтатус достаточности обеспечения" shortname="Обеспеченность" searchable="true" sortable="true" link="allowed"/>
|
<coverageStatus type="12" dbname="Код статуса достаточности обеспечения" name="Статус достаточности обеспечения" shortname="Обеспеченность" searchable="true" sortable="true" link="allowed"/>
|
||||||
<sessionId type="1" dbname="Идентификатор клиринговой сессии" name="Клиринговая сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
|
<sessionId type="1" dbname="Идентификатор клиринговой сессии" name="Клиринговая сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
|
||||||
<clearingDate type="6" name="Дата клиринга" shortname="Дата клиринга" visible="false" searchable="true" sortable="true"/>
|
<clearingDate type="6" name="Дата клиринга" shortname="Дата клиринга" visible="false" searchable="true" sortable="true"/>
|
||||||
<id type="1" name="Идентификатор записи" shortname="ID" visible="false" searchable="true" sortable="true"/>
|
<id type="1" name="Идентификатор записи" shortname="ID" visible="false" searchable="true" sortable="true"/>
|
||||||
|
|
@ -1658,8 +1658,8 @@
|
||||||
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
|
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
|
||||||
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
|
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
|
||||||
<sessionId type="1" dbname="Идентификатор клиринговой сессии" name="Клиринговая сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
|
<sessionId type="1" dbname="Идентификатор клиринговой сессии" name="Клиринговая сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
|
||||||
<validFromDate type="6" name="Дата начала cессии" shortname="Дата начала cессии" searchable="true" sortable="true"/>
|
<validFromDate type="6" name="Дата начала сессии" shortname="Дата начала сессии" searchable="true" sortable="true"/>
|
||||||
<validToDate type="6" name="Дата окончания cессии" shortname="Дата окончания cессии" searchable="true" sortable="true"/>
|
<validToDate type="6" name="Дата окончания сессии" shortname="Дата окончания сессии" searchable="true" sortable="true"/>
|
||||||
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
|
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
|
||||||
<companyFullName type="2" length="255" name="Полное наименование компании" shortname="Полное наименование компании" searchable="true" sortable="true" visible="true"/>
|
<companyFullName type="2" length="255" name="Полное наименование компании" shortname="Полное наименование компании" searchable="true" sortable="true" visible="true"/>
|
||||||
<inn type="2" length="255" name="Идентификационный номер налогоплательщика (ИНН)" shortname="ИНН" searchable="true" sortable="true" visible="true"/>
|
<inn type="2" length="255" name="Идентификационный номер налогоплательщика (ИНН)" shortname="ИНН" searchable="true" sortable="true" visible="true"/>
|
||||||
|
|
@ -1695,8 +1695,8 @@
|
||||||
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
|
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
|
||||||
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
|
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
|
||||||
<sessionId type="1" dbname="Идентификатор клиринговой сессии" name="Клиринговая сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
|
<sessionId type="1" dbname="Идентификатор клиринговой сессии" name="Клиринговая сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
|
||||||
<validFromDate type="6" name="Дата начала cессии" shortname="Дата начала cессии" searchable="true" sortable="true"/>
|
<validFromDate type="6" name="Дата начала сессии" shortname="Дата начала сессии" searchable="true" sortable="true"/>
|
||||||
<validToDate type="6" name="Дата окончания cессии" shortname="Дата окончания cессии" searchable="true" sortable="true"/>
|
<validToDate type="6" name="Дата окончания сессии" shortname="Дата окончания сессии" searchable="true" sortable="true"/>
|
||||||
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
|
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
|
||||||
<companyFullName type="2" name="Полное наименование компании" shortname="Полное наименование компании" searchable="true" sortable="true" length="255" visible="true"/>
|
<companyFullName type="2" name="Полное наименование компании" shortname="Полное наименование компании" searchable="true" sortable="true" length="255" visible="true"/>
|
||||||
<inn type="2" length="255" name="Идентификационный номер налогоплательщика (ИНН)" shortname="ИНН" searchable="true" sortable="true" visible="true"/>
|
<inn type="2" length="255" name="Идентификационный номер налогоплательщика (ИНН)" shortname="ИНН" searchable="true" sortable="true" visible="true"/>
|
||||||
|
|
@ -1765,7 +1765,7 @@
|
||||||
<settlementDate type="6" name="Дата расчетов" shortname="Дата расчетов" searchable="true" sortable="true" visible="true"/>
|
<settlementDate type="6" name="Дата расчетов" shortname="Дата расчетов" searchable="true" sortable="true" visible="true"/>
|
||||||
<creditLeg_amount type="10" name="Сумма отправителя" shortname="Сумма отправителя" searchable="true" sortable="true" visible="true"/>
|
<creditLeg_amount type="10" name="Сумма отправителя" shortname="Сумма отправителя" searchable="true" sortable="true" visible="true"/>
|
||||||
<debitLeg_amount type="10" name="Сумма получателя" shortname="Сумма получателя" searchable="true" sortable="true" visible="true"/>
|
<debitLeg_amount type="10" name="Сумма получателя" shortname="Сумма получателя" searchable="true" sortable="true" visible="true"/>
|
||||||
<creditLeg_accountId type="1" dbname="Идентификатор счета отправителя" name="Cчет отправителя" shortname="Счет отправителя" searchable="true" sortable="true" link="account" ignore="true"/>
|
<creditLeg_accountId type="1" dbname="Идентификатор счета отправителя" name="Счет отправителя" shortname="Счет отправителя" searchable="true" sortable="true" link="account" ignore="true"/>
|
||||||
<credit_csAccount type="2" length="255" name="Корреспондентский счет отправителя" shortname="Корр. счет отправителя" searchable="true" sortable="true" ignore="true"/>
|
<credit_csAccount type="2" length="255" name="Корреспондентский счет отправителя" shortname="Корр. счет отправителя" searchable="true" sortable="true" ignore="true"/>
|
||||||
<creditLeg_account type="2" length="50" name="Счет отправителя" shortname="Счет отправителя" searchable="true" sortable="true" visible="true"/>
|
<creditLeg_account type="2" length="50" name="Счет отправителя" shortname="Счет отправителя" searchable="true" sortable="true" visible="true"/>
|
||||||
<debitLeg_accountId type="1" dbname="Идентификатор счета получателя" name="Счет получателя" shortname="Счет получателя" searchable="true" sortable="true" link="account" ignore="true"/>
|
<debitLeg_accountId type="1" dbname="Идентификатор счета получателя" name="Счет получателя" shortname="Счет получателя" searchable="true" sortable="true" link="account" ignore="true"/>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,175 @@
|
||||||
|
package ru.spcex.clearing.backendapi.meta;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||||
|
import com.fasterxml.jackson.databind.MapperFeature;
|
||||||
|
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
|
||||||
|
import org.junit.jupiter.api.Assertions;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверяет словари на опечатки: пустые значения, сочетание кириллицы и латиницы в одном слове.
|
||||||
|
* dictionaries.xml
|
||||||
|
* data_initial.xml
|
||||||
|
* data_register_code.xml
|
||||||
|
*/
|
||||||
|
public class DataXmlTest {
|
||||||
|
private Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMetaXml() throws IOException {
|
||||||
|
verifyXML(new File("src/main/resources/meta/meta.xml"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверка XML (data.xml aka dictionaries.xml)
|
||||||
|
*
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testDictionariesXml() throws IOException {
|
||||||
|
verifyXML(new File("src/main/resources/meta/dictionaries.xml"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDataInitialXml() throws IOException {
|
||||||
|
verifyXML(new File("src/main/resources/meta/data_initial.xml"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDataRegisterCodeXml() throws IOException {
|
||||||
|
verifyXML(new File("src/main/resources/meta/data_register_code.xml"));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void verifyXML(File xmlFile) throws IOException {
|
||||||
|
XmlMapper xmlObjectMapper = new XmlMapper();
|
||||||
|
xmlObjectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
|
||||||
|
xmlObjectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||||
|
// Это юнит-тест с внутренними данными, парсинг DTD выключать не обязательно.
|
||||||
|
Map<String, Object> root = xmlObjectMapper.readValue(xmlFile, Map.class);
|
||||||
|
Assertions.assertNotNull(root, "Empty XML in file " + xmlFile);
|
||||||
|
|
||||||
|
String errors = verifyNode(xmlFile.getName(), root);
|
||||||
|
Assertions.assertNull(errors, errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String verifyNode(String path, Map<String, Object> node) {
|
||||||
|
for (Map.Entry<String, Object> item : node.entrySet()) {
|
||||||
|
String name = item.getKey();
|
||||||
|
if (!verifyText(name)) {
|
||||||
|
return path + "> node name \"" + name + "\" has error";
|
||||||
|
}
|
||||||
|
String thisPath = path + "/" + name;
|
||||||
|
if (item.getValue() instanceof Map itemValue) {
|
||||||
|
String error = verifyNode(thisPath, itemValue);
|
||||||
|
if (error != null)
|
||||||
|
return error;
|
||||||
|
} else if (item.getValue() instanceof String text) {
|
||||||
|
if (!verifyText(text)) {
|
||||||
|
return thisPath + "> has error in content: \"" + text + "\"";
|
||||||
|
}
|
||||||
|
} else if (item.getValue() instanceof List values) {
|
||||||
|
for (Object o : values) {
|
||||||
|
if (o instanceof Map itemMap) {
|
||||||
|
String error = verifyNode(thisPath, itemMap);
|
||||||
|
if (error != null)
|
||||||
|
return error;
|
||||||
|
} else if (o instanceof String oVal) {
|
||||||
|
if (!verifyText(oVal)) {
|
||||||
|
return thisPath + "> one of values in node \"" + oVal + "\" has error";
|
||||||
|
}
|
||||||
|
} else if (o == null) {
|
||||||
|
// nothing
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException(thisPath + "> Unsupported one of value type " + o.getClass().getSimpleName() + " for verification");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (item.getValue() == null) {
|
||||||
|
// nothing
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException(thisPath + "> Unsupported value type " + item.getValue().getClass().getSimpleName() + " for verification");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
final char[] CYRILLICS;
|
||||||
|
final char[] LATINS;
|
||||||
|
|
||||||
|
{
|
||||||
|
CYRILLICS = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя".toCharArray();
|
||||||
|
LATINS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray();
|
||||||
|
Arrays.sort(CYRILLICS);
|
||||||
|
Arrays.sort(LATINS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверяет смесь кириллицы и латиницы в одном слове
|
||||||
|
*
|
||||||
|
* @param text
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean verifyText(String text) {
|
||||||
|
boolean word = false, cyrillic = false, latin = false;
|
||||||
|
if (text != null) {
|
||||||
|
for (int i = 0; i < text.length(); i++) {
|
||||||
|
char c = text.charAt(i);
|
||||||
|
boolean isWhitespace = Character.isWhitespace(c);
|
||||||
|
boolean isCyrillic = Arrays.binarySearch(CYRILLICS, c) >= 0;
|
||||||
|
boolean isLatin = Arrays.binarySearch(LATINS, c) >= 0;
|
||||||
|
assert !(isCyrillic && isLatin);
|
||||||
|
assert !(isWhitespace && (isCyrillic || isLatin));
|
||||||
|
if (word && isWhitespace) {
|
||||||
|
word = false; // слово закончилось
|
||||||
|
if (cyrillic && latin)
|
||||||
|
return false; // Смесь кириллицы и латиницы
|
||||||
|
} else if (!word && !isWhitespace) {
|
||||||
|
word = true; // новое слово
|
||||||
|
cyrillic = latin = false;
|
||||||
|
}
|
||||||
|
cyrillic |= isCyrillic;
|
||||||
|
latin |= isLatin;
|
||||||
|
}
|
||||||
|
if (cyrillic && latin)
|
||||||
|
return false; // Смесь кириллицы и латиницы
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void selfTest() {
|
||||||
|
verifyText(null);
|
||||||
|
Assertions.assertTrue(verifyText(""));
|
||||||
|
Assertions.assertTrue(verifyText("A"));
|
||||||
|
Assertions.assertTrue(verifyText(" A "));
|
||||||
|
Assertions.assertTrue(verifyText("A call of"));
|
||||||
|
Assertions.assertTrue(verifyText("The spring of spin winter."));
|
||||||
|
Assertions.assertTrue(verifyText("Пользователь user текст обычный."));
|
||||||
|
Assertions.assertTrue(verifyText("АККаунт mixED 102E333C"));
|
||||||
|
Assertions.assertTrue(verifyText("АКК_аунт mi_xED 10-+*/2E333C"));
|
||||||
|
Assertions.assertTrue(verifyText("XML"));
|
||||||
|
Assertions.assertTrue(verifyText("Same sample apple"));
|
||||||
|
Assertions.assertTrue(verifyText("По tExT кРАям"));
|
||||||
|
|
||||||
|
Assertions.assertFalse(verifyText("Пользоватьель userтекст обычный."));
|
||||||
|
Assertions.assertFalse(verifyText("ХML"));
|
||||||
|
Assertions.assertFalse(verifyText("XМL"));
|
||||||
|
Assertions.assertFalse(verifyText("XMЛ"));
|
||||||
|
Assertions.assertFalse(verifyText(" ХML"));
|
||||||
|
Assertions.assertFalse(verifyText(" XМL"));
|
||||||
|
Assertions.assertFalse(verifyText(" XMЛ"));
|
||||||
|
Assertions.assertFalse(verifyText("ХML "));
|
||||||
|
Assertions.assertFalse(verifyText("XМL "));
|
||||||
|
Assertions.assertFalse(verifyText("XMЛ "));
|
||||||
|
Assertions.assertFalse(verifyText("12XM_Л34"));
|
||||||
|
Assertions.assertFalse(verifyText("Same sample аррlе"));
|
||||||
|
Assertions.assertFalse(verifyText("Same samplе apple"));
|
||||||
|
Assertions.assertFalse(verifyText("Same sample аpple"));
|
||||||
|
Assertions.assertFalse(verifyText("client_сode"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -126,7 +126,7 @@ INSERT INTO DOCUMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (20, 'LICD', 'Док
|
||||||
|
|
||||||
INSERT INTO DOCUMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (21, 'LICT', 'Документ о лицензии по управлению ЦБ') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
|
INSERT INTO DOCUMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (21, 'LICT', 'Документ о лицензии по управлению ЦБ') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
|
||||||
|
|
||||||
INSERT INTO DOCUMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (22, 'LICС', 'Документ о лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
|
INSERT INTO DOCUMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (22, 'LICC', 'Документ о лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
|
||||||
|
|
||||||
INSERT INTO DOCUMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (23, 'LICF', 'Документ о лицензии форекс-дилера') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
|
INSERT INTO DOCUMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (23, 'LICF', 'Документ о лицензии форекс-дилера') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
|
||||||
|
|
||||||
|
|
@ -154,7 +154,7 @@ INSERT INTO COMPANY_SYMBOL_DICTIONARY(ID, CODE, NAME, SHORTNAME) values (10, 'LI
|
||||||
|
|
||||||
INSERT INTO COMPANY_SYMBOL_DICTIONARY(ID, CODE, NAME, SHORTNAME) values (11, 'LICT', 'Номер лицензии по управлению ЦБ', 'Управление ценными бумагами') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME, SHORTNAME = EXCLUDED.SHORTNAME;
|
INSERT INTO COMPANY_SYMBOL_DICTIONARY(ID, CODE, NAME, SHORTNAME) values (11, 'LICT', 'Номер лицензии по управлению ЦБ', 'Управление ценными бумагами') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME, SHORTNAME = EXCLUDED.SHORTNAME;
|
||||||
|
|
||||||
INSERT INTO COMPANY_SYMBOL_DICTIONARY(ID, CODE, NAME, SHORTNAME) values (12, 'LICС', 'Номер лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)', 'Брокерская деятельность ПФИ') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME, SHORTNAME = EXCLUDED.SHORTNAME;
|
INSERT INTO COMPANY_SYMBOL_DICTIONARY(ID, CODE, NAME, SHORTNAME) values (12, 'LICC', 'Номер лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)', 'Брокерская деятельность ПФИ') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME, SHORTNAME = EXCLUDED.SHORTNAME;
|
||||||
|
|
||||||
INSERT INTO COMPANY_SYMBOL_DICTIONARY(ID, CODE, NAME, SHORTNAME) values (13, 'LICF', 'Номер лицензии форекс-дилера', 'Деятельность форекс-дилера') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME, SHORTNAME = EXCLUDED.SHORTNAME;
|
INSERT INTO COMPANY_SYMBOL_DICTIONARY(ID, CODE, NAME, SHORTNAME) values (13, 'LICF', 'Номер лицензии форекс-дилера', 'Деятельность форекс-дилера') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME, SHORTNAME = EXCLUDED.SHORTNAME;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue