diff --git a/clearing-classes/src/main/java/ru/clearing/classes/StaticData/Company/Company.java b/clearing-classes/src/main/java/ru/clearing/classes/StaticData/Company/Company.java index e1c389129..8a7d88003 100644 --- a/clearing-classes/src/main/java/ru/clearing/classes/StaticData/Company/Company.java +++ b/clearing-classes/src/main/java/ru/clearing/classes/StaticData/Company/Company.java @@ -13,7 +13,6 @@ public class Company extends BusinessObject { private String clearingCode; private String exchangeCode; private Long statusId; // WorkflowStatusDictionary -// private String fullName; private CompanyInfo profile; @Override @@ -22,7 +21,6 @@ public class Company extends BusinessObject { "id=" + id + ", clearingCode='" + clearingCode + '\'' + ", exchangeCode='" + exchangeCode + '\'' + -// ", fullName='" + fullName + '\'' + ", profile=" + profile + ", statusId=" + statusId + '}'; @@ -44,14 +42,6 @@ public class Company extends BusinessObject { this.exchangeCode = exchangeCode; } -// public String getFullName() { -// return fullName; -// } -// -// public void setFullName(String fullName) { -// this.fullName = fullName; -// } - public Long getStatusId() { return statusId; } @@ -59,4 +49,12 @@ public class Company extends BusinessObject { public void setStatusId(Long statusId) { this.statusId = statusId; } + + public CompanyInfo getProfile() { + return profile; + } + + public void setProfile(CompanyInfo profile) { + this.profile = profile; + } } \ No newline at end of file diff --git a/clearing-classes/src/main/java/ru/clearing/classes/StaticData/Company/CompanyUpdate.java b/clearing-classes/src/main/java/ru/clearing/classes/StaticData/Company/CompanyUpdate.java new file mode 100644 index 000000000..051532ba0 --- /dev/null +++ b/clearing-classes/src/main/java/ru/clearing/classes/StaticData/Company/CompanyUpdate.java @@ -0,0 +1,14 @@ +package ru.clearing.classes.StaticData.Company; + +import ru.clearing.classes.ConstSerializable; +import ru.clearing.classes.StaticData.Profile.CompanyInfo; +import ru.clearing.classes.objects.BusinessEvent; +import ru.clearing.classes.objects.BusinessObject; + +/** + * DB: COMPANY + */ +public class CompanyUpdate extends BusinessEvent { + private static final long serialVersionUID = ConstSerializable.serialVersionUID; + +} \ No newline at end of file diff --git a/clearing-classes/src/main/java/ru/clearing/classes/StaticData/Profile/Contact.java b/clearing-classes/src/main/java/ru/clearing/classes/StaticData/Profile/Contact.java index 8afc6b5bc..02695c157 100644 --- a/clearing-classes/src/main/java/ru/clearing/classes/StaticData/Profile/Contact.java +++ b/clearing-classes/src/main/java/ru/clearing/classes/StaticData/Profile/Contact.java @@ -10,8 +10,8 @@ public class Contact extends ObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private Long companyId; - private String contact_type; // ref CHAR(4) - private String contact_value; + private String contactType; // ref CHAR(4) + private String contactValue; public Long getCompanyId() { return companyId; @@ -21,19 +21,19 @@ public class Contact extends ObjectBase { this.companyId = companyId; } - public String getContact_type() { - return contact_type; + public String getContactType() { + return contactType; } - public void setContact_type(String contact_type) { - this.contact_type = contact_type; + public void setContactType(String contactType) { + this.contactType = contactType; } - public String getContact_value() { - return contact_value; + public String getContactValue() { + return contactValue; } - public void setContact_value(String contact_value) { - this.contact_value = contact_value; + public void setContactValue(String contactValue) { + this.contactValue = contactValue; } } \ No newline at end of file diff --git a/clearing-classes/src/main/java/ru/clearing/classes/objects/BusinessEvent.java b/clearing-classes/src/main/java/ru/clearing/classes/objects/BusinessEvent.java index 48e2e0889..4367ac92e 100644 --- a/clearing-classes/src/main/java/ru/clearing/classes/objects/BusinessEvent.java +++ b/clearing-classes/src/main/java/ru/clearing/classes/objects/BusinessEvent.java @@ -40,4 +40,13 @@ public abstract class BusinessEvent extends ObjectBase public void setObject(T object) { this.object = object; } + + @Override + public String toString() { + return getClass().getSimpleName() + "{" + + "eventTime=" + eventTime + + ", userId=" + userId + + ", object=" + object + + '}'; + } } \ No newline at end of file diff --git a/clearing-dictionary/src/main/java/ru/clearing/platform/dictionary/CountryCodeDictionary.java b/clearing-dictionary/src/main/java/ru/clearing/platform/dictionary/CountryCodeDictionary.java index dedff92c9..256e8f4f0 100644 --- a/clearing-dictionary/src/main/java/ru/clearing/platform/dictionary/CountryCodeDictionary.java +++ b/clearing-dictionary/src/main/java/ru/clearing/platform/dictionary/CountryCodeDictionary.java @@ -1,7 +1,7 @@ package ru.clearing.platform.dictionary; /** - * Database table: COMPANY_ROLE_DICTIONARY + * Database table: COUNTRY_CODE_DICTIONARY */ public class CountryCodeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/storage/src/main/java/ru/spcex/clearing/storage/businessobject/CompanyMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/businessobject/CompanyMapStore.java new file mode 100644 index 000000000..b4210299b --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/businessobject/CompanyMapStore.java @@ -0,0 +1,66 @@ +package ru.spcex.clearing.storage.businessobject; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.classes.StaticData.Company.Company; +import ru.clearing.classes.StaticData.Profile.CompanyInfo; +import ru.spcex.clearing.storage.base.ObjectBaseMapStore; +import ru.spcex.clearing.storage.utils.DbUtilsHelper; + +import java.util.*; + +@Component +public class CompanyMapStore extends ObjectBaseMapStore { + + public CompanyMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "COMPANY"; + } + + @Override + public String[] getFields() { + return new String[]{ + "id" + }; + } + + protected final String insertStatement = DbUtilsHelper.createUpdateOrInsert(getTableName(), getFields(), "id"); + + @Override + public Collection load(Collection keys) { + Map> paramMap = Collections.singletonMap("ids", keys); + return namedParameterJdbcTemplate.query("select * from " + getTableName() + " where id in (:ids)", paramMap, + (resultSet, i) -> { + Company company = new Company(); + company.setId(resultSet.getObject("id", Long.class)); +// contact.set(resultSet.getObject("", Long.class)); + company.setProfile(new CompanyInfo()); + //todo Company loader + return company; + }); + } + + @Override + public void store(Map map) { + List batchArgs = new ArrayList<>(); + + for (Map.Entry entry : map.entrySet()) { + Company company = entry.getValue(); + + Object[] args = new Object[]{ + company.getId(), +// company.getCompanyId(), +// contact.getContactType(), +// contact.getContactValue() + //todo Company loader + }; + batchArgs.add(args); + } + batchInsertUpdate(insertStatement, batchArgs); + } + +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/config/HazelcastConfiguration.java b/storage/src/main/java/ru/spcex/clearing/storage/config/HazelcastConfiguration.java index 91995dd4a..99d66f2b3 100644 --- a/storage/src/main/java/ru/spcex/clearing/storage/config/HazelcastConfiguration.java +++ b/storage/src/main/java/ru/spcex/clearing/storage/config/HazelcastConfiguration.java @@ -61,8 +61,24 @@ public class HazelcastConfiguration { ) ); + config.addMapConfig(poolMapConfigs.map_AllowedDictionary()); + config.addMapConfig(poolMapConfigs.map_ClearingMemberCategoryDictionary()); + config.addMapConfig(poolMapConfigs.map_CompanyRoleDictionary()); + config.addMapConfig(poolMapConfigs.map_CompanySymbolDictionary()); + config.addMapConfig(poolMapConfigs.map_ContactTypeDictionary()); + config.addMapConfig(poolMapConfigs.map_CorporationSoleTypeDictionary()); + config.addMapConfig(poolMapConfigs.map_CountryCodeDictionary()); + config.addMapConfig(poolMapConfigs.map_DocumentTypeDictionary()); + config.addMapConfig(poolMapConfigs.map_LegalKindDictionary()); + config.addMapConfig(poolMapConfigs.map_OrganizationTypeDictionary()); config.addMapConfig(poolMapConfigs.map_WorkflowStatusDictionary()); - config.addMapConfig(poolMapConfigs.map_WorkflowStatusDictionary()); + + config.addMapConfig(poolMapConfigs.map_CompanyRoleSet()); + config.addMapConfig(poolMapConfigs.map_CompanySymbols()); + config.addMapConfig(poolMapConfigs.map_ProfileDocument()); + config.addMapConfig(poolMapConfigs.map_Contact()); + config.addMapConfig(poolMapConfigs.map_Company()); + //todo config.addMapConfig(poolMapConfigs.map_CompanyUpdate()); return config; } diff --git a/storage/src/main/java/ru/spcex/clearing/storage/config/PoolMapConfigs.java b/storage/src/main/java/ru/spcex/clearing/storage/config/PoolMapConfigs.java index 5202ef17d..b7fa252f4 100644 --- a/storage/src/main/java/ru/spcex/clearing/storage/config/PoolMapConfigs.java +++ b/storage/src/main/java/ru/spcex/clearing/storage/config/PoolMapConfigs.java @@ -4,8 +4,12 @@ import com.hazelcast.config.*; import com.hazelcast.core.MapLoader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; -import ru.spcex.clearing.storage.dictionary.WorkflowStatusDictionaryMapStore; +import ru.spcex.clearing.storage.businessobject.CompanyMapStore; +import ru.spcex.clearing.storage.dictionary.*; import ru.spcex.clearing.storage.object.CompanyRoleSetMapStore; +import ru.spcex.clearing.storage.object.CompanySymbolsMapStore; +import ru.spcex.clearing.storage.object.ContactMapStore; +import ru.spcex.clearing.storage.object.ProfileDocumentMapStore; import ru.spcex.clearing.storage.utils.IMDGDistributedNames; @Configuration @@ -53,22 +57,123 @@ public class PoolMapConfigs { .setOrdered(ordered); } + private MapIndexConfig makeMapIndexConfig(String attributeName) { + return makeMapIndexConfig(attributeName, false); + } - @Autowired - private WorkflowStatusDictionaryMapStore workflowStatusDictionaryMapStore; - + @Autowired private AllowedDictionaryMapStore allowedDictionaryMapStore; + public MapConfig map_AllowedDictionary() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_AllowedDictionary, allowedDictionaryMapStore) + .setNearCacheConfig(makeDefaultNearCacheConfig()) + .addMapIndexConfig(makeMapIndexConfig("code")); + } + @Autowired private ClearingMemberCategoryDictionaryMapStore clearingMemberCategoryDictionaryMapStore; + public MapConfig map_ClearingMemberCategoryDictionary() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_ClearingMemberCategoryDictionary, clearingMemberCategoryDictionaryMapStore) + .setNearCacheConfig(makeDefaultNearCacheConfig()) + .addMapIndexConfig(makeMapIndexConfig("code")); + } + @Autowired private CompanyRoleDictionaryMapStore companyRoleDictionaryMapStore; + public MapConfig map_CompanyRoleDictionary() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_CompanyRoleDictionary, companyRoleDictionaryMapStore) + .setNearCacheConfig(makeDefaultNearCacheConfig()) + .addMapIndexConfig(makeMapIndexConfig("code")); + } + @Autowired private CompanySymbolDictionaryMapStore companySymbolDictionaryMapStore; + public MapConfig map_CompanySymbolDictionary() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_CompanySymbolDictionary, companySymbolDictionaryMapStore) + .setNearCacheConfig(makeDefaultNearCacheConfig()) + .addMapIndexConfig(makeMapIndexConfig("code")); + } + @Autowired private ContactTypeDictionaryMapStore contactTypeDictionaryMapStore; + public MapConfig map_ContactTypeDictionary() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_ContactTypeDictionary, contactTypeDictionaryMapStore) + .setNearCacheConfig(makeDefaultNearCacheConfig()) + .addMapIndexConfig(makeMapIndexConfig("code")); + } + @Autowired private CorporationSoleTypeDictionaryMapStore corporationSoleTypeDictionaryMapStore; + public MapConfig map_CorporationSoleTypeDictionary() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_CorporationSoleTypeDictionary, corporationSoleTypeDictionaryMapStore) + .setNearCacheConfig(makeDefaultNearCacheConfig()) + .addMapIndexConfig(makeMapIndexConfig("code")); + } + @Autowired private CountryCodeDictionaryMapStore countryCodeDictionaryMapStore; + public MapConfig map_CountryCodeDictionary() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_CountryCodeDictionary, countryCodeDictionaryMapStore) + .setNearCacheConfig(makeDefaultNearCacheConfig()) + .addMapIndexConfig(makeMapIndexConfig("code")); + } + @Autowired private DocumentTypeDictionaryMapStore documentTypeDictionaryMapStore; + public MapConfig map_DocumentTypeDictionary() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_DocumentTypeDictionary, documentTypeDictionaryMapStore) + .setNearCacheConfig(makeDefaultNearCacheConfig()) + .addMapIndexConfig(makeMapIndexConfig("code")); + } + @Autowired private LegalKindDictionaryMapStore legalKindDictionaryMapStore; + public MapConfig map_LegalKindDictionary() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_LegalKindDictionary, legalKindDictionaryMapStore) + .setNearCacheConfig(makeDefaultNearCacheConfig()) + .addMapIndexConfig(makeMapIndexConfig("code")); + } + @Autowired private OrganizationTypeDictionaryMapStore organizationTypeDictionaryMapStore; + public MapConfig map_OrganizationTypeDictionary() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_OrganizationTypeDictionary, organizationTypeDictionaryMapStore) + .setNearCacheConfig(makeDefaultNearCacheConfig()) + .addMapIndexConfig(makeMapIndexConfig("code")); + } + @Autowired private WorkflowStatusDictionaryMapStore workflowStatusDictionaryMapStore; public MapConfig map_WorkflowStatusDictionary() { return makeDefaultMapConfig(IMDGDistributedNames.Map_WorkflowStatusDictionary, workflowStatusDictionaryMapStore) - .setNearCacheConfig(makeDefaultNearCacheConfig()); + .setNearCacheConfig(makeDefaultNearCacheConfig()) + .addMapIndexConfig(makeMapIndexConfig("code")); } + + @Autowired private CompanyRoleSetMapStore companyRoleSetMapStore; public MapConfig map_CompanyRoleSet() { - return makeDefaultMapConfig(IMDGDistributedNames.Map_CompanyRoleSet, companyRoleSetMapStore); + return makeDefaultMapConfig(IMDGDistributedNames.Map_CompanyRoleSet, companyRoleSetMapStore) + .addMapIndexConfig(makeMapIndexConfig("companyId")); + } + + + @Autowired + private CompanySymbolsMapStore companySymbolsMapStore; + + public MapConfig map_CompanySymbols() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_CompanySymbols, companySymbolsMapStore) + .addMapIndexConfig(makeMapIndexConfig("companyId")) + .addMapIndexConfig(makeMapIndexConfig("companySymbol")); + } + + + @Autowired + private ProfileDocumentMapStore profileDocumentMapStore; + + public MapConfig map_ProfileDocument() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_ProfileDocument, profileDocumentMapStore) + .addMapIndexConfig(makeMapIndexConfig("companyId")); + } + + @Autowired + private ContactMapStore contactMapStore; + + public MapConfig map_Contact() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_Contact, contactMapStore) + .addMapIndexConfig(makeMapIndexConfig("companyId")); + } + + + @Autowired + private CompanyMapStore companyMapStore; + + public MapConfig map_Company() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_Company, companyMapStore) + .addMapIndexConfig(makeMapIndexConfig("companyId")); } } diff --git a/storage/src/main/java/ru/spcex/clearing/storage/dictionary/AllowedDictionaryMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/AllowedDictionaryMapStore.java new file mode 100644 index 000000000..a754db9f4 --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/AllowedDictionaryMapStore.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.storage.dictionary; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.platform.dictionary.AllowedDictionary; +import ru.spcex.clearing.storage.base.DictionaryMapStore; + +@Component +public class AllowedDictionaryMapStore extends DictionaryMapStore { + + public AllowedDictionaryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "ALLOWED_DICTIONARY"; + } + + @Override + public AllowedDictionary getDictionaryObject() { + return new AllowedDictionary(); + } +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/dictionary/ClearingMemberCategoryDictionaryMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/ClearingMemberCategoryDictionaryMapStore.java new file mode 100644 index 000000000..f5895b02e --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/ClearingMemberCategoryDictionaryMapStore.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.storage.dictionary; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.platform.dictionary.ClearingMemberCategoryDictionary; +import ru.spcex.clearing.storage.base.DictionaryMapStore; + +@Component +public class ClearingMemberCategoryDictionaryMapStore extends DictionaryMapStore { + + public ClearingMemberCategoryDictionaryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "CLEARING_MEMBER_CATEGORY_DICTIONARY"; + } + + @Override + public ClearingMemberCategoryDictionary getDictionaryObject() { + return new ClearingMemberCategoryDictionary(); + } +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CompanyRoleDictionaryMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CompanyRoleDictionaryMapStore.java new file mode 100644 index 000000000..f86d7d7ec --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CompanyRoleDictionaryMapStore.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.storage.dictionary; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.platform.dictionary.CompanyRoleDictionary; +import ru.spcex.clearing.storage.base.DictionaryMapStore; + +@Component +public class CompanyRoleDictionaryMapStore extends DictionaryMapStore { + + public CompanyRoleDictionaryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "COMPANY_ROLE_DICTIONARY"; + } + + @Override + public CompanyRoleDictionary getDictionaryObject() { + return new CompanyRoleDictionary(); + } +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CompanySymbolDictionaryMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CompanySymbolDictionaryMapStore.java new file mode 100644 index 000000000..3c7bfc4be --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CompanySymbolDictionaryMapStore.java @@ -0,0 +1,37 @@ +package ru.spcex.clearing.storage.dictionary; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.platform.dictionary.CompanySymbolDictionary; +import ru.spcex.clearing.storage.base.DictionaryMapStore; + +import java.sql.ResultSet; +import java.sql.SQLException; + +@Component +public class CompanySymbolDictionaryMapStore extends DictionaryMapStore { + + public CompanySymbolDictionaryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "DD"; + } + + @Override + public CompanySymbolDictionary getDictionaryObject() { + return new CompanySymbolDictionary(); + } + + @Override + protected CompanySymbolDictionary mapRow(ResultSet rs, int rowNum) throws SQLException { + CompanySymbolDictionary dictionary = getDictionaryObject(); + dictionary.setId(rs.getLong("id")); + dictionary.setCode(rs.getString("code")); + dictionary.setName(rs.getString("name")); + dictionary.setShortname(rs.getString("shortname")); + return dictionary; + } +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/dictionary/ContactTypeDictionaryMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/ContactTypeDictionaryMapStore.java new file mode 100644 index 000000000..66ead0e3f --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/ContactTypeDictionaryMapStore.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.storage.dictionary; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.platform.dictionary.ContactTypeDictionary; +import ru.spcex.clearing.storage.base.DictionaryMapStore; + +@Component +public class ContactTypeDictionaryMapStore extends DictionaryMapStore { + + public ContactTypeDictionaryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "CONTACT_TYPE_DICTIONARY"; + } + + @Override + public ContactTypeDictionary getDictionaryObject() { + return new ContactTypeDictionary(); + } +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CorporationSoleTypeDictionaryMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CorporationSoleTypeDictionaryMapStore.java new file mode 100644 index 000000000..bd25080f4 --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CorporationSoleTypeDictionaryMapStore.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.storage.dictionary; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.platform.dictionary.CorporationSoleTypeDictionary; +import ru.spcex.clearing.storage.base.DictionaryMapStore; + +@Component +public class CorporationSoleTypeDictionaryMapStore extends DictionaryMapStore { + + public CorporationSoleTypeDictionaryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "CORPORATION_SOLE_TYPE_DICTIONARY"; + } + + @Override + public CorporationSoleTypeDictionary getDictionaryObject() { + return new CorporationSoleTypeDictionary(); + } +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CountryCodeDictionaryMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CountryCodeDictionaryMapStore.java new file mode 100644 index 000000000..f23d84be9 --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/CountryCodeDictionaryMapStore.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.storage.dictionary; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.platform.dictionary.CountryCodeDictionary; +import ru.spcex.clearing.storage.base.DictionaryMapStore; + +@Component +public class CountryCodeDictionaryMapStore extends DictionaryMapStore { + + public CountryCodeDictionaryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "COUNTRY_CODE_DICTIONARY"; + } + + @Override + public CountryCodeDictionary getDictionaryObject() { + return new CountryCodeDictionary(); + } +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/dictionary/DocumentTypeDictionaryMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/DocumentTypeDictionaryMapStore.java new file mode 100644 index 000000000..55690d9f4 --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/DocumentTypeDictionaryMapStore.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.storage.dictionary; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.platform.dictionary.DocumentTypeDictionary; +import ru.spcex.clearing.storage.base.DictionaryMapStore; + +@Component +public class DocumentTypeDictionaryMapStore extends DictionaryMapStore { + + public DocumentTypeDictionaryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "DOCUMENT_TYPE_DICTIONARY"; + } + + @Override + public DocumentTypeDictionary getDictionaryObject() { + return new DocumentTypeDictionary(); + } +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/dictionary/LegalKindDictionaryMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/LegalKindDictionaryMapStore.java new file mode 100644 index 000000000..3e270ac1d --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/LegalKindDictionaryMapStore.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.storage.dictionary; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.platform.dictionary.LegalKindDictionary; +import ru.spcex.clearing.storage.base.DictionaryMapStore; + +@Component +public class LegalKindDictionaryMapStore extends DictionaryMapStore { + + public LegalKindDictionaryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "LEGAL_KIND_DICTIONARY"; + } + + @Override + public LegalKindDictionary getDictionaryObject() { + return new LegalKindDictionary(); + } +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/dictionary/OrganizationTypeDictionaryMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/OrganizationTypeDictionaryMapStore.java new file mode 100644 index 000000000..380b8acdd --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/dictionary/OrganizationTypeDictionaryMapStore.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.storage.dictionary; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.platform.dictionary.OrganizationTypeDictionary; +import ru.spcex.clearing.storage.base.DictionaryMapStore; + +@Component +public class OrganizationTypeDictionaryMapStore extends DictionaryMapStore { + + public OrganizationTypeDictionaryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "ORGANIZATION_TYPE_DICTIONARY"; + } + + @Override + public OrganizationTypeDictionary getDictionaryObject() { + return new OrganizationTypeDictionary(); + } +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/object/CompanySymbolsMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/object/CompanySymbolsMapStore.java new file mode 100644 index 000000000..7f8d25c92 --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/object/CompanySymbolsMapStore.java @@ -0,0 +1,65 @@ +package ru.spcex.clearing.storage.object; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.classes.StaticData.Company.CompanyRoleSet; +import ru.clearing.classes.StaticData.Company.CompanySymbols; +import ru.spcex.clearing.storage.base.ObjectBaseMapStore; +import ru.spcex.clearing.storage.utils.DbUtilsHelper; + +import java.util.*; + +@Component +public class CompanySymbolsMapStore extends ObjectBaseMapStore { + + public CompanySymbolsMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "COMPANY_SYMBOLS"; + } + + @Override + public String[] getFields() { + return new String[]{ + "id", "company_id", "company_symbol", "company_symbol_value" + }; + } + + protected final String insertStatement = DbUtilsHelper.createUpdateOrInsert(getTableName(), getFields(), "id"); + + @Override + public Collection load(Collection keys) { + Map> paramMap = Collections.singletonMap("ids", keys); + return namedParameterJdbcTemplate.query("select * from " + getTableName() + " where id in (:ids)", paramMap, + (resultSet, i) -> { + CompanySymbols companySymbols = new CompanySymbols(); + companySymbols.setId(resultSet.getObject("id", Long.class)); + companySymbols.setCompanyId(resultSet.getObject("companyid", Long.class)); + companySymbols.setCompanySymbol(resultSet.getObject("companysymbol", String.class)); + companySymbols.setCompanySymbolValue(resultSet.getObject("companysymbolvalue", String.class)); + return companySymbols; + }); + } + + @Override + public void store(Map map) { + List batchArgs = new ArrayList<>(); + + for (Map.Entry entry : map.entrySet()) { + CompanySymbols companySymbols = entry.getValue(); + + Object[] args = new Object[]{ + companySymbols.getId(), + companySymbols.getCompanyId(), + companySymbols.getCompanySymbol(), + companySymbols.getCompanySymbolValue() + }; + batchArgs.add(args); + } + batchInsertUpdate(insertStatement, batchArgs); + } + +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/object/ContactMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/object/ContactMapStore.java new file mode 100644 index 000000000..70d775dd9 --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/object/ContactMapStore.java @@ -0,0 +1,64 @@ +package ru.spcex.clearing.storage.object; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.classes.StaticData.Profile.Contact; +import ru.spcex.clearing.storage.base.ObjectBaseMapStore; +import ru.spcex.clearing.storage.utils.DbUtilsHelper; + +import java.util.*; + +@Component +public class ContactMapStore extends ObjectBaseMapStore { + + public ContactMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "CONTACT"; + } + + @Override + public String[] getFields() { + return new String[]{ + "id", "company_id", "company_symbol", "company_symbol_value" + }; + } + + protected final String insertStatement = DbUtilsHelper.createUpdateOrInsert(getTableName(), getFields(), "id"); + + @Override + public Collection load(Collection keys) { + Map> paramMap = Collections.singletonMap("ids", keys); + return namedParameterJdbcTemplate.query("select * from " + getTableName() + " where id in (:ids)", paramMap, + (resultSet, i) -> { + Contact contact = new Contact(); + contact.setId(resultSet.getObject("id", Long.class)); + contact.setCompanyId(resultSet.getObject("company_id", Long.class)); + contact.setContactType(resultSet.getObject("contact_type", String.class)); + contact.setContactValue(resultSet.getObject("contact_value", String.class)); + return contact; + }); + } + + @Override + public void store(Map map) { + List batchArgs = new ArrayList<>(); + + for (Map.Entry entry : map.entrySet()) { + Contact contact = entry.getValue(); + + Object[] args = new Object[]{ + contact.getId(), + contact.getCompanyId(), + contact.getContactType(), + contact.getContactValue() + }; + batchArgs.add(args); + } + batchInsertUpdate(insertStatement, batchArgs); + } + +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/object/ProfileDocumentMapStore.java b/storage/src/main/java/ru/spcex/clearing/storage/object/ProfileDocumentMapStore.java new file mode 100644 index 000000000..0c6fe0688 --- /dev/null +++ b/storage/src/main/java/ru/spcex/clearing/storage/object/ProfileDocumentMapStore.java @@ -0,0 +1,82 @@ +package ru.spcex.clearing.storage.object; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.classes.StaticData.Profile.ProfileDocument; +import ru.spcex.clearing.storage.base.ObjectBaseMapStore; +import ru.spcex.clearing.storage.utils.DbUtilsHelper; +import ru.spcex.clearing.storage.utils.TimeUtil; + +import java.util.*; + +@Component +public class ProfileDocumentMapStore extends ObjectBaseMapStore { + + public ProfileDocumentMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getTableName() { + return "PROFILE_DOCUMENT"; + } + + @Override + public String[] getFields() { + return new String[]{ + "id", "company_id", "document_type", "issue_date", "issue_place", "issuer", "issuer_code", + "name", "number", "place", "valid_from_date", "valid_to_date" + }; + } + + protected final String insertStatement = DbUtilsHelper.createUpdateOrInsert(getTableName(), getFields(), "id"); + + @Override + public Collection load(Collection keys) { + Map> paramMap = Collections.singletonMap("ids", keys); + return namedParameterJdbcTemplate.query("select * from " + getTableName() + " where id in (:ids)", paramMap, + (resultSet, i) -> { + ProfileDocument profileDocument = new ProfileDocument(); + profileDocument.setId(resultSet.getObject("id", Long.class)); + profileDocument.setCompanyId(resultSet.getObject("company_id", Long.class)); + profileDocument.setDocumentType(resultSet.getObject("document_type", String.class)); + profileDocument.setIssueDate(getInstantFromTimestamp(resultSet,"issue_date")); + profileDocument.setIssuePlace(resultSet.getObject("issue_place", String.class)); + profileDocument.setIssuer(resultSet.getObject("issuer", String.class)); + profileDocument.setIssuerCode(resultSet.getObject("issuer_code", String.class)); + profileDocument.setName(resultSet.getObject("name", String.class)); + profileDocument.setNumber(resultSet.getObject("number", String.class)); + profileDocument.setPlace(resultSet.getObject("place", String.class)); + profileDocument.setValidFromDate(getInstantFromTimestamp(resultSet,"valid_from_date")); + profileDocument.setValidToDate(getInstantFromTimestamp(resultSet,"valid_to_date")); + return profileDocument; + }); + } + + @Override + public void store(Map map) { + List batchArgs = new ArrayList<>(); + + for (Map.Entry entry : map.entrySet()) { + ProfileDocument profileDocument = entry.getValue(); + + Object[] args = new Object[]{ + profileDocument.getId(), + profileDocument.getCompanyId(), + profileDocument.getDocumentType(), + TimeUtil.fromInstant(profileDocument.getIssueDate()), + profileDocument.getIssuePlace(), + profileDocument.getIssuer(), + profileDocument.getIssuerCode(), + profileDocument.getName(), + profileDocument.getNumber(), + profileDocument.getPlace(), + TimeUtil.fromInstant(profileDocument.getValidFromDate()), + TimeUtil.fromInstant(profileDocument.getValidToDate()) + }; + batchArgs.add(args); + } + batchInsertUpdate(insertStatement, batchArgs); + } + +} diff --git a/storage/src/main/java/ru/spcex/clearing/storage/utils/IMDGDistributedNames.java b/storage/src/main/java/ru/spcex/clearing/storage/utils/IMDGDistributedNames.java index 0add1d9db..f5ad0c543 100644 --- a/storage/src/main/java/ru/spcex/clearing/storage/utils/IMDGDistributedNames.java +++ b/storage/src/main/java/ru/spcex/clearing/storage/utils/IMDGDistributedNames.java @@ -5,6 +5,23 @@ public final class IMDGDistributedNames { private IMDGDistributedNames() { } - public static final String Map_WorkflowStatusDictionary = "Map_WorkflowStatusDictionary"; + public static final String Map_Company = "Map_Company"; public static final String Map_CompanyRoleSet = "Map_CompanyRoleSet"; + public static final String Map_CompanySymbols = "Map_CompanySymbols"; + public static final String Map_CompanyInfo = "Map_CompanyInfo"; + public static final String Map_Contact = "Map_Contact"; + public static final String Map_ProfileDocument = "Map_ProfileDocument"; + + public static final String Map_AllowedDictionary = "Map_AllowedDictionary"; + public static final String Map_ClearingMemberCategoryDictionary = "Map_ClearingMemberCategoryDictionary"; + public static final String Map_CompanyRoleDictionary = "Map_CompanyRoleDictionary"; + public static final String Map_CompanySymbolDictionary = "Map_CompanySymbolDictionary"; + public static final String Map_ContactTypeDictionary = "Map_ContactTypeDictionary"; + public static final String Map_CorporationSoleTypeDictionary = "Map_CorporationSoleTypeDictionary"; + public static final String Map_CountryCodeDictionary = "Map_CountryCodeDictionary"; + public static final String Map_DocumentTypeDictionary = "Map_DocumentTypeDictionary"; + public static final String Map_LegalKindDictionary = "Map_LegalKindDictionary"; + public static final String Map_OrganizationTypeDictionary = "Map_OrganizationTypeDictionary"; + public static final String Map_WorkflowStatusDictionary = "Map_WorkflowStatusDictionary"; + }