diff --git a/backend/src/main/java/AppConfig.java b/backend/src/main/java/AppConfig.java index 641566e..4e01d7d 100644 --- a/backend/src/main/java/AppConfig.java +++ b/backend/src/main/java/AppConfig.java @@ -6,13 +6,16 @@ import java.time.Duration; import java.util.Collections; import javax.sql.DataSource; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import ervu_business_metrics.deserializer.ReferenceEntityDeserializer; +import ervu_business_metrics.model.ReferenceEntity; import exception.AppInitializeException; import liquibase.integration.spring.SpringLiquibase; import net.javacrumbs.shedlock.core.LockProvider; import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider; import net.javacrumbs.shedlock.spring.ScheduledLockConfiguration; import net.javacrumbs.shedlock.spring.ScheduledLockConfigurationBuilder; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Qualifier; @@ -28,9 +31,10 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.servlet.config.annotation.EnableWebMvc; /** - * Root application context - * This context imports XML configs from all the other jars, and is created by {@link WebAppInitializer} - * NB: modules are excluded from component scan since spring-context.xml sometimes holds important parameters and / or annotations + * Root application context This context imports XML configs from all the other jars, and is created + * by {@link WebAppInitializer} NB: modules are excluded from component scan since + * spring-context.xml sometimes holds important parameters and / or annotations + * * @author krylov */ @Configuration @@ -48,17 +52,19 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc; "ervu_business_metrics" }, excludeFilters = { @ComponentScan.Filter(type = FilterType.REGEX, pattern = "security.WebSecurityConfig"), - @ComponentScan.Filter(type = FilterType.REGEX, pattern = "ru.cg.webbpm.modules.database.impl.DatabaseConfiguration"), + @ComponentScan.Filter(type = FilterType.REGEX, + pattern = "ru.cg.webbpm.modules.database.impl.DatabaseConfiguration"), }) @EnableAspectJAutoProxy(proxyTargetClass = true) @EnableWebMvc @EnableScheduling public class AppConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private static final Logger LOGGER = LoggerFactory.getLogger( + MethodHandles.lookup().lookupClass()); @Bean - public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer(){ + public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); } @@ -85,20 +91,12 @@ public class AppConfig { createErvuMetricsSchema(dataSource); liquibase.setDataSource(dataSource); liquibase.setChangeLog("classpath:config/changelog-master.xml"); - liquibase.setChangeLogParameters(Collections.singletonMap("projectUser", getProjectDbUserName(dataSource))); + liquibase.setChangeLogParameters( + Collections.singletonMap("projectUser", getProjectDbUserName(dataSource))); liquibase.setDefaultSchema("ervu_business_metrics"); return liquibase; } - private String getProjectDbUserName(DataSource dataSource) { - try (Connection connection = dataSource.getConnection()) { - return connection.getMetaData().getUserName(); - } - catch (SQLException e) { - throw new AppInitializeException(e); - } - } - private void createErvuMetricsSchema(DataSource dataSource) { try (Connection connection = dataSource.getConnection()) { LOGGER.info("Start creating ervu_business_metrics schema"); @@ -119,6 +117,26 @@ public class AppConfig { } } + private String getProjectDbUserName(DataSource dataSource) { + try (Connection connection = dataSource.getConnection()) { + return connection.getMetaData().getUserName(); + } + catch (SQLException e) { + throw new AppInitializeException(e); + } + } + + @Bean + public ObjectMapper objectMapper() { + ObjectMapper objectMapper = new ObjectMapper(); + + SimpleModule module = new SimpleModule(); + module.addDeserializer(ReferenceEntity.class, new ReferenceEntityDeserializer()); + + objectMapper.registerModule(module); + return objectMapper; + } + @Bean public RestTemplate restTemplate() { return new RestTemplate(); diff --git a/backend/src/main/java/ervu_business_metrics/dao/AbstractDataDao.java b/backend/src/main/java/ervu_business_metrics/dao/AbstractDataDao.java new file mode 100644 index 0000000..31d8663 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/dao/AbstractDataDao.java @@ -0,0 +1,81 @@ +package ervu_business_metrics.dao; + +import java.util.List; +import java.util.Map; + +import org.jooq.Condition; +import org.jooq.DSLContext; +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.UpdatableRecord; +import org.jooq.impl.DSL; + +/** + * @author Adel Kalimullin + */ +public abstract class AbstractDataDao> { + protected final DSLContext dsl; + + protected AbstractDataDao(DSLContext dsl) { + this.dsl = dsl; + } + + public T newRecord() { + return dsl.newRecord(getTable()); + } + + protected abstract Table getTable(); + + public void upsertData(T record) { + record.merge(); + } + + protected void deleteByFieldInValues(Field field, List values) { + dsl.deleteFrom(getTable()) + .where(field.in(values)) + .execute(); + } + + protected void deleteByValues(Map, V> fieldValues) { + Condition condition = DSL.trueCondition(); + + for (var entry : fieldValues.entrySet()) { + Field field = entry.getKey(); + V value = entry.getValue(); + condition = condition.and(field.eq(value)); + } + + dsl.deleteFrom(getTable()) + .where(condition) + .execute(); + } + + protected void deleteByFieldAndInValues(Field equalField, E equalValue, + Field inField, List inValues) { + dsl.deleteFrom(getTable()) + .where(equalField.eq(equalValue)) + .and(inField.in(inValues)) + .execute(); + } + + protected List getValuesByField(Field selectField, Field filterField, + F filterValue) { + return dsl.select(selectField) + .from(getTable()) + .where(filterField.eq(filterValue)) + .fetch(selectField); + } + + protected void setFieldByField(Field targetField, V value, Field whereField, + F whereValue) { + dsl.update(getTable()) + .set(targetField, value) + .where(whereField.eq(whereValue)) + .execute(); + } + + public void mergeRecords(List records) { + dsl.batchMerge(records).execute(); + } + +} \ No newline at end of file diff --git a/backend/src/main/java/ervu_business_metrics/dao/AccountDataDao.java b/backend/src/main/java/ervu_business_metrics/dao/AccountDataDao.java new file mode 100644 index 0000000..9728e2a --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/dao/AccountDataDao.java @@ -0,0 +1,41 @@ +package ervu_business_metrics.dao; + +import java.util.List; + +import ervu_business_metrics.config.KafkaEnabledCondition; +import org.jooq.DSLContext; +import org.jooq.Table; +import org.springframework.context.annotation.Conditional; +import org.springframework.stereotype.Repository; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Tables; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRecord; + + +/** + * @author Adel Kalimullin + */ +@Repository +@Conditional(KafkaEnabledCondition.class) +public class AccountDataDao extends AbstractDataDao { + + protected AccountDataDao(DSLContext dsl) { + super(dsl); + } + + public List getAccountIdsByPersonId(String personId) { + return getValuesByField(Tables.ACCOUNT.ID, Tables.ACCOUNT.PERSON_ID, personId); + } + + public void setActiveStatus(String id, boolean active) { + setFieldByField(Tables.ACCOUNT.ACTIVE, active, Tables.ACCOUNT.ID, id); + } + + public void deleteByIds(List ids) { + deleteByFieldInValues(Tables.ACCOUNT.ID, ids); + } + + @Override + protected Table getTable() { + return Tables.ACCOUNT; + } +} diff --git a/backend/src/main/java/ervu_business_metrics/dao/AccountRoleDataDao.java b/backend/src/main/java/ervu_business_metrics/dao/AccountRoleDataDao.java new file mode 100644 index 0000000..dda55f9 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/dao/AccountRoleDataDao.java @@ -0,0 +1,56 @@ +package ervu_business_metrics.dao; + + +import java.util.List; +import java.util.Map; + +import ervu_business_metrics.config.KafkaEnabledCondition; +import org.jooq.DSLContext; +import org.jooq.Field; +import org.jooq.Table; +import org.springframework.context.annotation.Conditional; +import org.springframework.stereotype.Repository; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Tables; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRoleRecord; + + +/** + * @author Adel Kalimullin + */ +@Repository +@Conditional(KafkaEnabledCondition.class) +public class AccountRoleDataDao extends AbstractDataDao { + + protected AccountRoleDataDao(DSLContext dsl) { + super(dsl); + } + + public List getRoleIdsByAccountId(String accountId) { + return getValuesByField(Tables.ACCOUNT_ROLE.ROLE_ID, Tables.ACCOUNT_ROLE.ACCOUNT_ID, accountId); + } + + public void deleteAccountRolesByAccountIdAndRoleIds(String accountId, List roleIds) { + deleteByFieldAndInValues( + Tables.ACCOUNT_ROLE.ACCOUNT_ID, accountId, + Tables.ACCOUNT_ROLE.ROLE_ID, roleIds + ); + } + + public void deleteByAccountIds(List accountIds) { + deleteByFieldInValues(Tables.ACCOUNT_ROLE.ACCOUNT_ID, accountIds); + } + + public void deleteAccountRole(AccountRoleRecord record) { + Map, String> conditions = Map.of( + Tables.ACCOUNT_ROLE.ACCOUNT_ID, record.getAccountId(), + Tables.ACCOUNT_ROLE.ROLE_ID, record.getRoleId() + ); + + deleteByValues(conditions); + } + + @Override + protected Table getTable() { + return Tables.ACCOUNT_ROLE; + } +} diff --git a/backend/src/main/java/ervu_business_metrics/dao/DomainDataDao.java b/backend/src/main/java/ervu_business_metrics/dao/DomainDataDao.java new file mode 100644 index 0000000..3472fc8 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/dao/DomainDataDao.java @@ -0,0 +1,31 @@ +package ervu_business_metrics.dao; + + +import ervu_business_metrics.config.KafkaEnabledCondition; +import org.jooq.DSLContext; +import org.jooq.Table; +import org.springframework.context.annotation.Conditional; +import org.springframework.stereotype.Repository; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Tables; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.DomainRecord; + +/** + * @author Adel Kalimullin + */ +@Repository +@Conditional(KafkaEnabledCondition.class) +public class DomainDataDao extends AbstractDataDao { + + protected DomainDataDao(DSLContext dsl) { + super(dsl); + } + + public void setActiveStatus(String id , boolean active){ + setFieldByField(Tables.DOMAIN.ACTIVE, active, Tables.DOMAIN.ID, id); + } + + @Override + protected Table getTable() { + return Tables.DOMAIN; + } +} diff --git a/backend/src/main/java/ervu_business_metrics/dao/IdmDirectoriesDao.java b/backend/src/main/java/ervu_business_metrics/dao/IdmDirectoriesDao.java deleted file mode 100644 index 48b03f3..0000000 --- a/backend/src/main/java/ervu_business_metrics/dao/IdmDirectoriesDao.java +++ /dev/null @@ -1,111 +0,0 @@ -package ervu_business_metrics.dao; - -import java.util.List; -import java.util.Set; - -import ervu_business_metrics.config.KafkaEnabledCondition; -import org.jooq.DSLContext; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Repository; -import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRecord; -import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRoleRecord; -import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.DomainRecord; -import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.RoleRecord; - -import static ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Tables.ACCOUNT; -import static ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Tables.ACCOUNT_ROLE; -import static ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Tables.DOMAIN; -import static ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Tables.ROLE; - -/** - * @author Adel Kalimullin - */ -@Repository -@Conditional(KafkaEnabledCondition.class) -public class IdmDirectoriesDao { - private final DSLContext dsl; - - public IdmDirectoriesDao(DSLContext dsl) { - this.dsl = dsl; - } - - public RoleRecord getRoleRecord() { - return dsl.newRecord(ROLE); - } - - public DomainRecord getDomainRecord() { - return dsl.newRecord(DOMAIN); - } - - public AccountRecord getAccountRecord() { - return dsl.newRecord(ACCOUNT); - } - - public AccountRoleRecord getAccountRoleRecord() { - return dsl.newRecord(ACCOUNT_ROLE); - } - - public Set getAccountIds() { - return dsl.select(ACCOUNT.ID) - .from(ACCOUNT) - .fetchSet(ACCOUNT.ID); - } - - public Set getRoleIds() { - return dsl.select(ROLE.ID) - .from(ROLE) - .fetchSet(ROLE.ID); - } - - public Set getDomainIds() { - return dsl.select(DOMAIN.ID) - .from(DOMAIN) - .fetchSet(DOMAIN.ID); - } - - public void insertDomainRecords(List domainRecords) { - dsl.batchInsert(domainRecords).execute(); - } - - public void updateDomainRecords(List domainRecords) { - dsl.batchUpdate(domainRecords).execute(); - } - - public void insertRoleRecords(List newRoleRecords) { - dsl.batchInsert(newRoleRecords).execute(); - } - - public void updateRoleRecords(List roleRecords) { - dsl.batchUpdate(roleRecords).execute(); - } - - public void insertAccountRecords(List newAccountRecords) { - dsl.batchInsert(newAccountRecords).execute(); - } - - public void updateAccountRecords(List accountRecords) { - dsl.batchUpdate(accountRecords).execute(); - } - - public void insertAccountRoleRecords(List newAccountRoleRecords) { - dsl.batchInsert(newAccountRoleRecords).execute(); - } - - public void deleteAccountRolesByAccountIds(List accountIds) { - dsl.deleteFrom(ACCOUNT_ROLE) - .where(ACCOUNT_ROLE.ACCOUNT_ID.in(accountIds)) - .execute(); - } - - public void deleteAccountByIds(List accountIds) { - dsl.deleteFrom(ACCOUNT) - .where(ACCOUNT.ID.in(accountIds)) - .execute(); - } - - public void deleteDomainsByIds(List domainIds) { - dsl.deleteFrom(DOMAIN) - .where(DOMAIN.ID.in(domainIds)) - .execute(); - } -} diff --git a/backend/src/main/java/ervu_business_metrics/dao/PersonDataDao.java b/backend/src/main/java/ervu_business_metrics/dao/PersonDataDao.java new file mode 100644 index 0000000..1026965 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/dao/PersonDataDao.java @@ -0,0 +1,30 @@ +package ervu_business_metrics.dao; + +import ervu_business_metrics.config.KafkaEnabledCondition; +import org.jooq.DSLContext; +import org.jooq.Table; +import org.springframework.context.annotation.Conditional; +import org.springframework.stereotype.Repository; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Tables; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.PersonRecord; + +/** + * @author Adel Kalimullin + */ +@Repository +@Conditional(KafkaEnabledCondition.class) +public class PersonDataDao extends AbstractDataDao { + + protected PersonDataDao(DSLContext dsl) { + super(dsl); + } + + public void setActiveStatus(String id , boolean active){ + setFieldByField(Tables.PERSON.ACTIVE, active, Tables.PERSON.ID, id); + } + + @Override + protected Table getTable() { + return Tables.PERSON; + } +} diff --git a/backend/src/main/java/ervu_business_metrics/dao/RoleDataDao.java b/backend/src/main/java/ervu_business_metrics/dao/RoleDataDao.java new file mode 100644 index 0000000..1049d07 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/dao/RoleDataDao.java @@ -0,0 +1,30 @@ +package ervu_business_metrics.dao; + +import ervu_business_metrics.config.KafkaEnabledCondition; +import org.jooq.DSLContext; +import org.jooq.Table; +import org.springframework.context.annotation.Conditional; +import org.springframework.stereotype.Repository; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Tables; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.RoleRecord; + +/** + * @author Adel Kalimullin + */ +@Repository +@Conditional(KafkaEnabledCondition.class) +public class RoleDataDao extends AbstractDataDao { + + protected RoleDataDao(DSLContext dsl) { + super(dsl); + } + + public void setActiveStatus(String id , boolean active){ + setFieldByField(Tables.ROLE.ACTIVE, active, Tables.ROLE.ID, id); + } + + @Override + protected Table getTable() { + return Tables.ROLE; + } +} diff --git a/backend/src/main/java/ervu_business_metrics/kafka/listener/IdmDirectoriesListener.java b/backend/src/main/java/ervu_business_metrics/kafka/listener/IdmDirectoriesListener.java index d572a52..fdc50ff 100644 --- a/backend/src/main/java/ervu_business_metrics/kafka/listener/IdmDirectoriesListener.java +++ b/backend/src/main/java/ervu_business_metrics/kafka/listener/IdmDirectoriesListener.java @@ -1,9 +1,7 @@ package ervu_business_metrics.kafka.listener; import ervu_business_metrics.config.KafkaEnabledCondition; -import ervu_business_metrics.model.idm.AccountData; -import ervu_business_metrics.model.idm.DomainData; -import ervu_business_metrics.model.idm.RoleData; +import ervu_business_metrics.model.idm.*; import ervu_business_metrics.service.IdmDirectoriesService; import org.springframework.context.annotation.Conditional; import org.springframework.kafka.annotation.KafkaListener; @@ -23,17 +21,7 @@ public class IdmDirectoriesListener { @KafkaListener(id = "${kafka.domain.group.id}", topics = "${kafka.domain.reconciliation}") public void listenKafkaDomain(String kafkaMessage) { - idmDirectoriesService.processUpsertMessage(kafkaMessage, DomainData.class); - } - - @KafkaListener(id = "${kafka.role.group.id}", topics = "${kafka.role.reconciliation}") - public void listenKafkaRole(String kafkaMessage) { - idmDirectoriesService.processUpsertMessage(kafkaMessage, RoleData.class); - } - - @KafkaListener(id = "${kafka.account.group.id}", topics = "${kafka.account.reconciliation}") - public void listenKafkaAccount(String kafkaMessage) { - idmDirectoriesService.processUpsertMessage(kafkaMessage, AccountData.class); + idmDirectoriesService.processUpsertMessage(kafkaMessage, DomainData.class); } @KafkaListener(id = "${kafka.domain.updated.group.id}", topics = "${kafka.domain.updated}") @@ -46,6 +34,41 @@ public class IdmDirectoriesListener { idmDirectoriesService.processUpsertMessage(kafkaMessage, DomainData.class); } + @KafkaListener(id = "${kafka.domain.deactivated.group.id}", topics = "${kafka.domain.deactivated}") + public void listenKafkaDomainDeactivated(String kafkaMessage) { + idmDirectoriesService.processStatusChange(kafkaMessage, DomainData.class, false); + } + + @KafkaListener(id = "${kafka.domain.activated.group.id}", topics = "${kafka.domain.activated}") + public void listenKafkaDomainActivated(String kafkaMessage) { + idmDirectoriesService.processStatusChange(kafkaMessage, DomainData.class, true); + } + + @KafkaListener(id = "${kafka.person.group.id}", topics = "${kafka.person.reconciliation}") + public void listenKafkaPerson(String kafkaMessage) { + idmDirectoriesService.processUpsertMessage(kafkaMessage, PersonData.class); + } + + @KafkaListener(id = "${kafka.person.updated.group.id}", topics = "${kafka.person.updated}") + public void listenKafkaPersonUpdated(String kafkaMessage) { + idmDirectoriesService.processUpsertMessage(kafkaMessage, PersonData.class); + } + + @KafkaListener(id = "${kafka.person.created.group.id}", topics = "${kafka.person.created}") + public void listenKafkaPersonCreated(String kafkaMessage) { + idmDirectoriesService.processUpsertMessage(kafkaMessage, PersonData.class); + } + + @KafkaListener(id = "${kafka.person.deactivated.group.id}", topics = "${kafka.person.deactivated}") + public void listenKafkaPersonDeactivated(String kafkaMessage) { + idmDirectoriesService.processStatusChange(kafkaMessage, PersonData.class, false); + } + + @KafkaListener(id = "${kafka.person.activated.group.id}", topics = "${kafka.person.activated}") + public void listenKafkaPersonActivated(String kafkaMessage) { + idmDirectoriesService.processStatusChange(kafkaMessage, PersonData.class, true); + } + @KafkaListener(id = "${kafka.account.updated.group.id}", topics = "${kafka.account.updated}") public void listenKafkaAccountUpdated(String kafkaMessage) { idmDirectoriesService.processUpsertMessage(kafkaMessage, AccountData.class); @@ -56,13 +79,48 @@ public class IdmDirectoriesListener { idmDirectoriesService.processUpsertMessage(kafkaMessage, AccountData.class); } - @KafkaListener(id = "${kafka.domain.deleted.group.id}", topics = "${kafka.domain.deleted}") - public void listenKafkaDomainDeleted(String kafkaMessage) { - idmDirectoriesService.processDeleteMessage(kafkaMessage, DomainData.class); + @KafkaListener(id = "${kafka.account.deactivated.group.id}", topics = "${kafka.account.deactivated}") + public void listenKafkaAccountDeactivated(String kafkaMessage) { + idmDirectoriesService.processStatusChange(kafkaMessage, AccountData.class, false); } - @KafkaListener(id = "${kafka.account.deleted.group.id}", topics = "${kafka.account.deleted}") - public void listenKafkaAccountDeleted(String kafkaMessage) { - idmDirectoriesService.processDeleteMessage(kafkaMessage, AccountData.class); + @KafkaListener(id = "${kafka.account.activated.group.id}", topics = "${kafka.account.activated}") + public void listenKafkaAccountActivated(String kafkaMessage) { + idmDirectoriesService.processStatusChange(kafkaMessage, AccountData.class, true); + } + + @KafkaListener(id = "${kafka.role.group.id}", topics = "${kafka.role.reconciliation}") + public void listenKafkaRole(String kafkaMessage) { + idmDirectoriesService.processUpsertMessage(kafkaMessage, RoleData.class); + } + + @KafkaListener(id = "${kafka.role.updated.group.id}", topics = "${kafka.role.updated}") + public void listenKafkaRoleUpdated(String kafkaMessage) { + idmDirectoriesService.processUpsertMessage(kafkaMessage, RoleData.class); + } + + @KafkaListener(id = "${kafka.role.created.group.id}", topics = "${kafka.role.created}") + public void listenKafkaRoleCreated(String kafkaMessage) { + idmDirectoriesService.processUpsertMessage(kafkaMessage, RoleData.class); + } + + @KafkaListener(id = "${kafka.role.deactivated.group.id}", topics = "${kafka.role.deactivated}") + public void listenKafkaRoleDeactivated(String kafkaMessage) { + idmDirectoriesService.processStatusChange(kafkaMessage, RoleData.class, false); + } + + @KafkaListener(id = "${kafka.role.activated.group.id}", topics = "${kafka.role.activated}") + public void listenKafkaRoleActivated(String kafkaMessage) { + idmDirectoriesService.processStatusChange(kafkaMessage, RoleData.class, true); + } + + @KafkaListener(id = "${kafka.account_role.created.group.id}", topics = "${kafka.account_role.created}") + public void listenKafkaAccountRoleCreated(String kafkaMessage) { + idmDirectoriesService.processUpsertMessage(kafkaMessage, AccountRoleData.class); + } + + @KafkaListener(id = "${kafka.account_role.deleted.group.id}", topics = "${kafka.account_role.deleted}") + public void listenKafkaAccountRoleDeleted(String kafkaMessage) { + idmDirectoriesService.processDeleteLink(kafkaMessage, AccountRoleData.class); } } diff --git a/backend/src/main/java/ervu_business_metrics/kafka/model/ChangeActiveMessage.java b/backend/src/main/java/ervu_business_metrics/kafka/model/ChangeActiveMessage.java new file mode 100644 index 0000000..d001f81 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/kafka/model/ChangeActiveMessage.java @@ -0,0 +1,29 @@ +package ervu_business_metrics.kafka.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import ervu_business_metrics.model.ReferenceEntity; + +/** + * @author Adel Kalimullin + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class ChangeActiveMessage { + private boolean success; + private ReferenceEntity data; + + public ReferenceEntity getData() { + return data; + } + + public void setData(ReferenceEntity data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } +} diff --git a/backend/src/main/java/ervu_business_metrics/kafka/model/DeleteKafkaMessage.java b/backend/src/main/java/ervu_business_metrics/kafka/model/DeleteKafkaMessage.java deleted file mode 100644 index 0382c67..0000000 --- a/backend/src/main/java/ervu_business_metrics/kafka/model/DeleteKafkaMessage.java +++ /dev/null @@ -1,47 +0,0 @@ -package ervu_business_metrics.kafka.model; - -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - -/** - * @author Adel Kalimullin - */ -@JsonIgnoreProperties(ignoreUnknown = true) -public class DeleteKafkaMessage { - private boolean success; - private String message; - private List data; - private String origin; - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public String getOrigin() { - return origin; - } - - public void setOrigin(String origin) { - this.origin = origin; - } -} diff --git a/backend/src/main/java/ervu_business_metrics/kafka/model/DeleteLinkMessage.java b/backend/src/main/java/ervu_business_metrics/kafka/model/DeleteLinkMessage.java new file mode 100644 index 0000000..7bf4cad --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/kafka/model/DeleteLinkMessage.java @@ -0,0 +1,28 @@ +package ervu_business_metrics.kafka.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +/** + * @author Adel Kalimullin + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class DeleteLinkMessage{ + private T data; + private boolean success; + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } +} diff --git a/backend/src/main/java/ervu_business_metrics/kafka/model/UpsertMessage.java b/backend/src/main/java/ervu_business_metrics/kafka/model/UpsertMessage.java index 220dafc..9fb9d6a 100644 --- a/backend/src/main/java/ervu_business_metrics/kafka/model/UpsertMessage.java +++ b/backend/src/main/java/ervu_business_metrics/kafka/model/UpsertMessage.java @@ -1,6 +1,5 @@ package ervu_business_metrics.kafka.model; -import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -9,13 +8,22 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; */ @JsonIgnoreProperties(ignoreUnknown = true) public class UpsertMessage{ - private List data; + private T data; + private boolean success; - public List getData() { + public T getData() { return data; } - public void setData(List data) { + public void setData(T data) { this.data = data; } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } } diff --git a/backend/src/main/java/ervu_business_metrics/model/idm/AccountData.java b/backend/src/main/java/ervu_business_metrics/model/idm/AccountData.java index 9c36953..912f130 100644 --- a/backend/src/main/java/ervu_business_metrics/model/idm/AccountData.java +++ b/backend/src/main/java/ervu_business_metrics/model/idm/AccountData.java @@ -14,20 +14,18 @@ import ervu_business_metrics.deserializer.ReferenceEntityDeserializer; @JsonIgnoreProperties(ignoreUnknown = true) public class AccountData { private String id; - private int version; + private boolean active; + private long start; + private long finish; + private long created; private long modified; - private String schema; - private String start; - private String finish; - private boolean enabled; - private String position; - private String fio; - private String workMail; - private boolean esiaAccount; - @JsonProperty("user-domain") - @JsonDeserialize(using = ReferenceEntityDeserializer.class) - private ReferenceEntity userDomain; - private List roles; + private long deleted; + private String appointment; + private Short sessionLimit; + private int version; + private ReferenceEntity domain; + private ReferenceEntity person; + private List roles; public String getId() { return id; @@ -37,12 +35,36 @@ public class AccountData { this.id = id; } - public int getVersion() { - return version; + public boolean getActive() { + return active; } - public void setVersion(int version) { - this.version = version; + public void setActive(boolean active) { + this.active = active; + } + + public long getStart() { + return start; + } + + public void setStart(long start) { + this.start = start; + } + + public long getFinish() { + return finish; + } + + public void setFinish(long finish) { + this.finish = finish; + } + + public long getCreated() { + return created; + } + + public void setCreated(long created) { + this.created = created; } public long getModified() { @@ -53,83 +75,59 @@ public class AccountData { this.modified = modified; } - public String getSchema() { - return schema; + public long getDeleted() { + return deleted; } - public void setSchema(String schema) { - this.schema = schema; + public void setDeleted(long deleted) { + this.deleted = deleted; } - public String getStart() { - return start; + public String getAppointment() { + return appointment; } - public void setStart(String start) { - this.start = start; + public void setAppointment(String appointment) { + this.appointment = appointment; } - public String getFinish() { - return finish; + public Short getSessionLimit() { + return sessionLimit; } - public void setFinish(String finish) { - this.finish = finish; + public void setSessionLimit(Short sessionLimit) { + this.sessionLimit = sessionLimit; } - public boolean isEnabled() { - return enabled; + public int getVersion() { + return version; } - public void setEnabled(boolean enabled) { - this.enabled = enabled; + public void setVersion(int version) { + this.version = version; } - public String getPosition() { - return position; + public ReferenceEntity getDomain() { + return domain; } - public void setPosition(String position) { - this.position = position; + public void setDomain(ReferenceEntity domain) { + this.domain = domain; } - public String getFio() { - return fio; + public ReferenceEntity getPerson() { + return person; } - public void setFio(String fio) { - this.fio = fio; + public void setPerson(ReferenceEntity person) { + this.person = person; } - public String getWorkMail() { - return workMail; - } - - public void setWorkMail(String workMail) { - this.workMail = workMail; - } - - public boolean isEsiaAccount() { - return esiaAccount; - } - - public void setEsiaAccount(boolean esiaAccount) { - this.esiaAccount = esiaAccount; - } - - public ReferenceEntity getUserDomain() { - return userDomain; - } - - public void setUserDomain(ReferenceEntity userDomain) { - this.userDomain = userDomain; - } - - public List getRoles() { + public List getRoles() { return roles; } - public void setRoles(List roles) { + public void setRoles(List roles) { this.roles = roles; } } diff --git a/backend/src/main/java/ervu_business_metrics/model/idm/AccountRoleData.java b/backend/src/main/java/ervu_business_metrics/model/idm/AccountRoleData.java new file mode 100644 index 0000000..5b456f3 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/model/idm/AccountRoleData.java @@ -0,0 +1,49 @@ +package ervu_business_metrics.model.idm; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * @author Adel Kalimullin + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class AccountRoleData { + @JsonProperty("idAccount") + private String id; + @JsonProperty("idRole") + private String roleId; + private long finish; + + public AccountRoleData(String id, String roleId, long finish) { + this.id = id; + this.roleId = roleId; + this.finish = finish; + } + + public AccountRoleData() { + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getRoleId() { + return roleId; + } + + public void setRoleId(String roleId) { + this.roleId = roleId; + } + + public long getFinish() { + return finish; + } + + public void setFinish(long finish) { + this.finish = finish; + } +} diff --git a/backend/src/main/java/ervu_business_metrics/model/idm/DomainData.java b/backend/src/main/java/ervu_business_metrics/model/idm/DomainData.java index 997d7e7..ec59cba 100644 --- a/backend/src/main/java/ervu_business_metrics/model/idm/DomainData.java +++ b/backend/src/main/java/ervu_business_metrics/model/idm/DomainData.java @@ -1,62 +1,36 @@ package ervu_business_metrics.model.idm; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import ervu_business_metrics.deserializer.ReferenceEntityDeserializer; +import ervu_business_metrics.model.ReferenceEntity; /** * @author Adel Kalimullin */ @JsonIgnoreProperties(ignoreUnknown = true) public class DomainData { + @JsonProperty("id") private String id; - private int version; - private long modified; - private String schema; - private String name; - private String shortname; - private String fullname; - private String dns; - private String email; - private String phone; - private String address; - private String postalAddress; - private String addressId; - private String postalAddressId; - private String militaryCode; - private String timezone; - private boolean reportsEnabled; - private String inn; - private String leg; - private String ogrn; - private String region; - private String epguId; + @JsonProperty("codeDomainType") private String type; - private boolean esiaEmployeeAuthorization; - private String defaultS3Bucket; - private String opf; - private String kpp; - private String checkingAccount; - private String bik; - private String bankName; - private String bankCorrespondentAccount; - private String oktmo; - private String okato; - private String govRegistrationDate; - private String govOrganizationType; - private String aliasKey; - private String passKey; - private String certificate; - private String accountNumberTOFK; - private String bikTOFK; - private String correspondentBankAccountTOFK; - private String nameTOFK; - private String nsiOrganizationId; - private String docHandle; - private String divisionType; - private String tnsDepartmentId; - private boolean enabled; - private String parent; - private String regionId; - private String managed; + private String name; + private String fullName; + private String shortName; + private boolean reportsEnabled; + private boolean active; + private long created; + private long modified; + private long deleted; + private String postalAddressId; + private String addressId; + private String militaryCode; + private String timeZone; + private String subpoenaSeriesCode; + private int version; + private RegionInfo region; + private ReferenceEntity parent; public String getId() { return id; @@ -66,174 +40,6 @@ public class DomainData { this.id = id; } - public int getVersion() { - return version; - } - - public void setVersion(int version) { - this.version = version; - } - - public long getModified() { - return modified; - } - - public void setModified(long modified) { - this.modified = modified; - } - - public String getSchema() { - return schema; - } - - public void setSchema(String schema) { - this.schema = schema; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getShortname() { - return shortname; - } - - public void setShortname(String shortname) { - this.shortname = shortname; - } - - public String getFullname() { - return fullname; - } - - public void setFullname(String fullname) { - this.fullname = fullname; - } - - public String getDns() { - return dns; - } - - public void setDns(String dns) { - this.dns = dns; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getPhone() { - return phone; - } - - public void setPhone(String phone) { - this.phone = phone; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getPostalAddress() { - return postalAddress; - } - - public void setPostalAddress(String postalAddress) { - this.postalAddress = postalAddress; - } - - public String getAddressId() { - return addressId; - } - - public void setAddressId(String addressId) { - this.addressId = addressId; - } - - public String getPostalAddressId() { - return postalAddressId; - } - - public void setPostalAddressId(String postalAddressId) { - this.postalAddressId = postalAddressId; - } - - public String getMilitaryCode() { - return militaryCode; - } - - public void setMilitaryCode(String militaryCode) { - this.militaryCode = militaryCode; - } - - public String getTimezone() { - return timezone; - } - - public void setTimezone(String timezone) { - this.timezone = timezone; - } - - public boolean isReportsEnabled() { - return reportsEnabled; - } - - public void setReportsEnabled(boolean reportsEnabled) { - this.reportsEnabled = reportsEnabled; - } - - public String getInn() { - return inn; - } - - public void setInn(String inn) { - this.inn = inn; - } - - public String getLeg() { - return leg; - } - - public void setLeg(String leg) { - this.leg = leg; - } - - public String getOgrn() { - return ogrn; - } - - public void setOgrn(String ogrn) { - this.ogrn = ogrn; - } - - public String getRegion() { - return region; - } - - public void setRegion(String region) { - this.region = region; - } - - public String getEpguId() { - return epguId; - } - - public void setEpguId(String epguId) { - this.epguId = epguId; - } - public String getType() { return type; } @@ -242,219 +48,131 @@ public class DomainData { this.type = type; } - public boolean isEsiaEmployeeAuthorization() { - return esiaEmployeeAuthorization; + public String getName() { + return name; } - public void setEsiaEmployeeAuthorization(boolean esiaEmployeeAuthorization) { - this.esiaEmployeeAuthorization = esiaEmployeeAuthorization; + public void setName(String name) { + this.name = name; } - public String getDefaultS3Bucket() { - return defaultS3Bucket; + public String getFullName() { + return fullName; } - public void setDefaultS3Bucket(String defaultS3Bucket) { - this.defaultS3Bucket = defaultS3Bucket; + public void setFullName(String fullName) { + this.fullName = fullName; } - public String getOpf() { - return opf; + public String getShortName() { + return shortName; } - public void setOpf(String opf) { - this.opf = opf; + public void setShortName(String shortName) { + this.shortName = shortName; } - public String getKpp() { - return kpp; + public Boolean getReportsEnabled() { + return reportsEnabled; } - public void setKpp(String kpp) { - this.kpp = kpp; + public void setReportsEnabled(Boolean reportsEnabled) { + this.reportsEnabled = reportsEnabled; } - public String getCheckingAccount() { - return checkingAccount; + public Boolean getActive() { + return active; } - public void setCheckingAccount(String checkingAccount) { - this.checkingAccount = checkingAccount; + public void setActive(Boolean active) { + this.active = active; } - public String getBik() { - return bik; + public long getCreated() { + return created; } - public void setBik(String bik) { - this.bik = bik; + public void setCreated(long created) { + this.created = created; } - public String getBankName() { - return bankName; + public long getModified() { + return modified; } - public void setBankName(String bankName) { - this.bankName = bankName; + public void setModified(long modified) { + this.modified = modified; } - public String getBankCorrespondentAccount() { - return bankCorrespondentAccount; + public long getDeleted() { + return deleted; } - public void setBankCorrespondentAccount(String bankCorrespondentAccount) { - this.bankCorrespondentAccount = bankCorrespondentAccount; + public void setDeleted(long deleted) { + this.deleted = deleted; } - public String getOktmo() { - return oktmo; + public String getPostalAddressId() { + return postalAddressId; } - public void setOktmo(String oktmo) { - this.oktmo = oktmo; + public void setPostalAddressId(String postalAddressId) { + this.postalAddressId = postalAddressId; } - public String getOkato() { - return okato; + public String getAddressId() { + return addressId; } - public void setOkato(String okato) { - this.okato = okato; + public void setAddressId(String addressId) { + this.addressId = addressId; } - public String getGovRegistrationDate() { - return govRegistrationDate; + public String getMilitaryCode() { + return militaryCode; } - public void setGovRegistrationDate(String govRegistrationDate) { - this.govRegistrationDate = govRegistrationDate; + public void setMilitaryCode(String militaryCode) { + this.militaryCode = militaryCode; } - public String getGovOrganizationType() { - return govOrganizationType; + public String getTimeZone() { + return timeZone; } - public void setGovOrganizationType(String govOrganizationType) { - this.govOrganizationType = govOrganizationType; + public void setTimeZone(String timeZone) { + this.timeZone = timeZone; } - public String getAliasKey() { - return aliasKey; + public String getSubpoenaSeriesCode() { + return subpoenaSeriesCode; } - public void setAliasKey(String aliasKey) { - this.aliasKey = aliasKey; + public void setSubpoenaSeriesCode(String subpoenaSeriesCode) { + this.subpoenaSeriesCode = subpoenaSeriesCode; } - public String getPassKey() { - return passKey; - } - - public void setPassKey(String passKey) { - this.passKey = passKey; - } - - public String getCertificate() { - return certificate; - } - - public void setCertificate(String certificate) { - this.certificate = certificate; - } - - public String getAccountNumberTOFK() { - return accountNumberTOFK; - } - - public void setAccountNumberTOFK(String accountNumberTOFK) { - this.accountNumberTOFK = accountNumberTOFK; - } - - public String getBikTOFK() { - return bikTOFK; - } - - public void setBikTOFK(String bikTOFK) { - this.bikTOFK = bikTOFK; - } - - public String getCorrespondentBankAccountTOFK() { - return correspondentBankAccountTOFK; - } - - public void setCorrespondentBankAccountTOFK(String correspondentBankAccountTOFK) { - this.correspondentBankAccountTOFK = correspondentBankAccountTOFK; - } - - public String getNameTOFK() { - return nameTOFK; - } - - public void setNameTOFK(String nameTOFK) { - this.nameTOFK = nameTOFK; - } - - public String getNsiOrganizationId() { - return nsiOrganizationId; - } - - public void setNsiOrganizationId(String nsiOrganizationId) { - this.nsiOrganizationId = nsiOrganizationId; - } - - public String getDocHandle() { - return docHandle; - } - - public void setDocHandle(String docHandle) { - this.docHandle = docHandle; - } - - public String getDivisionType() { - return divisionType; - } - - public void setDivisionType(String divisionType) { - this.divisionType = divisionType; - } - - public String getTnsDepartmentId() { - return tnsDepartmentId; - } - - public void setTnsDepartmentId(String tnsDepartmentId) { - this.tnsDepartmentId = tnsDepartmentId; - } - - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public String getParent() { + public ReferenceEntity getParent() { return parent; } - public void setParent(String parent) { + public void setParent(ReferenceEntity parent) { this.parent = parent; } - public String getRegionId() { - return regionId; + public int getVersion() { + return version; } - public void setRegionId(String regionId) { - this.regionId = regionId; + public void setVersion(int version) { + this.version = version; } - public String getManaged() { - return managed; + public RegionInfo getRegion() { + return region; } - public void setManaged(String managed) { - this.managed = managed; + public void setRegion(RegionInfo region) { + this.region = region; } } diff --git a/backend/src/main/java/ervu_business_metrics/model/idm/PersonData.java b/backend/src/main/java/ervu_business_metrics/model/idm/PersonData.java new file mode 100644 index 0000000..a5b9ac9 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/model/idm/PersonData.java @@ -0,0 +1,138 @@ +package ervu_business_metrics.model.idm; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +/** + * @author Adel Kalimullin + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class PersonData { + private String id; + private String login; + private String firstName; + private String lastName; + private String middleName; + private Boolean secondFactorEnabled; + private List accounts; + private long created; + private long modified; + private long deleted; + private long blocked; + private long blockUntil; + private int version; + private boolean active; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getMiddleName() { + return middleName; + } + + public void setMiddleName(String middleName) { + this.middleName = middleName; + } + + public Boolean getSecondFactorEnabled() { + return secondFactorEnabled; + } + + public void setSecondFactorEnabled(Boolean secondFactorEnabled) { + this.secondFactorEnabled = secondFactorEnabled; + } + + public List getAccounts() { + return accounts; + } + + public void setAccounts(List accounts) { + this.accounts = accounts; + } + + public long getCreated() { + return created; + } + + public void setCreated(long created) { + this.created = created; + } + + public long getModified() { + return modified; + } + + public void setModified(long modified) { + this.modified = modified; + } + + public long getDeleted() { + return deleted; + } + + public void setDeleted(long deleted) { + this.deleted = deleted; + } + + public int getVersion() { + return version; + } + + public void setVersion(int version) { + this.version = version; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public long getBlocked() { + return blocked; + } + + public void setBlocked(long blocked) { + this.blocked = blocked; + } + + public long getBlockUntil() { + return blockUntil; + } + + public void setBlockUntil(long blockUntil) { + this.blockUntil = blockUntil; + } +} diff --git a/backend/src/main/java/ervu_business_metrics/model/idm/RegionInfo.java b/backend/src/main/java/ervu_business_metrics/model/idm/RegionInfo.java new file mode 100644 index 0000000..31f9461 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/model/idm/RegionInfo.java @@ -0,0 +1,19 @@ +package ervu_business_metrics.model.idm; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +/** + * @author Adel Kalimullin + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class RegionInfo { + private String code; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} diff --git a/backend/src/main/java/ervu_business_metrics/model/idm/RoleData.java b/backend/src/main/java/ervu_business_metrics/model/idm/RoleData.java index 00d2f4a..9718328 100644 --- a/backend/src/main/java/ervu_business_metrics/model/idm/RoleData.java +++ b/backend/src/main/java/ervu_business_metrics/model/idm/RoleData.java @@ -8,16 +8,15 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @JsonIgnoreProperties(ignoreUnknown = true) public class RoleData { private String id; - private int version; - private long modified; - private String schema; private String name; - private String shortname; - private String displayName; - private int sessionsLimit; - private boolean ervuRole; - private int imported; private String description; + private String displayName; + private Boolean active; + private long created; + private long modified; + private long deleted; + private int version; + private long finish; public String getId() { return id; @@ -27,30 +26,6 @@ public class RoleData { this.id = id; } - public int getVersion() { - return version; - } - - public void setVersion(int version) { - this.version = version; - } - - public long getModified() { - return modified; - } - - public void setModified(long modified) { - this.modified = modified; - } - - public String getSchema() { - return schema; - } - - public void setSchema(String schema) { - this.schema = schema; - } - public String getName() { return name; } @@ -59,12 +34,12 @@ public class RoleData { this.name = name; } - public String getShortname() { - return shortname; + public String getDescription() { + return description; } - public void setShortname(String shortname) { - this.shortname = shortname; + public void setDescription(String description) { + this.description = description; } public String getDisplayName() { @@ -75,35 +50,51 @@ public class RoleData { this.displayName = displayName; } - public int getSessionsLimit() { - return sessionsLimit; + public Boolean getActive() { + return active; } - public void setSessionsLimit(int sessionsLimit) { - this.sessionsLimit = sessionsLimit; + public void setActive(Boolean active) { + this.active = active; } - public boolean isErvuRole() { - return ervuRole; + public long getCreated() { + return created; } - public void setErvuRole(boolean ervuRole) { - this.ervuRole = ervuRole; + public void setCreated(long created) { + this.created = created; } - public int getImported() { - return imported; + public long getModified() { + return modified; } - public void setImported(int imported) { - this.imported = imported; + public void setModified(long modified) { + this.modified = modified; } - public String getDescription() { - return description; + public long getDeleted() { + return deleted; } - public void setDescription(String description) { - this.description = description; + public void setDeleted(long deleted) { + this.deleted = deleted; + } + + public int getVersion() { + return version; + } + + public void setVersion(int version) { + this.version = version; + } + + public long getFinish() { + return finish; + } + + public void setFinish(long finish) { + this.finish = finish; } } diff --git a/backend/src/main/java/ervu_business_metrics/model/sso/UserAccount.java b/backend/src/main/java/ervu_business_metrics/model/sso/UserAccount.java index fcc948a..79347fc 100644 --- a/backend/src/main/java/ervu_business_metrics/model/sso/UserAccount.java +++ b/backend/src/main/java/ervu_business_metrics/model/sso/UserAccount.java @@ -1,9 +1,7 @@ package ervu_business_metrics.model.sso; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import ervu_business_metrics.model.ReferenceEntity; -import ervu_business_metrics.deserializer.ReferenceEntityDeserializer; /** @@ -12,7 +10,6 @@ import ervu_business_metrics.deserializer.ReferenceEntityDeserializer; @JsonIgnoreProperties(ignoreUnknown = true) public class UserAccount { private String id; - @JsonDeserialize(using = ReferenceEntityDeserializer.class) private ReferenceEntity domain; public String getId() { diff --git a/backend/src/main/java/ervu_business_metrics/security/service/ErvuJwtTokenService.java b/backend/src/main/java/ervu_business_metrics/security/service/ErvuJwtTokenService.java index d89c0fd..661388c 100644 --- a/backend/src/main/java/ervu_business_metrics/security/service/ErvuJwtTokenService.java +++ b/backend/src/main/java/ervu_business_metrics/security/service/ErvuJwtTokenService.java @@ -2,7 +2,11 @@ package ervu_business_metrics.security.service; import java.time.Instant; import java.time.temporal.ChronoUnit; -import java.util.*; +import java.util.ArrayList; +import java.util.Base64; +import java.util.Date; +import java.util.List; +import java.util.Set; import java.util.stream.Collectors; import javax.crypto.SecretKey; diff --git a/backend/src/main/java/ervu_business_metrics/service/IdmDirectoriesDaoService.java b/backend/src/main/java/ervu_business_metrics/service/IdmDirectoriesDaoService.java deleted file mode 100644 index 12483b6..0000000 --- a/backend/src/main/java/ervu_business_metrics/service/IdmDirectoriesDaoService.java +++ /dev/null @@ -1,103 +0,0 @@ -package ervu_business_metrics.service; - - -import java.util.List; -import java.util.Set; - -import ervu_business_metrics.dao.IdmDirectoriesDao; -import ervu_business_metrics.config.KafkaEnabledCondition; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Repository; -import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.*; - - -/** - * @author Adel Kalimullin - */ -@Repository -@Conditional(KafkaEnabledCondition.class) -public class IdmDirectoriesDaoService { - private final IdmDirectoriesDao idmDirectoriesDao; - - public IdmDirectoriesDaoService(IdmDirectoriesDao idmDirectoriesDao) { - this.idmDirectoriesDao = idmDirectoriesDao; - } - - public RoleRecord getRoleRecord() { - return idmDirectoriesDao.getRoleRecord(); - } - - public DomainRecord getDomainRecord() { - return idmDirectoriesDao.getDomainRecord(); - } - - public AccountRecord getAccountRecord() { - return idmDirectoriesDao.getAccountRecord(); - } - - public AccountRoleRecord getAccountRoleRecord() { - return idmDirectoriesDao.getAccountRoleRecord(); - } - - @Cacheable(value = "account-ids", unless = "#result == null") - public Set getAccountIds() { - return idmDirectoriesDao.getAccountIds(); - } - - @Cacheable(value = "role-ids", unless = "#result == null") - public Set getRoleIds() { - return idmDirectoriesDao.getRoleIds(); - } - - @Cacheable(value = "domain-ids", unless = "#result == null") - public Set getDomainIds() { - return idmDirectoriesDao.getDomainIds(); - } - - @CacheEvict(value = "domain-ids", allEntries = true) - public void insertDomainRecords(List newDomainRecords) { - idmDirectoriesDao.insertDomainRecords(newDomainRecords); - } - - public void updateDomainRecords(List domainRecords) { - idmDirectoriesDao.updateDomainRecords(domainRecords); - } - - @CacheEvict(value = "role-ids", allEntries = true) - public void insertRoleRecords(List newRoleRecords) { - idmDirectoriesDao.insertRoleRecords(newRoleRecords); - } - - public void updateRoleRecords(List roleRecords) { - idmDirectoriesDao.updateRoleRecords(roleRecords); - } - - @CacheEvict(value = "account-ids", allEntries = true) - public void insertAccountRecords(List accountRecords) { - idmDirectoriesDao.insertAccountRecords(accountRecords); - } - - public void updateAccountRecords(List accountRecords) { - idmDirectoriesDao.updateAccountRecords(accountRecords); - } - - public void insertAccountRoleRecords(List newAccountRoleRecords) { - idmDirectoriesDao.insertAccountRoleRecords(newAccountRoleRecords); - } - - public void deleteAccountRolesByAccountIds(List accountIds) { - idmDirectoriesDao.deleteAccountRolesByAccountIds(accountIds); - } - - @CacheEvict(value = "domain-ids", allEntries = true) - public void deleteDomainsByIds(List domainIds) { - idmDirectoriesDao.deleteDomainsByIds(domainIds); - } - - @CacheEvict(value = "account-ids", allEntries = true) - public void deleteAccountsByIds(List accountIds) { - idmDirectoriesDao.deleteAccountByIds(accountIds); - } -} diff --git a/backend/src/main/java/ervu_business_metrics/service/IdmDirectoriesService.java b/backend/src/main/java/ervu_business_metrics/service/IdmDirectoriesService.java index 8807ec1..73ca68d 100644 --- a/backend/src/main/java/ervu_business_metrics/service/IdmDirectoriesService.java +++ b/backend/src/main/java/ervu_business_metrics/service/IdmDirectoriesService.java @@ -2,36 +2,29 @@ package ervu_business_metrics.service; import java.lang.invoke.MethodHandles; import java.util.Arrays; -import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; import ervu_business_metrics.config.KafkaEnabledCondition; -import ervu_business_metrics.kafka.model.DeleteKafkaMessage; +import ervu_business_metrics.kafka.model.ChangeActiveMessage; +import ervu_business_metrics.kafka.model.DeleteLinkMessage; import ervu_business_metrics.kafka.model.UpsertMessage; -import ervu_business_metrics.model.idm.AccountData; -import ervu_business_metrics.model.idm.DomainData; -import ervu_business_metrics.model.idm.RoleData; -import ervu_business_metrics.service.processor.impl.AccountDataProcessor; import ervu_business_metrics.service.processor.DataProcessor; -import ervu_business_metrics.service.processor.impl.DomainDataProcessor; -import ervu_business_metrics.service.processor.impl.RoleDataProcessor; +import ervu_business_metrics.service.processor.LinkDataProcessor; import exception.IdmDirectoriesException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Caching; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.DependsOn; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; /** * @author Adel Kalimullin @@ -44,41 +37,29 @@ public class IdmDirectoriesService { MethodHandles.lookup().lookupClass()); private final RestTemplate restTemplate; private final ObjectMapper objectMapper; - private final Map, DataProcessor> dataProcessors = new HashMap<>(); + private final Map, DataProcessor> dataProcessors; @Value("${ervu.idm.url}") private String idmUrl; - @Value("${ervu.directories:domain, role , account }") + @Value("${ervu.directories:domain, role , person }") private String ervuDirectories; public IdmDirectoriesService( RestTemplate restTemplate, - AccountDataProcessor accountDataProcessor, - DomainDataProcessor domainDataProcessor, - RoleDataProcessor roleDataProcessor, ObjectMapper objectMapper) { + ObjectMapper objectMapper, List> processors) { this.restTemplate = restTemplate; this.objectMapper = objectMapper; - dataProcessors.put(AccountData.class, accountDataProcessor); - dataProcessors.put(DomainData.class, domainDataProcessor); - dataProcessors.put(RoleData.class, roleDataProcessor); + this.dataProcessors = processors.stream() + .collect(Collectors.toMap(DataProcessor::getType, p -> p)); } - @Caching(evict = { - @CacheEvict(value = "domain-ids", allEntries = true), - @CacheEvict(value = "role-ids", allEntries = true), - @CacheEvict(value = "account-ids", allEntries = true) - }) public void updateDirectories() { try { String[] ervuDirectoriesArray = ervuDirectories.split(","); Arrays.stream(ervuDirectoriesArray).forEach(ervuDirectory -> { - String targetUrl = idmUrl + "/reconcile/" + ervuDirectory.trim() + "/to/kafka/v1"; - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - String emptyJson = "{}"; - HttpEntity requestEntity = new HttpEntity<>(emptyJson, headers); - ResponseEntity response = restTemplate.postForEntity(targetUrl, requestEntity, - String.class - ); + String targetUrl = UriComponentsBuilder.fromHttpUrl(idmUrl) + .pathSegment("reconcile", ervuDirectory.trim(), "to", "kafka", "v1") + .toUriString(); + ResponseEntity response = restTemplate.getForEntity(targetUrl, String.class); if (!response.getStatusCode().is2xxSuccessful()) { LOGGER.error("Error in {} request. Status code: {}; Body: {}", ervuDirectory, response.getStatusCode(), response.getBody() @@ -97,18 +78,16 @@ public class IdmDirectoriesService { try { JavaType messageType = objectMapper.getTypeFactory() .constructParametricType(UpsertMessage.class, entityClass); - JavaType arrayType = objectMapper.getTypeFactory() - .constructArrayType(messageType); - UpsertMessage[] messages = objectMapper.readValue(kafkaMessage, arrayType); - if (messages.length > 0 && messages[0].getData() != null && !messages[0].getData() - .isEmpty()) { - DataProcessor processor = (DataProcessor) dataProcessors.get(entityClass); + UpsertMessage message = objectMapper.readValue(kafkaMessage, messageType); + + if (message.isSuccess() && message.getData() != null) { + DataProcessor processor = (DataProcessor) dataProcessors.get(entityClass); if (processor == null) { throw new IllegalStateException("No processor found for " + entityClass.getSimpleName()); } - processor.upsertData(messages[0].getData()); + processor.upsertData(message.getData()); } } catch (Exception e) { @@ -117,23 +96,44 @@ public class IdmDirectoriesService { } @Transactional - public void processDeleteMessage(String kafkaMessage, Class entityClass) { + public void processStatusChange(String kafkaMessage, Class entityClass, boolean active) { try { - DeleteKafkaMessage[] deleteKafkaMessages = objectMapper.readValue(kafkaMessage, - DeleteKafkaMessage[].class + ChangeActiveMessage changeActiveMessage = objectMapper.readValue(kafkaMessage, + ChangeActiveMessage.class ); - if (Boolean.TRUE.equals(deleteKafkaMessages[0].isSuccess()) - && deleteKafkaMessages[0].getData() != null && !deleteKafkaMessages[0].getData() - .isEmpty()) { - DataProcessor processor = (DataProcessor) dataProcessors.get(entityClass); + if (changeActiveMessage.isSuccess() && changeActiveMessage.getData() != null) { + DataProcessor processor = (DataProcessor) dataProcessors.get(entityClass); if (processor == null) { throw new IllegalStateException("No processor found for " + entityClass.getSimpleName()); } - processor.deleteData(deleteKafkaMessages[0].getData()); + processor.changeActiveStatus(changeActiveMessage.getData().getId(), active); } + } + catch (Exception e) { + throw new IdmDirectoriesException(e); + } + } + @Transactional + public void processDeleteLink(String kafkaMessage, Class entityClass) { + try { + JavaType messageType = objectMapper.getTypeFactory() + .constructParametricType(DeleteLinkMessage.class, entityClass); + DeleteLinkMessage message = objectMapper.readValue(kafkaMessage, messageType); + + if (message.isSuccess() && message.getData() != null) { + DataProcessor processor = (DataProcessor) dataProcessors.get(entityClass); + if (processor instanceof LinkDataProcessor linkProcessor) { + linkProcessor.deleteLink(message.getData()); + } + else { + LOGGER.warn("Processor {} does not support deleteLink operation", + entityClass.getSimpleName() + ); + } + } } catch (Exception e) { throw new IdmDirectoriesException(e); diff --git a/backend/src/main/java/ervu_business_metrics/service/processor/DataProcessor.java b/backend/src/main/java/ervu_business_metrics/service/processor/DataProcessor.java index 9fb0e49..56c591b 100644 --- a/backend/src/main/java/ervu_business_metrics/service/processor/DataProcessor.java +++ b/backend/src/main/java/ervu_business_metrics/service/processor/DataProcessor.java @@ -1,11 +1,14 @@ package ervu_business_metrics.service.processor; -import java.util.List; - /** * @author Adel Kalimullin */ -public interface DataProcessor { - void upsertData(List dataList); - void deleteData(List ids); +public interface DataProcessor { + void upsertData(T data); + + void changeActiveStatus(String id, boolean active); + + Class getType(); + + R mapToRecord(T data); } \ No newline at end of file diff --git a/backend/src/main/java/ervu_business_metrics/service/processor/LinkDataProcessor.java b/backend/src/main/java/ervu_business_metrics/service/processor/LinkDataProcessor.java new file mode 100644 index 0000000..d952502 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/service/processor/LinkDataProcessor.java @@ -0,0 +1,9 @@ +package ervu_business_metrics.service.processor; + +/** + * @author Adel Kalimullin + */ +public interface LinkDataProcessor extends DataProcessor { + + void deleteLink(T data); +} diff --git a/backend/src/main/java/ervu_business_metrics/service/processor/impl/AccountDataProcessor.java b/backend/src/main/java/ervu_business_metrics/service/processor/impl/AccountDataProcessor.java index ef61126..b0515e2 100644 --- a/backend/src/main/java/ervu_business_metrics/service/processor/impl/AccountDataProcessor.java +++ b/backend/src/main/java/ervu_business_metrics/service/processor/impl/AccountDataProcessor.java @@ -1,104 +1,100 @@ package ervu_business_metrics.service.processor.impl; -import java.sql.Timestamp; -import java.time.Instant; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Set; import ervu_business_metrics.config.KafkaEnabledCondition; +import ervu_business_metrics.dao.AccountDataDao; +import ervu_business_metrics.model.ReferenceEntity; import ervu_business_metrics.model.idm.AccountData; -import ervu_business_metrics.service.IdmDirectoriesDaoService; import ervu_business_metrics.service.processor.DataProcessor; import org.springframework.context.annotation.Conditional; import org.springframework.stereotype.Component; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRecord; -import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRoleRecord; + /** * @author Adel Kalimullin */ @Component @Conditional(KafkaEnabledCondition.class) -public class AccountDataProcessor implements DataProcessor { - private final IdmDirectoriesDaoService idmDirectoriesDaoService; +public class AccountDataProcessor implements DataProcessor { + private final AccountDataDao dao; + private final AccountRoleDataProcessor accountRoleDataProcessor; - public AccountDataProcessor(IdmDirectoriesDaoService idmDirectoriesDaoService) { - this.idmDirectoriesDaoService = idmDirectoriesDaoService; + public AccountDataProcessor(AccountDataDao dao, + AccountRoleDataProcessor accountRoleDataProcessor) { + this.dao = dao; + this.accountRoleDataProcessor = accountRoleDataProcessor; } @Override - public void upsertData(List dataList) { - List newAccountRecords = new ArrayList<>(); - List accountRecordsToUpdate = new ArrayList<>(); - List newAccountRoleRecords = new ArrayList<>(); - List accountsToDeleteRoles = new ArrayList<>(); - Set existingIds = idmDirectoriesDaoService.getAccountIds(); - - for (AccountData data : dataList) { - AccountRecord record = idmDirectoriesDaoService.getAccountRecord(); - Timestamp modifiedAt = Timestamp.from(Instant.ofEpochMilli(data.getModified())); - - record.setId(data.getId()); - record.setVersion(data.getVersion()); - record.setSchema(data.getSchema()); - record.setModified(modifiedAt); - record.setStart(data.getStart()); - record.setFinish(data.getFinish()); - record.setEnabled(data.isEnabled()); - record.setPosition(data.getPosition()); - record.setFio(data.getFio()); - record.setWorkMail(data.getWorkMail()); - record.setEsiaAccount(data.isEsiaAccount()); - if (data.getUserDomain() != null) { - record.setDomainId(data.getUserDomain().getId()); - } - - if (existingIds.contains(data.getId())) { - accountRecordsToUpdate.add(record); - accountsToDeleteRoles.add(data.getId()); - } - else { - newAccountRecords.add(record); - } - - if (data.getRoles() != null && !data.getRoles().isEmpty()) { - addRolesForAccount(data, newAccountRoleRecords); - } - } - - if (!newAccountRecords.isEmpty()) { - idmDirectoriesDaoService.insertAccountRecords(newAccountRecords); - } - - if (!accountRecordsToUpdate.isEmpty()) { - idmDirectoriesDaoService.updateAccountRecords(accountRecordsToUpdate); - } - - if (!accountsToDeleteRoles.isEmpty()) { - idmDirectoriesDaoService.deleteAccountRolesByAccountIds(accountsToDeleteRoles); - } - - if (!newAccountRoleRecords.isEmpty()) { - idmDirectoriesDaoService.insertAccountRoleRecords(newAccountRoleRecords); - } + public void upsertData(AccountData data) { + AccountRecord accountRecord = mapToRecord(data); + dao.upsertData(accountRecord); } @Override - public void deleteData(List ids) { - idmDirectoriesDaoService.deleteAccountsByIds(ids); + public void changeActiveStatus(String id, boolean active) { + dao.setActiveStatus(id, active); } - private void addRolesForAccount(AccountData data, List accountRoleRecords) { - Set existingRoleIds = idmDirectoriesDaoService.getRoleIds(); + @Override + public Class getType() { + return AccountData.class; + } - for (String roleId : data.getRoles()) { - if (existingRoleIds.contains(roleId)) { - AccountRoleRecord accountRoleRecord = idmDirectoriesDaoService.getAccountRoleRecord(); - accountRoleRecord.setAccountId(data.getId()); - accountRoleRecord.setRoleId(roleId); - accountRoleRecords.add(accountRoleRecord); - } + @Override + public AccountRecord mapToRecord(AccountData data) { + AccountRecord acc = dao.newRecord(); + acc.setId(data.getId()); + acc.setPersonId(data.getPerson().getId()); + acc.setVersion(data.getVersion()); + acc.setActive(data.getActive()); + acc.setCreated(data.getCreated()); + acc.setModified(data.getModified()); + acc.setDeleted(data.getDeleted()); + acc.setStart(data.getStart()); + acc.setFinish(data.getFinish()); + acc.setAppointment(data.getAppointment()); + acc.setSessionLimit(data.getSessionLimit()); + if (data.getDomain() != null) { + acc.setDomainId(data.getDomain().getId()); + } + return acc; + } + + public void upsertAccounts(String personId, List accounts) { + List accountRecords = new ArrayList<>(); + Set incomingAccountIds = new HashSet<>(); + + for (AccountData account : accounts) { + account.setPerson(new ReferenceEntity(personId)); + incomingAccountIds.add(account.getId()); + accountRecords.add(mapToRecord(account)); + } + + deleteAbsentAccounts(personId, incomingAccountIds); + + if (!accountRecords.isEmpty()) { + dao.mergeRecords(accountRecords); + } + + accountRoleDataProcessor.upsertAccountRoles(accounts); + } + + private void deleteAbsentAccounts(String personId, Set incomingAccountIds) { + List existingAccountIds = dao.getAccountIdsByPersonId(personId); + + List toDelete = existingAccountIds.stream() + .filter(id -> !incomingAccountIds.contains(id)) + .toList(); + + if (!toDelete.isEmpty()) { + accountRoleDataProcessor.deleteByAccountIds(toDelete); + dao.deleteByIds(toDelete); } } } diff --git a/backend/src/main/java/ervu_business_metrics/service/processor/impl/AccountRoleDataProcessor.java b/backend/src/main/java/ervu_business_metrics/service/processor/impl/AccountRoleDataProcessor.java new file mode 100644 index 0000000..0269ef9 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/service/processor/impl/AccountRoleDataProcessor.java @@ -0,0 +1,104 @@ +package ervu_business_metrics.service.processor.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import ervu_business_metrics.config.KafkaEnabledCondition; +import ervu_business_metrics.dao.AccountRoleDataDao; +import ervu_business_metrics.model.idm.AccountData; +import ervu_business_metrics.model.idm.AccountRoleData; +import ervu_business_metrics.model.idm.RoleData; +import ervu_business_metrics.service.processor.LinkDataProcessor; +import org.springframework.context.annotation.Conditional; +import org.springframework.stereotype.Component; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRoleRecord; + +/** + * @author Adel Kalimullin + */ +@Component +@Conditional(KafkaEnabledCondition.class) +public class AccountRoleDataProcessor + implements LinkDataProcessor { + private final AccountRoleDataDao dao; + + public AccountRoleDataProcessor(AccountRoleDataDao dao) { + this.dao = dao; + } + + @Override + public void upsertData(AccountRoleData data) { + AccountRoleRecord accountRoleRecord = mapToRecord(data); + dao.upsertData(accountRoleRecord); + } + + @Override + public void changeActiveStatus(String id, boolean active) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Class getType() { + return AccountRoleData.class; + } + + @Override + public AccountRoleRecord mapToRecord(AccountRoleData data) { + AccountRoleRecord accountRoleRecord = dao.newRecord(); + accountRoleRecord.setAccountId(data.getId()); + accountRoleRecord.setRoleId(data.getRoleId()); + accountRoleRecord.setFinish(data.getFinish()); + return accountRoleRecord; + } + + public void upsertAccountRoles(List accounts) { + List accountRoleRecords = new ArrayList<>(); + + for (AccountData account : accounts) { + String accountId = account.getId(); + List existingRoleIds = dao.getRoleIdsByAccountId(accountId); + Set incomingRoleIds = account.getRoles() == null + ? Set.of() + : account.getRoles().stream() + .map(RoleData::getId) + .collect(Collectors.toSet()); + + List toDelete = existingRoleIds.stream() + .filter(roleId -> !incomingRoleIds.contains(roleId)) + .toList(); + + if (!toDelete.isEmpty()) { + dao.deleteAccountRolesByAccountIdAndRoleIds(accountId, toDelete); + } + + List toAdd = account.getRoles() == null + ? List.of() + : account.getRoles().stream() + .filter(role -> !existingRoleIds.contains(role.getId())) + .toList(); + + if (!toAdd.isEmpty()) { + List newRecords = toAdd.stream() + .map(role -> mapToRecord(new AccountRoleData(accountId, role.getId(), role.getFinish()))) + .toList(); + accountRoleRecords.addAll(newRecords); + } + } + + if (!accountRoleRecords.isEmpty()) { + dao.mergeRecords(accountRoleRecords); + } + } + + public void deleteByAccountIds(List accountIds) { + dao.deleteByAccountIds(accountIds); + } + + @Override + public void deleteLink(AccountRoleData data) { + AccountRoleRecord accountRoleRecord = mapToRecord(data); + dao.deleteAccountRole(accountRoleRecord); + } +} diff --git a/backend/src/main/java/ervu_business_metrics/service/processor/impl/DomainDataProcessor.java b/backend/src/main/java/ervu_business_metrics/service/processor/impl/DomainDataProcessor.java index f04bcc8..cedc990 100644 --- a/backend/src/main/java/ervu_business_metrics/service/processor/impl/DomainDataProcessor.java +++ b/backend/src/main/java/ervu_business_metrics/service/processor/impl/DomainDataProcessor.java @@ -1,14 +1,8 @@ package ervu_business_metrics.service.processor.impl; -import java.sql.Timestamp; -import java.time.Instant; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - import ervu_business_metrics.config.KafkaEnabledCondition; +import ervu_business_metrics.dao.DomainDataDao; import ervu_business_metrics.model.idm.DomainData; -import ervu_business_metrics.service.IdmDirectoriesDaoService; import ervu_business_metrics.service.processor.DataProcessor; import org.springframework.context.annotation.Conditional; import org.springframework.stereotype.Component; @@ -19,93 +13,53 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.reco */ @Component @Conditional(KafkaEnabledCondition.class) -public class DomainDataProcessor implements DataProcessor { - private final IdmDirectoriesDaoService idmDirectoriesDaoService; +public class DomainDataProcessor implements DataProcessor { + private final DomainDataDao dao; - public DomainDataProcessor(IdmDirectoriesDaoService idmDirectoriesDaoService) { - this.idmDirectoriesDaoService = idmDirectoriesDaoService; + public DomainDataProcessor(DomainDataDao dao) { + this.dao = dao; } @Override - public void upsertData(List dataList) { - List newDomainRecords = new ArrayList<>(); - List domainRecords = new ArrayList<>(); - Set existingIds = idmDirectoriesDaoService.getDomainIds(); - - for (DomainData data : dataList) { - DomainRecord domainRecord = idmDirectoriesDaoService.getDomainRecord(); - Timestamp modifiedAt = Timestamp.from(Instant.ofEpochMilli(data.getModified())); - - domainRecord.setId(data.getId()); - domainRecord.setVersion(data.getVersion()); - domainRecord.setModified(modifiedAt); - domainRecord.setSchema(data.getSchema()); - domainRecord.setName(data.getName()); - domainRecord.setShortname(data.getShortname()); - domainRecord.setFullname(data.getFullname()); - domainRecord.setDns(data.getDns()); - domainRecord.setEmail(data.getEmail()); - domainRecord.setPhone(data.getPhone()); - domainRecord.setAddress(data.getAddress()); - domainRecord.setPostalAddress(data.getPostalAddress()); - domainRecord.setAddressId(data.getAddressId()); - domainRecord.setPostalAddressId(data.getPostalAddressId()); - domainRecord.setMilitaryCode(data.getMilitaryCode()); - domainRecord.setTimezone(data.getTimezone()); - domainRecord.setReportsEnabled(data.isReportsEnabled()); - domainRecord.setInn(data.getInn()); - domainRecord.setLeg(data.getLeg()); - domainRecord.setOgrn(data.getOgrn()); - domainRecord.setRegion(data.getRegion()); - domainRecord.setEpguId(data.getEpguId()); - domainRecord.setType(data.getType()); - domainRecord.setEsiaEmployeeAuthorization(data.isEsiaEmployeeAuthorization()); - domainRecord.setDefaultS3Bucket(data.getDefaultS3Bucket()); - domainRecord.setOpf(data.getOpf()); - domainRecord.setKpp(data.getKpp()); - domainRecord.setCheckingAccount(data.getCheckingAccount()); - domainRecord.setBik(data.getBik()); - domainRecord.setBankName(data.getBankName()); - domainRecord.setBankCorrespondentAccount(data.getBankCorrespondentAccount()); - domainRecord.setOktmo(data.getOktmo()); - domainRecord.setOkato(data.getOkato()); - domainRecord.setGovRegistrationDate(data.getGovRegistrationDate()); - domainRecord.setGovOrganizationType(data.getGovOrganizationType()); - domainRecord.setAliasKey(data.getAliasKey()); - domainRecord.setPassKey(data.getPassKey()); - domainRecord.setCertificate(data.getCertificate()); - domainRecord.setAccountNumberTofk(data.getAccountNumberTOFK()); - domainRecord.setBikTofk(data.getBikTOFK()); - domainRecord.setCorrespondentBankAccountTofk(data.getCorrespondentBankAccountTOFK()); - domainRecord.setNameTofk(data.getNameTOFK()); - domainRecord.setNsiOrganizationId(data.getNsiOrganizationId()); - domainRecord.setDocHandle(data.getDocHandle()); - domainRecord.setDivisionType(data.getDivisionType()); - domainRecord.setTnsDepartmentId(data.getTnsDepartmentId()); - domainRecord.setEnabled(data.isEnabled()); - domainRecord.setParent(data.getParent()); - domainRecord.setRegionId(data.getRegionId()); - domainRecord.setManaged(data.getManaged()); - - if (existingIds.contains(data.getId())) { - domainRecords.add(domainRecord); - } - else { - newDomainRecords.add(domainRecord); - } - } - - if (!newDomainRecords.isEmpty()) { - idmDirectoriesDaoService.insertDomainRecords(newDomainRecords); - } - - if (!domainRecords.isEmpty()) { - idmDirectoriesDaoService.updateDomainRecords(domainRecords); - } + public void upsertData(DomainData domainData) { + DomainRecord domainRecord = mapToRecord(domainData); + dao.upsertData(domainRecord); } @Override - public void deleteData(List ids) { - idmDirectoriesDaoService.deleteDomainsByIds(ids); + public void changeActiveStatus(String id, boolean active) { + dao.setActiveStatus(id, active); + } + + @Override + public Class getType() { + return DomainData.class; + } + + public DomainRecord mapToRecord(DomainData data) { + DomainRecord domainRecord = dao.newRecord(); + domainRecord.setId(data.getId()); + domainRecord.setType(data.getType()); + if(data.getRegion() != null) { + domainRecord.setRegionCode(data.getRegion().getCode()); + } + domainRecord.setName(data.getName()); + domainRecord.setFullName(data.getFullName()); + domainRecord.setShortName(data.getShortName()); + domainRecord.setReportsEnabled(data.getReportsEnabled()); + domainRecord.setActive(data.getActive()); + domainRecord.setCreated(data.getCreated()); + domainRecord.setModified(data.getModified()); + domainRecord.setDeleted(data.getDeleted()); + domainRecord.setPostalAddressId(data.getPostalAddressId()); + domainRecord.setAddressId(data.getAddressId()); + domainRecord.setMilitaryCode(data.getMilitaryCode()); + domainRecord.setTimeZone(data.getTimeZone()); + domainRecord.setSubpoenaSeriesCode(data.getSubpoenaSeriesCode()); + if (data.getParent() != null) { + domainRecord.setParent(data.getParent().getId()); + } + domainRecord.setVersion(data.getVersion()); + return domainRecord; } } diff --git a/backend/src/main/java/ervu_business_metrics/service/processor/impl/PersonDataProcessor.java b/backend/src/main/java/ervu_business_metrics/service/processor/impl/PersonDataProcessor.java new file mode 100644 index 0000000..304fe04 --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/service/processor/impl/PersonDataProcessor.java @@ -0,0 +1,64 @@ +package ervu_business_metrics.service.processor.impl; + +import ervu_business_metrics.config.KafkaEnabledCondition; +import ervu_business_metrics.dao.PersonDataDao; +import ervu_business_metrics.model.idm.PersonData; +import ervu_business_metrics.service.processor.DataProcessor; +import org.springframework.context.annotation.Conditional; +import org.springframework.stereotype.Component; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.PersonRecord; + +/** + * @author Adel Kalimullin + */ +@Component +@Conditional(KafkaEnabledCondition.class) +public class PersonDataProcessor implements DataProcessor { + private final PersonDataDao dao; + private final AccountDataProcessor accountDataProcessor; + + public PersonDataProcessor(PersonDataDao dao, + AccountDataProcessor accountDataProcessor) { + this.dao = dao; + this.accountDataProcessor = accountDataProcessor; + } + + @Override + public void upsertData(PersonData personData) { + PersonRecord personRecord = mapToRecord(personData); + if (personData.getAccounts() != null && !personData.getAccounts().isEmpty()) { + accountDataProcessor.upsertAccounts(personData.getId(), personData.getAccounts()); + } + + dao.upsertData(personRecord); + } + + @Override + public void changeActiveStatus(String id, boolean active) { + dao.setActiveStatus(id, active); + } + + @Override + public Class getType() { + return PersonData.class; + } + + @Override + public PersonRecord mapToRecord(PersonData data) { + PersonRecord person = dao.newRecord(); + person.setId(data.getId()); + person.setVersion(data.getVersion()); + person.setFirstName(data.getFirstName()); + person.setLastName(data.getLastName()); + person.setMiddleName(data.getMiddleName()); + person.setCreated(data.getCreated()); + person.setModified(data.getModified()); + person.setDeleted(data.getDeleted()); + person.setBlocked(data.getBlocked()); + person.setBlockUntil(data.getBlockUntil()); + person.setLogin(data.getLogin()); + person.setSecondFactorEnabled(data.getSecondFactorEnabled()); + person.setActive(data.isActive()); + return person; + } +} diff --git a/backend/src/main/java/ervu_business_metrics/service/processor/impl/RoleDataProcessor.java b/backend/src/main/java/ervu_business_metrics/service/processor/impl/RoleDataProcessor.java index afaa31f..381e6c3 100644 --- a/backend/src/main/java/ervu_business_metrics/service/processor/impl/RoleDataProcessor.java +++ b/backend/src/main/java/ervu_business_metrics/service/processor/impl/RoleDataProcessor.java @@ -1,14 +1,9 @@ package ervu_business_metrics.service.processor.impl; -import java.sql.Timestamp; -import java.time.Instant; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; import ervu_business_metrics.config.KafkaEnabledCondition; +import ervu_business_metrics.dao.RoleDataDao; import ervu_business_metrics.model.idm.RoleData; -import ervu_business_metrics.service.IdmDirectoriesDaoService; import ervu_business_metrics.service.processor.DataProcessor; import org.springframework.context.annotation.Conditional; import org.springframework.stereotype.Component; @@ -19,57 +14,41 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.reco */ @Component @Conditional(KafkaEnabledCondition.class) -public class RoleDataProcessor implements DataProcessor { - private final IdmDirectoriesDaoService idmDirectoriesDaoService; +public class RoleDataProcessor implements DataProcessor { + private final RoleDataDao dao; - public RoleDataProcessor(IdmDirectoriesDaoService idmDirectoriesDaoService) { - this.idmDirectoriesDaoService = idmDirectoriesDaoService; + public RoleDataProcessor(RoleDataDao dao) { + this.dao = dao; } @Override - public void upsertData(List dataList) { - List newRoleRecords = new ArrayList<>(); - List roleRecords = new ArrayList<>(); - Set existingIds = idmDirectoriesDaoService.getRoleIds(); - - for (RoleData data : dataList) { - if (!data.isErvuRole()) { - continue; - } - RoleRecord record = idmDirectoriesDaoService.getRoleRecord(); - Timestamp modifiedAt = Timestamp.from(Instant.ofEpochMilli(data.getModified())); - - record.setId(data.getId()); - record.setName(data.getName()); - record.setDisplayName(data.getDisplayName()); - record.setShortname(data.getShortname()); - record.setSchema(data.getSchema()); - record.setVersion(data.getVersion()); - record.setSessionsLimit(data.getSessionsLimit()); - record.setImported(data.getImported()); - record.setDescription(data.getDescription()); - record.setErvuRole(data.isErvuRole()); - record.setModified(modifiedAt); - - if (existingIds.contains(data.getId())) { - roleRecords.add(record); - } - else { - newRoleRecords.add(record); - } - } - - if (!newRoleRecords.isEmpty()) { - idmDirectoriesDaoService.insertRoleRecords(newRoleRecords); - } - - if (!roleRecords.isEmpty()) { - idmDirectoriesDaoService.updateRoleRecords(roleRecords); - } + public void upsertData(RoleData roleData) { + RoleRecord roleRecord = mapToRecord(roleData); + dao.upsertData(roleRecord); } @Override - public void deleteData(List ids) { - // TODO удаление пока не реализовано + public void changeActiveStatus(String id, boolean active) { + dao.setActiveStatus(id, active); + } + + @Override + public Class getType() { + return RoleData.class; + } + + @Override + public RoleRecord mapToRecord(RoleData data) { + RoleRecord record = dao.newRecord(); + record.setId(data.getId()); + record.setName(data.getName()); + record.setDescription(data.getDescription()); + record.setDisplayName(data.getDisplayName()); + record.setActive(data.getActive()); + record.setCreated(data.getCreated()); + record.setModified(data.getModified()); + record.setDeleted(data.getDeleted()); + record.setVersion(data.getVersion()); + return record; } } diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/IdmReconcile.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/IdmReconcile.java index bd219b6..bce27d3 100644 --- a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/IdmReconcile.java +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/IdmReconcile.java @@ -16,6 +16,7 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Acco import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.AccountBlocked; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.AccountRole; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Domain; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Person; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Role; @@ -33,7 +34,7 @@ public class IdmReconcile extends SchemaImpl { public static final IdmReconcile IDM_RECONCILE = new IdmReconcile(); /** - * The table idm_reconcile.account. + * Таблица учетных записей пользователей (аккаунтов) */ public final Account ACCOUNT = Account.ACCOUNT; @@ -43,7 +44,7 @@ public class IdmReconcile extends SchemaImpl { public final AccountBlocked ACCOUNT_BLOCKED = AccountBlocked.ACCOUNT_BLOCKED; /** - * The table idm_reconcile.account_role. + * Связующая таблица для связи многие ко многим между аккаунтами и ролями */ public final AccountRole ACCOUNT_ROLE = AccountRole.ACCOUNT_ROLE; @@ -53,7 +54,12 @@ public class IdmReconcile extends SchemaImpl { public final Domain DOMAIN = Domain.DOMAIN; /** - * The table idm_reconcile.role. + * Таблица персон (пользователей) в системе + */ + public final Person PERSON = Person.PERSON; + + /** + * Справочник ролей системы доступа */ public final Role ROLE = Role.ROLE; @@ -77,6 +83,7 @@ public class IdmReconcile extends SchemaImpl { AccountBlocked.ACCOUNT_BLOCKED, AccountRole.ACCOUNT_ROLE, Domain.DOMAIN, + Person.PERSON, Role.ROLE ); } diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/Keys.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/Keys.java index cb5da3d..43ff6fd 100644 --- a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/Keys.java +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/Keys.java @@ -4,7 +4,6 @@ package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile; -import org.jooq.ForeignKey; import org.jooq.TableField; import org.jooq.UniqueKey; import org.jooq.impl.DSL; @@ -14,11 +13,13 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Acco import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.AccountBlocked; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.AccountRole; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Domain; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Person; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Role; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountBlockedRecord; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRecord; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRoleRecord; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.DomainRecord; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.PersonRecord; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.RoleRecord; @@ -37,11 +38,6 @@ public class Keys { public static final UniqueKey ACCOUNT_BLOCKED_PKEY = Internal.createUniqueKey(AccountBlocked.ACCOUNT_BLOCKED, DSL.name("account_blocked_pkey"), new TableField[] { AccountBlocked.ACCOUNT_BLOCKED.ID }, true); public static final UniqueKey PK_ACCOUNT_ROLE = Internal.createUniqueKey(AccountRole.ACCOUNT_ROLE, DSL.name("pk_account_role"), new TableField[] { AccountRole.ACCOUNT_ROLE.ACCOUNT_ID, AccountRole.ACCOUNT_ROLE.ROLE_ID }, true); public static final UniqueKey DOMAIN_PKEY = Internal.createUniqueKey(Domain.DOMAIN, DSL.name("domain_pkey"), new TableField[] { Domain.DOMAIN.ID }, true); + public static final UniqueKey PERSON_PKEY = Internal.createUniqueKey(Person.PERSON, DSL.name("person_pkey"), new TableField[] { Person.PERSON.ID }, true); public static final UniqueKey ROLE_PKEY = Internal.createUniqueKey(Role.ROLE, DSL.name("role_pkey"), new TableField[] { Role.ROLE.ID }, true); - - // ------------------------------------------------------------------------- - // FOREIGN KEY definitions - // ------------------------------------------------------------------------- - - public static final ForeignKey ACCOUNT_ROLE__FK_ACCOUNT_ROLE_ACCOUNT = Internal.createForeignKey(AccountRole.ACCOUNT_ROLE, DSL.name("fk_account_role_account"), new TableField[] { AccountRole.ACCOUNT_ROLE.ACCOUNT_ID }, Keys.ACCOUNT_PKEY, new TableField[] { Account.ACCOUNT.ID }, true); } diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/Tables.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/Tables.java index 59b28d1..56bc40d 100644 --- a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/Tables.java +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/Tables.java @@ -8,6 +8,7 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Acco import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.AccountBlocked; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.AccountRole; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Domain; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Person; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Role; @@ -18,7 +19,7 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Role public class Tables { /** - * The table idm_reconcile.account. + * Таблица учетных записей пользователей (аккаунтов) */ public static final Account ACCOUNT = Account.ACCOUNT; @@ -28,7 +29,7 @@ public class Tables { public static final AccountBlocked ACCOUNT_BLOCKED = AccountBlocked.ACCOUNT_BLOCKED; /** - * The table idm_reconcile.account_role. + * Связующая таблица для связи многие ко многим между аккаунтами и ролями */ public static final AccountRole ACCOUNT_ROLE = AccountRole.ACCOUNT_ROLE; @@ -38,7 +39,12 @@ public class Tables { public static final Domain DOMAIN = Domain.DOMAIN; /** - * The table idm_reconcile.role. + * Таблица персон (пользователей) в системе + */ + public static final Person PERSON = Person.PERSON; + + /** + * Справочник ролей системы доступа */ public static final Role ROLE = Role.ROLE; } diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Account.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Account.java index 845d206..a913230 100644 --- a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Account.java +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Account.java @@ -4,18 +4,13 @@ package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables; -import java.sql.Timestamp; import java.util.Collection; import org.jooq.Condition; import org.jooq.Field; -import org.jooq.ForeignKey; -import org.jooq.InverseForeignKey; import org.jooq.Name; -import org.jooq.Path; import org.jooq.PlainSQL; import org.jooq.QueryPart; -import org.jooq.Record; import org.jooq.SQL; import org.jooq.Schema; import org.jooq.Select; @@ -30,12 +25,11 @@ import org.jooq.impl.TableImpl; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.IdmReconcile; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Keys; -import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.AccountRole.AccountRolePath; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRecord; /** - * This class is generated by jOOQ. + * Таблица учетных записей пользователей (аккаунтов) */ @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class Account extends TableImpl { @@ -56,71 +50,91 @@ public class Account extends TableImpl { } /** - * The column idm_reconcile.account.id. + * The column idm_reconcile.account.id. Уникальный + * идентификатор аккаунта */ - public final TableField ID = createField(DSL.name("id"), SQLDataType.VARCHAR(36).nullable(false), this, ""); + public final TableField ID = createField(DSL.name("id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор аккаунта"); /** - * The column idm_reconcile.account.version. + * The column idm_reconcile.account.active. Флаг активности + * аккаунта */ - public final TableField VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, ""); + public final TableField ACTIVE = createField(DSL.name("active"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, "Флаг активности аккаунта"); /** - * The column idm_reconcile.account.modified. + * The column idm_reconcile.account.start. Дата и время + * активации аккаунта (UNIX + * timestamp) */ - public final TableField MODIFIED = createField(DSL.name("modified"), SQLDataType.TIMESTAMP(0), this, ""); + public final TableField START = createField(DSL.name("start"), SQLDataType.BIGINT, this, "Дата и время активации аккаунта (UNIX\n timestamp)"); /** - * The column idm_reconcile.account.schema. + * The column idm_reconcile.account.finish. Дата и время + * деактивации аккаунта (UNIX + * timestamp) */ - public final TableField SCHEMA = createField(DSL.name("schema"), SQLDataType.VARCHAR(100).nullable(false), this, ""); + public final TableField FINISH = createField(DSL.name("finish"), SQLDataType.BIGINT, this, "Дата и время деактивации аккаунта (UNIX\n timestamp)"); /** - * The column idm_reconcile.account.start. + * The column idm_reconcile.account.created. Дата и время + * создания аккаунта (UNIX + * timestamp) */ - public final TableField START = createField(DSL.name("start"), SQLDataType.VARCHAR(50), this, ""); + public final TableField CREATED = createField(DSL.name("created"), SQLDataType.BIGINT.nullable(false), this, "Дата и время создания аккаунта (UNIX\n timestamp)"); /** - * The column idm_reconcile.account.finish. + * The column idm_reconcile.account.modified. Дата и время + * последнего изменения + * аккаунта (UNIX timestamp) */ - public final TableField FINISH = createField(DSL.name("finish"), SQLDataType.VARCHAR(50), this, ""); + public final TableField MODIFIED = createField(DSL.name("modified"), SQLDataType.BIGINT, this, "Дата и время последнего изменения\n аккаунта (UNIX timestamp)"); /** - * The column idm_reconcile.account.enabled. + * The column idm_reconcile.account.appointment. Должность, + * назначенная аккаунту */ - public final TableField ENABLED = createField(DSL.name("enabled"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, ""); + public final TableField APPOINTMENT = createField(DSL.name("appointment"), SQLDataType.VARCHAR(255), this, "Должность, назначенная аккаунту"); /** - * The column idm_reconcile.account.position. + * The column idm_reconcile.account.deleted. Дата и время + * логического удаления аккаунта + * (UNIX timestamp) */ - public final TableField POSITION = createField(DSL.name("position"), SQLDataType.VARCHAR(255), this, ""); + public final TableField DELETED = createField(DSL.name("deleted"), SQLDataType.BIGINT, this, "Дата и время логического удаления аккаунта\n (UNIX timestamp)"); /** - * The column idm_reconcile.account.fio. + * The column idm_reconcile.account.session_limit. Максимально + * допустимое количество + * сессий */ - public final TableField FIO = createField(DSL.name("fio"), SQLDataType.VARCHAR(255), this, ""); + public final TableField SESSION_LIMIT = createField(DSL.name("session_limit"), SQLDataType.SMALLINT, this, "Максимально допустимое количество\n сессий"); /** - * The column idm_reconcile.account.work_mail. + * The column idm_reconcile.account.version. Версия записи + * аккаунта */ - public final TableField WORK_MAIL = createField(DSL.name("work_mail"), SQLDataType.VARCHAR(255), this, ""); + public final TableField VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, "Версия записи аккаунта"); /** - * The column idm_reconcile.account.esia_account. + * The column idm_reconcile.account.domain_id. Идентификатор + * домена, связанного с + * аккаунтом */ - public final TableField ESIA_ACCOUNT = createField(DSL.name("esia_account"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("false"), SQLDataType.BOOLEAN)), this, ""); + public final TableField DOMAIN_ID = createField(DSL.name("domain_id"), SQLDataType.VARCHAR(36), this, "Идентификатор домена, связанного с\n аккаунтом"); /** - * The column idm_reconcile.account.domain_id. + * The column idm_reconcile.account.person_id. Идентификатор + * персоны, связанной с + * аккаунтом */ - public final TableField DOMAIN_ID = createField(DSL.name("domain_id"), SQLDataType.VARCHAR(36), this, ""); + public final TableField PERSON_ID = createField(DSL.name("person_id"), SQLDataType.VARCHAR(36), this, "Идентификатор персоны, связанной с\n аккаунтом"); private Account(Name alias, Table aliased) { this(alias, aliased, (Field[]) null, null); } private Account(Name alias, Table aliased, Field[] parameters, Condition where) { - super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + super(alias, null, aliased, parameters, DSL.comment("Таблица учетных записей пользователей (аккаунтов)"), TableOptions.table(), where); } /** @@ -144,37 +158,6 @@ public class Account extends TableImpl { this(DSL.name("account"), null); } - public Account(Table path, ForeignKey childPath, InverseForeignKey parentPath) { - super(path, childPath, parentPath, ACCOUNT); - } - - /** - * A subtype implementing {@link Path} for simplified path-based joins. - */ - public static class AccountPath extends Account implements Path { - public AccountPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { - super(path, childPath, parentPath); - } - private AccountPath(Name alias, Table aliased) { - super(alias, aliased); - } - - @Override - public AccountPath as(String alias) { - return new AccountPath(DSL.name(alias), this); - } - - @Override - public AccountPath as(Name alias) { - return new AccountPath(alias, this); - } - - @Override - public AccountPath as(Table alias) { - return new AccountPath(alias.getQualifiedName(), this); - } - } - @Override public Schema getSchema() { return aliased() ? null : IdmReconcile.IDM_RECONCILE; @@ -185,19 +168,6 @@ public class Account extends TableImpl { return Keys.ACCOUNT_PKEY; } - private transient AccountRolePath _accountRole; - - /** - * Get the implicit to-many join path to the - * idm_reconcile.account_role table - */ - public AccountRolePath accountRole() { - if (_accountRole == null) - _accountRole = new AccountRolePath(this, null, Keys.ACCOUNT_ROLE__FK_ACCOUNT_ROLE_ACCOUNT.getInverseKey()); - - return _accountRole; - } - @Override public Account as(String alias) { return new Account(DSL.name(alias), this); diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/AccountRole.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/AccountRole.java index 7ad7d2b..b7d8df9 100644 --- a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/AccountRole.java +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/AccountRole.java @@ -4,19 +4,13 @@ package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables; -import java.util.Arrays; import java.util.Collection; -import java.util.List; import org.jooq.Condition; import org.jooq.Field; -import org.jooq.ForeignKey; -import org.jooq.InverseForeignKey; import org.jooq.Name; -import org.jooq.Path; import org.jooq.PlainSQL; import org.jooq.QueryPart; -import org.jooq.Record; import org.jooq.SQL; import org.jooq.Schema; import org.jooq.Select; @@ -31,12 +25,11 @@ import org.jooq.impl.TableImpl; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.IdmReconcile; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Keys; -import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Account.AccountPath; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRoleRecord; /** - * This class is generated by jOOQ. + * Связующая таблица для связи многие ко многим между аккаунтами и ролями */ @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class AccountRole extends TableImpl { @@ -57,21 +50,28 @@ public class AccountRole extends TableImpl { } /** - * The column idm_reconcile.account_role.account_id. + * The column idm_reconcile.account_role.account_id. Уникальный + * идентификатор аккаунта */ - public final TableField ACCOUNT_ID = createField(DSL.name("account_id"), SQLDataType.VARCHAR(36).nullable(false), this, ""); + public final TableField ACCOUNT_ID = createField(DSL.name("account_id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор аккаунта"); /** - * The column idm_reconcile.account_role.role_id. + * The column idm_reconcile.account_role.role_id. Уникальный + * идентификатор роли */ - public final TableField ROLE_ID = createField(DSL.name("role_id"), SQLDataType.VARCHAR(36).nullable(false), this, ""); + public final TableField ROLE_ID = createField(DSL.name("role_id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор роли"); + + /** + * The column idm_reconcile.account_role.finish. + */ + public final TableField FINISH = createField(DSL.name("finish"), SQLDataType.BIGINT.nullable(false), this, ""); private AccountRole(Name alias, Table aliased) { this(alias, aliased, (Field[]) null, null); } private AccountRole(Name alias, Table aliased, Field[] parameters, Condition where) { - super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + super(alias, null, aliased, parameters, DSL.comment("Связующая таблица для связи многие ко многим между аккаунтами и ролями"), TableOptions.table(), where); } /** @@ -95,37 +95,6 @@ public class AccountRole extends TableImpl { this(DSL.name("account_role"), null); } - public AccountRole(Table path, ForeignKey childPath, InverseForeignKey parentPath) { - super(path, childPath, parentPath, ACCOUNT_ROLE); - } - - /** - * A subtype implementing {@link Path} for simplified path-based joins. - */ - public static class AccountRolePath extends AccountRole implements Path { - public AccountRolePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { - super(path, childPath, parentPath); - } - private AccountRolePath(Name alias, Table aliased) { - super(alias, aliased); - } - - @Override - public AccountRolePath as(String alias) { - return new AccountRolePath(DSL.name(alias), this); - } - - @Override - public AccountRolePath as(Name alias) { - return new AccountRolePath(alias, this); - } - - @Override - public AccountRolePath as(Table alias) { - return new AccountRolePath(alias.getQualifiedName(), this); - } - } - @Override public Schema getSchema() { return aliased() ? null : IdmReconcile.IDM_RECONCILE; @@ -136,24 +105,6 @@ public class AccountRole extends TableImpl { return Keys.PK_ACCOUNT_ROLE; } - @Override - public List> getReferences() { - return Arrays.asList(Keys.ACCOUNT_ROLE__FK_ACCOUNT_ROLE_ACCOUNT); - } - - private transient AccountPath _account; - - /** - * Get the implicit join path to the idm_reconcile.account - * table. - */ - public AccountPath account() { - if (_account == null) - _account = new AccountPath(this, Keys.ACCOUNT_ROLE__FK_ACCOUNT_ROLE_ACCOUNT, null); - - return _account; - } - @Override public AccountRole as(String alias) { return new AccountRole(DSL.name(alias), this); diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Domain.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Domain.java index 180c074..cf41421 100644 --- a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Domain.java +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Domain.java @@ -4,7 +4,6 @@ package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables; -import java.sql.Timestamp; import java.util.Collection; import org.jooq.Condition; @@ -51,255 +50,111 @@ public class Domain extends TableImpl { } /** - * The column idm_reconcile.domain.id. + * The column idm_reconcile.domain.id. Уникальный идентификатор + * домена */ - public final TableField ID = createField(DSL.name("id"), SQLDataType.VARCHAR(255).nullable(false), this, ""); + public final TableField ID = createField(DSL.name("id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор домена"); /** - * The column idm_reconcile.domain.version. + * The column idm_reconcile.domain.type. Идентификатор типа + * организации */ - public final TableField VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, ""); + public final TableField TYPE = createField(DSL.name("type"), SQLDataType.VARCHAR(36), this, "Идентификатор типа организации"); /** - * The column idm_reconcile.domain.modified. + * The column idm_reconcile.domain.region_code. Код региона, к + * которому относится домен */ - public final TableField MODIFIED = createField(DSL.name("modified"), SQLDataType.TIMESTAMP(0), this, ""); + public final TableField REGION_CODE = createField(DSL.name("region_code"), SQLDataType.VARCHAR(128), this, "Код региона, к которому относится домен"); /** - * The column idm_reconcile.domain.schema. + * The column idm_reconcile.domain.name. Краткое наименование + * домена */ - public final TableField SCHEMA = createField(DSL.name("schema"), SQLDataType.VARCHAR(255).nullable(false), this, ""); + public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255), this, "Краткое наименование домена"); /** - * The column idm_reconcile.domain.name. + * The column idm_reconcile.domain.full_name. Полное + * наименование домена */ - public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255), this, ""); + public final TableField FULL_NAME = createField(DSL.name("full_name"), SQLDataType.VARCHAR(255), this, "Полное наименование домена"); /** - * The column idm_reconcile.domain.shortname. + * The column idm_reconcile.domain.short_name. Сокращенное + * наименование домена */ - public final TableField SHORTNAME = createField(DSL.name("shortname"), SQLDataType.VARCHAR(255), this, ""); + public final TableField SHORT_NAME = createField(DSL.name("short_name"), SQLDataType.VARCHAR(255), this, "Сокращенное наименование домена"); /** - * The column idm_reconcile.domain.fullname. + * The column idm_reconcile.domain.reports_enabled. Флаг + * включения домена в отчетность */ - public final TableField FULLNAME = createField(DSL.name("fullname"), SQLDataType.VARCHAR(255), this, ""); + public final TableField REPORTS_ENABLED = createField(DSL.name("reports_enabled"), SQLDataType.BOOLEAN.defaultValue(DSL.field(DSL.raw("false"), SQLDataType.BOOLEAN)), this, "Флаг включения домена в отчетность"); /** - * The column idm_reconcile.domain.dns. + * The column idm_reconcile.domain.active. Флаг активности + * домена */ - public final TableField DNS = createField(DSL.name("dns"), SQLDataType.VARCHAR(255), this, ""); + public final TableField ACTIVE = createField(DSL.name("active"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, "Флаг активности домена"); /** - * The column idm_reconcile.domain.email. + * The column idm_reconcile.domain.created. Дата и время + * создания домена (UNIX timestamp) */ - public final TableField EMAIL = createField(DSL.name("email"), SQLDataType.VARCHAR(255), this, ""); + public final TableField CREATED = createField(DSL.name("created"), SQLDataType.BIGINT.nullable(false), this, "Дата и время создания домена (UNIX timestamp)"); /** - * The column idm_reconcile.domain.phone. + * The column idm_reconcile.domain.modified. Дата и время + * последнего изменения (UNIX timestamp) */ - public final TableField PHONE = createField(DSL.name("phone"), SQLDataType.VARCHAR(255), this, ""); + public final TableField MODIFIED = createField(DSL.name("modified"), SQLDataType.BIGINT, this, "Дата и время последнего изменения (UNIX timestamp)"); /** - * The column idm_reconcile.domain.address. + * The column idm_reconcile.domain.deleted. Дата и время + * логического удаления (UNIX timestamp) */ - public final TableField ADDRESS = createField(DSL.name("address"), SQLDataType.VARCHAR(1024), this, ""); - - /** - * The column idm_reconcile.domain.postal_address. - */ - public final TableField POSTAL_ADDRESS = createField(DSL.name("postal_address"), SQLDataType.VARCHAR(1024), this, ""); - - /** - * The column idm_reconcile.domain.address_id. - */ - public final TableField ADDRESS_ID = createField(DSL.name("address_id"), SQLDataType.VARCHAR(255), this, ""); + public final TableField DELETED = createField(DSL.name("deleted"), SQLDataType.BIGINT, this, "Дата и время логического удаления (UNIX timestamp)"); /** * The column idm_reconcile.domain.postal_address_id. + * Идентификатор почтового адреса */ - public final TableField POSTAL_ADDRESS_ID = createField(DSL.name("postal_address_id"), SQLDataType.VARCHAR(255), this, ""); + public final TableField POSTAL_ADDRESS_ID = createField(DSL.name("postal_address_id"), SQLDataType.VARCHAR(36), this, "Идентификатор почтового адреса"); /** - * The column idm_reconcile.domain.military_code. + * The column idm_reconcile.domain.address_id. Идентификатор + * основного адреса */ - public final TableField MILITARY_CODE = createField(DSL.name("military_code"), SQLDataType.VARCHAR(255), this, ""); + public final TableField ADDRESS_ID = createField(DSL.name("address_id"), SQLDataType.VARCHAR(36), this, "Идентификатор основного адреса"); /** - * The column idm_reconcile.domain.timezone. + * The column idm_reconcile.domain.military_code. Военный код + * организации */ - public final TableField TIMEZONE = createField(DSL.name("timezone"), SQLDataType.VARCHAR(255), this, ""); + public final TableField MILITARY_CODE = createField(DSL.name("military_code"), SQLDataType.VARCHAR(128), this, "Военный код организации"); /** - * The column idm_reconcile.domain.reports_enabled. + * The column idm_reconcile.domain.time_zone. Временная зона + * организации */ - public final TableField REPORTS_ENABLED = createField(DSL.name("reports_enabled"), SQLDataType.BOOLEAN, this, ""); + public final TableField TIME_ZONE = createField(DSL.name("time_zone"), SQLDataType.VARCHAR(128), this, "Временная зона организации"); /** - * The column idm_reconcile.domain.inn. + * The column idm_reconcile.domain.subpoena_series_code. Серия + * повестки (например, для юридических процедур) */ - public final TableField INN = createField(DSL.name("inn"), SQLDataType.VARCHAR(255), this, ""); + public final TableField SUBPOENA_SERIES_CODE = createField(DSL.name("subpoena_series_code"), SQLDataType.VARCHAR(128), this, "Серия повестки (например, для юридических процедур)"); /** - * The column idm_reconcile.domain.leg. + * The column idm_reconcile.domain.parent. Идентификатор + * родительской организации (домен) */ - public final TableField LEG = createField(DSL.name("leg"), SQLDataType.VARCHAR(255), this, ""); + public final TableField PARENT = createField(DSL.name("parent"), SQLDataType.VARCHAR(36), this, "Идентификатор родительской организации (домен)"); /** - * The column idm_reconcile.domain.ogrn. + * The column idm_reconcile.domain.version. Версия записи */ - public final TableField OGRN = createField(DSL.name("ogrn"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.region. - */ - public final TableField REGION = createField(DSL.name("region"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.epgu_id. - */ - public final TableField EPGU_ID = createField(DSL.name("epgu_id"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.type. - */ - public final TableField TYPE = createField(DSL.name("type"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.esia_employee_authorization. - */ - public final TableField ESIA_EMPLOYEE_AUTHORIZATION = createField(DSL.name("esia_employee_authorization"), SQLDataType.BOOLEAN, this, ""); - - /** - * The column idm_reconcile.domain.default_s3_bucket. - */ - public final TableField DEFAULT_S3_BUCKET = createField(DSL.name("default_s3_bucket"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.opf. - */ - public final TableField OPF = createField(DSL.name("opf"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.kpp. - */ - public final TableField KPP = createField(DSL.name("kpp"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.checking_account. - */ - public final TableField CHECKING_ACCOUNT = createField(DSL.name("checking_account"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.bik. - */ - public final TableField BIK = createField(DSL.name("bik"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.bank_name. - */ - public final TableField BANK_NAME = createField(DSL.name("bank_name"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.bank_correspondent_account. - */ - public final TableField BANK_CORRESPONDENT_ACCOUNT = createField(DSL.name("bank_correspondent_account"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.oktmo. - */ - public final TableField OKTMO = createField(DSL.name("oktmo"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.okato. - */ - public final TableField OKATO = createField(DSL.name("okato"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.gov_registration_date. - */ - public final TableField GOV_REGISTRATION_DATE = createField(DSL.name("gov_registration_date"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.gov_organization_type. - */ - public final TableField GOV_ORGANIZATION_TYPE = createField(DSL.name("gov_organization_type"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.alias_key. - */ - public final TableField ALIAS_KEY = createField(DSL.name("alias_key"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.pass_key. - */ - public final TableField PASS_KEY = createField(DSL.name("pass_key"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.certificate. - */ - public final TableField CERTIFICATE = createField(DSL.name("certificate"), SQLDataType.VARCHAR(2048), this, ""); - - /** - * The column idm_reconcile.domain.account_number_tofk. - */ - public final TableField ACCOUNT_NUMBER_TOFK = createField(DSL.name("account_number_tofk"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.bik_tofk. - */ - public final TableField BIK_TOFK = createField(DSL.name("bik_tofk"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column - * idm_reconcile.domain.correspondent_bank_account_tofk. - */ - public final TableField CORRESPONDENT_BANK_ACCOUNT_TOFK = createField(DSL.name("correspondent_bank_account_tofk"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.name_tofk. - */ - public final TableField NAME_TOFK = createField(DSL.name("name_tofk"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.nsi_organization_id. - */ - public final TableField NSI_ORGANIZATION_ID = createField(DSL.name("nsi_organization_id"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.doc_handle. - */ - public final TableField DOC_HANDLE = createField(DSL.name("doc_handle"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.division_type. - */ - public final TableField DIVISION_TYPE = createField(DSL.name("division_type"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.tns_department_id. - */ - public final TableField TNS_DEPARTMENT_ID = createField(DSL.name("tns_department_id"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.enabled. - */ - public final TableField ENABLED = createField(DSL.name("enabled"), SQLDataType.BOOLEAN, this, ""); - - /** - * The column idm_reconcile.domain.parent. - */ - public final TableField PARENT = createField(DSL.name("parent"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.region_id. - */ - public final TableField REGION_ID = createField(DSL.name("region_id"), SQLDataType.VARCHAR(255), this, ""); - - /** - * The column idm_reconcile.domain.managed. - */ - public final TableField MANAGED = createField(DSL.name("managed"), SQLDataType.VARCHAR(255), this, ""); + public final TableField VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, "Версия записи"); private Domain(Name alias, Table aliased) { this(alias, aliased, (Field[]) null, null); diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Person.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Person.java new file mode 100644 index 0000000..6273350 --- /dev/null +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Person.java @@ -0,0 +1,294 @@ +/* + * This file is generated by jOOQ. + */ +package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables; + + +import java.util.Collection; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.Name; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.IdmReconcile; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Keys; +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.PersonRecord; + + +/** + * Таблица персон (пользователей) в системе + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Person extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of idm_reconcile.person + */ + public static final Person PERSON = new Person(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return PersonRecord.class; + } + + /** + * The column idm_reconcile.person.id. Уникальный идентификатор + * персоны + */ + public final TableField ID = createField(DSL.name("id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор персоны"); + + /** + * The column idm_reconcile.person.login. Логин пользователя + */ + public final TableField LOGIN = createField(DSL.name("login"), SQLDataType.VARCHAR(128), this, "Логин пользователя"); + + /** + * The column idm_reconcile.person.first_name. Имя пользователя + */ + public final TableField FIRST_NAME = createField(DSL.name("first_name"), SQLDataType.VARCHAR(255), this, "Имя пользователя"); + + /** + * The column idm_reconcile.person.last_name. Фамилия + * пользователя + */ + public final TableField LAST_NAME = createField(DSL.name("last_name"), SQLDataType.VARCHAR(255), this, "Фамилия пользователя"); + + /** + * The column idm_reconcile.person.middle_name. Отчество + * пользователя + */ + public final TableField MIDDLE_NAME = createField(DSL.name("middle_name"), SQLDataType.VARCHAR(255), this, "Отчество пользователя"); + + /** + * The column idm_reconcile.person.second_factor_enabled. Флаг + * включения двухфакторной + * аутентификации + */ + public final TableField SECOND_FACTOR_ENABLED = createField(DSL.name("second_factor_enabled"), SQLDataType.BOOLEAN, this, "Флаг включения двухфакторной\n аутентификации"); + + /** + * The column idm_reconcile.person.active. Флаг активности + * пользователя + */ + public final TableField ACTIVE = createField(DSL.name("active"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, "Флаг активности пользователя"); + + /** + * The column idm_reconcile.person.created. Дата и время + * создания записи (UNIX + * timestamp) + */ + public final TableField CREATED = createField(DSL.name("created"), SQLDataType.BIGINT.nullable(false), this, "Дата и время создания записи (UNIX\n timestamp)"); + + /** + * The column idm_reconcile.person.modified. Дата и время + * последнего изменения записи + * (UNIX timestamp) + */ + public final TableField MODIFIED = createField(DSL.name("modified"), SQLDataType.BIGINT, this, "Дата и время последнего изменения записи\n (UNIX timestamp)"); + + /** + * The column idm_reconcile.person.deleted. Дата и время + * логического удаления записи + * (UNIX timestamp) + */ + public final TableField DELETED = createField(DSL.name("deleted"), SQLDataType.BIGINT, this, "Дата и время логического удаления записи\n (UNIX timestamp)"); + + /** + * The column idm_reconcile.person.blocked. Дата и время + * логической блокировки записи + * (UNIX timestamp) + */ + public final TableField BLOCKED = createField(DSL.name("blocked"), SQLDataType.BIGINT, this, "Дата и время логической блокировки записи\n (UNIX timestamp)"); + + /** + * The column idm_reconcile.person.block_until. Дата и время + * логического окончания блокировки записи + * (UNIX timestamp) + */ + public final TableField BLOCK_UNTIL = createField(DSL.name("block_until"), SQLDataType.BIGINT, this, "Дата и время логического окончания блокировки записи\n (UNIX timestamp)"); + + /** + * The column idm_reconcile.person.version. Версия записи + */ + public final TableField VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, "Версия записи"); + + private Person(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Person(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Таблица персон (пользователей) в системе"), TableOptions.table(), where); + } + + /** + * Create an aliased idm_reconcile.person table reference + */ + public Person(String alias) { + this(DSL.name(alias), PERSON); + } + + /** + * Create an aliased idm_reconcile.person table reference + */ + public Person(Name alias) { + this(alias, PERSON); + } + + /** + * Create a idm_reconcile.person table reference + */ + public Person() { + this(DSL.name("person"), null); + } + + @Override + public Schema getSchema() { + return aliased() ? null : IdmReconcile.IDM_RECONCILE; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PERSON_PKEY; + } + + @Override + public Person as(String alias) { + return new Person(DSL.name(alias), this); + } + + @Override + public Person as(Name alias) { + return new Person(alias, this); + } + + @Override + public Person as(Table alias) { + return new Person(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Person rename(String name) { + return new Person(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Person rename(Name name) { + return new Person(name, null); + } + + /** + * Rename this table + */ + @Override + public Person rename(Table name) { + return new Person(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Person where(Condition condition) { + return new Person(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Person where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Person where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Person where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Person where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Person where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Person where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Person where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Person whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Person whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Role.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Role.java index 5660c20..80b3b3c 100644 --- a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Role.java +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/Role.java @@ -4,7 +4,6 @@ package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables; -import java.sql.Timestamp; import java.util.Collection; import org.jooq.Condition; @@ -30,7 +29,7 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.reco /** - * This class is generated by jOOQ. + * Справочник ролей системы доступа */ @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class Role extends TableImpl { @@ -51,66 +50,62 @@ public class Role extends TableImpl { } /** - * The column idm_reconcile.role.id. + * The column idm_reconcile.role.id. Уникальный идентификатор + * роли */ - public final TableField ID = createField(DSL.name("id"), SQLDataType.VARCHAR(255).nullable(false), this, ""); + public final TableField ID = createField(DSL.name("id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор роли "); /** - * The column idm_reconcile.role.version. + * The column idm_reconcile.role.name. Наименование роли */ - public final TableField VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, ""); + public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255).nullable(false), this, "Наименование роли"); /** - * The column idm_reconcile.role.modified. + * The column idm_reconcile.role.description. Описание + * назначения роли */ - public final TableField MODIFIED = createField(DSL.name("modified"), SQLDataType.TIMESTAMP(0), this, ""); + public final TableField DESCRIPTION = createField(DSL.name("description"), SQLDataType.VARCHAR(1024), this, "Описание назначения роли"); /** - * The column idm_reconcile.role.schema. + * The column idm_reconcile.role.display_name. Отображаемое имя + * роли */ - public final TableField SCHEMA = createField(DSL.name("schema"), SQLDataType.VARCHAR(255).nullable(false), this, ""); + public final TableField DISPLAY_NAME = createField(DSL.name("display_name"), SQLDataType.VARCHAR(255), this, "Отображаемое имя роли"); /** - * The column idm_reconcile.role.name. + * The column idm_reconcile.role.active. Флаг активности роли */ - public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255), this, ""); + public final TableField ACTIVE = createField(DSL.name("active"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, "Флаг активности роли"); /** - * The column idm_reconcile.role.shortname. + * The column idm_reconcile.role.created. Дата и время создания + * роли (UNIX timestamp) */ - public final TableField SHORTNAME = createField(DSL.name("shortname"), SQLDataType.VARCHAR(255), this, ""); + public final TableField CREATED = createField(DSL.name("created"), SQLDataType.BIGINT.nullable(false), this, "Дата и время создания роли (UNIX timestamp)"); /** - * The column idm_reconcile.role.display_name. + * The column idm_reconcile.role.modified. Дата и время + * последнего изменения роли (UNIX timestamp) */ - public final TableField DISPLAY_NAME = createField(DSL.name("display_name"), SQLDataType.VARCHAR(255), this, ""); + public final TableField MODIFIED = createField(DSL.name("modified"), SQLDataType.BIGINT, this, "Дата и время последнего изменения роли (UNIX timestamp)"); /** - * The column idm_reconcile.role.sessions_limit. + * The column idm_reconcile.role.deleted. Дата и время + * логического удаления роли (UNIX timestamp) */ - public final TableField SESSIONS_LIMIT = createField(DSL.name("sessions_limit"), SQLDataType.INTEGER, this, ""); + public final TableField DELETED = createField(DSL.name("deleted"), SQLDataType.BIGINT, this, "Дата и время логического удаления роли (UNIX timestamp)"); /** - * The column idm_reconcile.role.ervu_role. + * The column idm_reconcile.role.version. Версия записи роли */ - public final TableField ERVU_ROLE = createField(DSL.name("ervu_role"), SQLDataType.BOOLEAN, this, ""); - - /** - * The column idm_reconcile.role.imported. - */ - public final TableField IMPORTED = createField(DSL.name("imported"), SQLDataType.INTEGER, this, ""); - - /** - * The column idm_reconcile.role.description. - */ - public final TableField DESCRIPTION = createField(DSL.name("description"), SQLDataType.CLOB, this, ""); + public final TableField VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, "Версия записи роли"); private Role(Name alias, Table aliased) { this(alias, aliased, (Field[]) null, null); } private Role(Name alias, Table aliased, Field[] parameters, Condition where) { - super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + super(alias, null, aliased, parameters, DSL.comment("Справочник ролей системы доступа"), TableOptions.table(), where); } /** diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/AccountRecord.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/AccountRecord.java index e1ac7fe..aea66fd 100644 --- a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/AccountRecord.java +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/AccountRecord.java @@ -4,8 +4,6 @@ package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records; -import java.sql.Timestamp; - import org.jooq.Record1; import org.jooq.impl.UpdatableRecordImpl; @@ -13,7 +11,7 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Acco /** - * This class is generated by jOOQ. + * Таблица учетных записей пользователей (аккаунтов) */ @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class AccountRecord extends UpdatableRecordImpl { @@ -21,170 +19,210 @@ public class AccountRecord extends UpdatableRecordImpl { private static final long serialVersionUID = 1L; /** - * Setter for idm_reconcile.account.id. + * Setter for idm_reconcile.account.id. Уникальный + * идентификатор аккаунта */ public void setId(String value) { set(0, value); } /** - * Getter for idm_reconcile.account.id. + * Getter for idm_reconcile.account.id. Уникальный + * идентификатор аккаунта */ public String getId() { return (String) get(0); } /** - * Setter for idm_reconcile.account.version. + * Setter for idm_reconcile.account.active. Флаг активности + * аккаунта */ - public void setVersion(Integer value) { + public void setActive(Boolean value) { set(1, value); } /** - * Getter for idm_reconcile.account.version. + * Getter for idm_reconcile.account.active. Флаг активности + * аккаунта */ - public Integer getVersion() { - return (Integer) get(1); + public Boolean getActive() { + return (Boolean) get(1); } /** - * Setter for idm_reconcile.account.modified. + * Setter for idm_reconcile.account.start. Дата и время + * активации аккаунта (UNIX + * timestamp) */ - public void setModified(Timestamp value) { + public void setStart(Long value) { set(2, value); } /** - * Getter for idm_reconcile.account.modified. + * Getter for idm_reconcile.account.start. Дата и время + * активации аккаунта (UNIX + * timestamp) */ - public Timestamp getModified() { - return (Timestamp) get(2); + public Long getStart() { + return (Long) get(2); } /** - * Setter for idm_reconcile.account.schema. + * Setter for idm_reconcile.account.finish. Дата и время + * деактивации аккаунта (UNIX + * timestamp) */ - public void setSchema(String value) { + public void setFinish(Long value) { set(3, value); } /** - * Getter for idm_reconcile.account.schema. + * Getter for idm_reconcile.account.finish. Дата и время + * деактивации аккаунта (UNIX + * timestamp) */ - public String getSchema() { - return (String) get(3); + public Long getFinish() { + return (Long) get(3); } /** - * Setter for idm_reconcile.account.start. + * Setter for idm_reconcile.account.created. Дата и время + * создания аккаунта (UNIX + * timestamp) */ - public void setStart(String value) { + public void setCreated(Long value) { set(4, value); } /** - * Getter for idm_reconcile.account.start. + * Getter for idm_reconcile.account.created. Дата и время + * создания аккаунта (UNIX + * timestamp) */ - public String getStart() { - return (String) get(4); + public Long getCreated() { + return (Long) get(4); } /** - * Setter for idm_reconcile.account.finish. + * Setter for idm_reconcile.account.modified. Дата и время + * последнего изменения + * аккаунта (UNIX timestamp) */ - public void setFinish(String value) { + public void setModified(Long value) { set(5, value); } /** - * Getter for idm_reconcile.account.finish. + * Getter for idm_reconcile.account.modified. Дата и время + * последнего изменения + * аккаунта (UNIX timestamp) */ - public String getFinish() { - return (String) get(5); + public Long getModified() { + return (Long) get(5); } /** - * Setter for idm_reconcile.account.enabled. + * Setter for idm_reconcile.account.appointment. Должность, + * назначенная аккаунту */ - public void setEnabled(Boolean value) { + public void setAppointment(String value) { set(6, value); } /** - * Getter for idm_reconcile.account.enabled. + * Getter for idm_reconcile.account.appointment. Должность, + * назначенная аккаунту */ - public Boolean getEnabled() { - return (Boolean) get(6); + public String getAppointment() { + return (String) get(6); } /** - * Setter for idm_reconcile.account.position. + * Setter for idm_reconcile.account.deleted. Дата и время + * логического удаления аккаунта + * (UNIX timestamp) */ - public void setPosition(String value) { + public void setDeleted(Long value) { set(7, value); } /** - * Getter for idm_reconcile.account.position. + * Getter for idm_reconcile.account.deleted. Дата и время + * логического удаления аккаунта + * (UNIX timestamp) */ - public String getPosition() { - return (String) get(7); + public Long getDeleted() { + return (Long) get(7); } /** - * Setter for idm_reconcile.account.fio. + * Setter for idm_reconcile.account.session_limit. Максимально + * допустимое количество + * сессий */ - public void setFio(String value) { + public void setSessionLimit(Short value) { set(8, value); } /** - * Getter for idm_reconcile.account.fio. + * Getter for idm_reconcile.account.session_limit. Максимально + * допустимое количество + * сессий */ - public String getFio() { - return (String) get(8); + public Short getSessionLimit() { + return (Short) get(8); } /** - * Setter for idm_reconcile.account.work_mail. + * Setter for idm_reconcile.account.version. Версия записи + * аккаунта */ - public void setWorkMail(String value) { + public void setVersion(Integer value) { set(9, value); } /** - * Getter for idm_reconcile.account.work_mail. + * Getter for idm_reconcile.account.version. Версия записи + * аккаунта */ - public String getWorkMail() { - return (String) get(9); + public Integer getVersion() { + return (Integer) get(9); } /** - * Setter for idm_reconcile.account.esia_account. + * Setter for idm_reconcile.account.domain_id. Идентификатор + * домена, связанного с + * аккаунтом */ - public void setEsiaAccount(Boolean value) { + public void setDomainId(String value) { set(10, value); } /** - * Getter for idm_reconcile.account.esia_account. + * Getter for idm_reconcile.account.domain_id. Идентификатор + * домена, связанного с + * аккаунтом */ - public Boolean getEsiaAccount() { - return (Boolean) get(10); + public String getDomainId() { + return (String) get(10); } /** - * Setter for idm_reconcile.account.domain_id. + * Setter for idm_reconcile.account.person_id. Идентификатор + * персоны, связанной с + * аккаунтом */ - public void setDomainId(String value) { + public void setPersonId(String value) { set(11, value); } /** - * Getter for idm_reconcile.account.domain_id. + * Getter for idm_reconcile.account.person_id. Идентификатор + * персоны, связанной с + * аккаунтом */ - public String getDomainId() { + public String getPersonId() { return (String) get(11); } @@ -211,21 +249,21 @@ public class AccountRecord extends UpdatableRecordImpl { /** * Create a detached, initialised AccountRecord */ - public AccountRecord(String id, Integer version, Timestamp modified, String schema, String start, String finish, Boolean enabled, String position, String fio, String workMail, Boolean esiaAccount, String domainId) { + public AccountRecord(String id, Boolean active, Long start, Long finish, Long created, Long modified, String appointment, Long deleted, Short sessionLimit, Integer version, String domainId, String personId) { super(Account.ACCOUNT); setId(id); - setVersion(version); - setModified(modified); - setSchema(schema); + setActive(active); setStart(start); setFinish(finish); - setEnabled(enabled); - setPosition(position); - setFio(fio); - setWorkMail(workMail); - setEsiaAccount(esiaAccount); + setCreated(created); + setModified(modified); + setAppointment(appointment); + setDeleted(deleted); + setSessionLimit(sessionLimit); + setVersion(version); setDomainId(domainId); + setPersonId(personId); resetChangedOnNotNull(); } } diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/AccountRoleRecord.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/AccountRoleRecord.java index 7fad8f8..39ae4d9 100644 --- a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/AccountRoleRecord.java +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/AccountRoleRecord.java @@ -11,7 +11,7 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Acco /** - * This class is generated by jOOQ. + * Связующая таблица для связи многие ко многим между аккаунтами и ролями */ @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class AccountRoleRecord extends UpdatableRecordImpl { @@ -19,33 +19,51 @@ public class AccountRoleRecord extends UpdatableRecordImpl { private static final long serialVersionUID = 1L; /** - * Setter for idm_reconcile.account_role.account_id. + * Setter for idm_reconcile.account_role.account_id. Уникальный + * идентификатор аккаунта */ public void setAccountId(String value) { set(0, value); } /** - * Getter for idm_reconcile.account_role.account_id. + * Getter for idm_reconcile.account_role.account_id. Уникальный + * идентификатор аккаунта */ public String getAccountId() { return (String) get(0); } /** - * Setter for idm_reconcile.account_role.role_id. + * Setter for idm_reconcile.account_role.role_id. Уникальный + * идентификатор роли */ public void setRoleId(String value) { set(1, value); } /** - * Getter for idm_reconcile.account_role.role_id. + * Getter for idm_reconcile.account_role.role_id. Уникальный + * идентификатор роли */ public String getRoleId() { return (String) get(1); } + /** + * Setter for idm_reconcile.account_role.finish. + */ + public void setFinish(Long value) { + set(2, value); + } + + /** + * Getter for idm_reconcile.account_role.finish. + */ + public Long getFinish() { + return (Long) get(2); + } + // ------------------------------------------------------------------------- // Primary key information // ------------------------------------------------------------------------- @@ -69,11 +87,12 @@ public class AccountRoleRecord extends UpdatableRecordImpl { /** * Create a detached, initialised AccountRoleRecord */ - public AccountRoleRecord(String accountId, String roleId) { + public AccountRoleRecord(String accountId, String roleId, Long finish) { super(AccountRole.ACCOUNT_ROLE); setAccountId(accountId); setRoleId(roleId); + setFinish(finish); resetChangedOnNotNull(); } } diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/DomainRecord.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/DomainRecord.java index d14d4fd..7e1488b 100644 --- a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/DomainRecord.java +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/DomainRecord.java @@ -4,8 +4,6 @@ package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records; -import java.sql.Timestamp; - import org.jooq.Record1; import org.jooq.impl.UpdatableRecordImpl; @@ -21,705 +19,289 @@ public class DomainRecord extends UpdatableRecordImpl { private static final long serialVersionUID = 1L; /** - * Setter for idm_reconcile.domain.id. + * Setter for idm_reconcile.domain.id. Уникальный идентификатор + * домена */ public void setId(String value) { set(0, value); } /** - * Getter for idm_reconcile.domain.id. + * Getter for idm_reconcile.domain.id. Уникальный идентификатор + * домена */ public String getId() { return (String) get(0); } /** - * Setter for idm_reconcile.domain.version. + * Setter for idm_reconcile.domain.type. Идентификатор типа + * организации */ - public void setVersion(Integer value) { + public void setType(String value) { set(1, value); } /** - * Getter for idm_reconcile.domain.version. + * Getter for idm_reconcile.domain.type. Идентификатор типа + * организации */ - public Integer getVersion() { - return (Integer) get(1); + public String getType() { + return (String) get(1); } /** - * Setter for idm_reconcile.domain.modified. + * Setter for idm_reconcile.domain.region_code. Код региона, к + * которому относится домен */ - public void setModified(Timestamp value) { + public void setRegionCode(String value) { set(2, value); } /** - * Getter for idm_reconcile.domain.modified. + * Getter for idm_reconcile.domain.region_code. Код региона, к + * которому относится домен */ - public Timestamp getModified() { - return (Timestamp) get(2); + public String getRegionCode() { + return (String) get(2); } /** - * Setter for idm_reconcile.domain.schema. + * Setter for idm_reconcile.domain.name. Краткое наименование + * домена */ - public void setSchema(String value) { + public void setName(String value) { set(3, value); } /** - * Getter for idm_reconcile.domain.schema. + * Getter for idm_reconcile.domain.name. Краткое наименование + * домена */ - public String getSchema() { + public String getName() { return (String) get(3); } /** - * Setter for idm_reconcile.domain.name. + * Setter for idm_reconcile.domain.full_name. Полное + * наименование домена */ - public void setName(String value) { + public void setFullName(String value) { set(4, value); } /** - * Getter for idm_reconcile.domain.name. + * Getter for idm_reconcile.domain.full_name. Полное + * наименование домена */ - public String getName() { + public String getFullName() { return (String) get(4); } /** - * Setter for idm_reconcile.domain.shortname. + * Setter for idm_reconcile.domain.short_name. Сокращенное + * наименование домена */ - public void setShortname(String value) { + public void setShortName(String value) { set(5, value); } /** - * Getter for idm_reconcile.domain.shortname. + * Getter for idm_reconcile.domain.short_name. Сокращенное + * наименование домена */ - public String getShortname() { + public String getShortName() { return (String) get(5); } /** - * Setter for idm_reconcile.domain.fullname. + * Setter for idm_reconcile.domain.reports_enabled. Флаг + * включения домена в отчетность */ - public void setFullname(String value) { + public void setReportsEnabled(Boolean value) { set(6, value); } /** - * Getter for idm_reconcile.domain.fullname. + * Getter for idm_reconcile.domain.reports_enabled. Флаг + * включения домена в отчетность */ - public String getFullname() { - return (String) get(6); + public Boolean getReportsEnabled() { + return (Boolean) get(6); } /** - * Setter for idm_reconcile.domain.dns. + * Setter for idm_reconcile.domain.active. Флаг активности + * домена */ - public void setDns(String value) { + public void setActive(Boolean value) { set(7, value); } /** - * Getter for idm_reconcile.domain.dns. + * Getter for idm_reconcile.domain.active. Флаг активности + * домена */ - public String getDns() { - return (String) get(7); + public Boolean getActive() { + return (Boolean) get(7); } /** - * Setter for idm_reconcile.domain.email. + * Setter for idm_reconcile.domain.created. Дата и время + * создания домена (UNIX timestamp) */ - public void setEmail(String value) { + public void setCreated(Long value) { set(8, value); } /** - * Getter for idm_reconcile.domain.email. + * Getter for idm_reconcile.domain.created. Дата и время + * создания домена (UNIX timestamp) */ - public String getEmail() { - return (String) get(8); + public Long getCreated() { + return (Long) get(8); } /** - * Setter for idm_reconcile.domain.phone. + * Setter for idm_reconcile.domain.modified. Дата и время + * последнего изменения (UNIX timestamp) */ - public void setPhone(String value) { + public void setModified(Long value) { set(9, value); } /** - * Getter for idm_reconcile.domain.phone. + * Getter for idm_reconcile.domain.modified. Дата и время + * последнего изменения (UNIX timestamp) */ - public String getPhone() { - return (String) get(9); + public Long getModified() { + return (Long) get(9); } /** - * Setter for idm_reconcile.domain.address. + * Setter for idm_reconcile.domain.deleted. Дата и время + * логического удаления (UNIX timestamp) */ - public void setAddress(String value) { + public void setDeleted(Long value) { set(10, value); } /** - * Getter for idm_reconcile.domain.address. + * Getter for idm_reconcile.domain.deleted. Дата и время + * логического удаления (UNIX timestamp) */ - public String getAddress() { - return (String) get(10); + public Long getDeleted() { + return (Long) get(10); } /** - * Setter for idm_reconcile.domain.postal_address. + * Setter for idm_reconcile.domain.postal_address_id. + * Идентификатор почтового адреса */ - public void setPostalAddress(String value) { + public void setPostalAddressId(String value) { set(11, value); } /** - * Getter for idm_reconcile.domain.postal_address. + * Getter for idm_reconcile.domain.postal_address_id. + * Идентификатор почтового адреса */ - public String getPostalAddress() { + public String getPostalAddressId() { return (String) get(11); } /** - * Setter for idm_reconcile.domain.address_id. + * Setter for idm_reconcile.domain.address_id. Идентификатор + * основного адреса */ public void setAddressId(String value) { set(12, value); } /** - * Getter for idm_reconcile.domain.address_id. + * Getter for idm_reconcile.domain.address_id. Идентификатор + * основного адреса */ public String getAddressId() { return (String) get(12); } /** - * Setter for idm_reconcile.domain.postal_address_id. + * Setter for idm_reconcile.domain.military_code. Военный код + * организации */ - public void setPostalAddressId(String value) { + public void setMilitaryCode(String value) { set(13, value); } /** - * Getter for idm_reconcile.domain.postal_address_id. + * Getter for idm_reconcile.domain.military_code. Военный код + * организации */ - public String getPostalAddressId() { + public String getMilitaryCode() { return (String) get(13); } /** - * Setter for idm_reconcile.domain.military_code. + * Setter for idm_reconcile.domain.time_zone. Временная зона + * организации */ - public void setMilitaryCode(String value) { + public void setTimeZone(String value) { set(14, value); } /** - * Getter for idm_reconcile.domain.military_code. + * Getter for idm_reconcile.domain.time_zone. Временная зона + * организации */ - public String getMilitaryCode() { + public String getTimeZone() { return (String) get(14); } /** - * Setter for idm_reconcile.domain.timezone. + * Setter for idm_reconcile.domain.subpoena_series_code. Серия + * повестки (например, для юридических процедур) */ - public void setTimezone(String value) { + public void setSubpoenaSeriesCode(String value) { set(15, value); } /** - * Getter for idm_reconcile.domain.timezone. + * Getter for idm_reconcile.domain.subpoena_series_code. Серия + * повестки (например, для юридических процедур) */ - public String getTimezone() { + public String getSubpoenaSeriesCode() { return (String) get(15); } /** - * Setter for idm_reconcile.domain.reports_enabled. + * Setter for idm_reconcile.domain.parent. Идентификатор + * родительской организации (домен) */ - public void setReportsEnabled(Boolean value) { + public void setParent(String value) { set(16, value); } /** - * Getter for idm_reconcile.domain.reports_enabled. + * Getter for idm_reconcile.domain.parent. Идентификатор + * родительской организации (домен) */ - public Boolean getReportsEnabled() { - return (Boolean) get(16); + public String getParent() { + return (String) get(16); } /** - * Setter for idm_reconcile.domain.inn. + * Setter for idm_reconcile.domain.version. Версия записи */ - public void setInn(String value) { + public void setVersion(Integer value) { set(17, value); } /** - * Getter for idm_reconcile.domain.inn. + * Getter for idm_reconcile.domain.version. Версия записи */ - public String getInn() { - return (String) get(17); - } - - /** - * Setter for idm_reconcile.domain.leg. - */ - public void setLeg(String value) { - set(18, value); - } - - /** - * Getter for idm_reconcile.domain.leg. - */ - public String getLeg() { - return (String) get(18); - } - - /** - * Setter for idm_reconcile.domain.ogrn. - */ - public void setOgrn(String value) { - set(19, value); - } - - /** - * Getter for idm_reconcile.domain.ogrn. - */ - public String getOgrn() { - return (String) get(19); - } - - /** - * Setter for idm_reconcile.domain.region. - */ - public void setRegion(String value) { - set(20, value); - } - - /** - * Getter for idm_reconcile.domain.region. - */ - public String getRegion() { - return (String) get(20); - } - - /** - * Setter for idm_reconcile.domain.epgu_id. - */ - public void setEpguId(String value) { - set(21, value); - } - - /** - * Getter for idm_reconcile.domain.epgu_id. - */ - public String getEpguId() { - return (String) get(21); - } - - /** - * Setter for idm_reconcile.domain.type. - */ - public void setType(String value) { - set(22, value); - } - - /** - * Getter for idm_reconcile.domain.type. - */ - public String getType() { - return (String) get(22); - } - - /** - * Setter for idm_reconcile.domain.esia_employee_authorization. - */ - public void setEsiaEmployeeAuthorization(Boolean value) { - set(23, value); - } - - /** - * Getter for idm_reconcile.domain.esia_employee_authorization. - */ - public Boolean getEsiaEmployeeAuthorization() { - return (Boolean) get(23); - } - - /** - * Setter for idm_reconcile.domain.default_s3_bucket. - */ - public void setDefaultS3Bucket(String value) { - set(24, value); - } - - /** - * Getter for idm_reconcile.domain.default_s3_bucket. - */ - public String getDefaultS3Bucket() { - return (String) get(24); - } - - /** - * Setter for idm_reconcile.domain.opf. - */ - public void setOpf(String value) { - set(25, value); - } - - /** - * Getter for idm_reconcile.domain.opf. - */ - public String getOpf() { - return (String) get(25); - } - - /** - * Setter for idm_reconcile.domain.kpp. - */ - public void setKpp(String value) { - set(26, value); - } - - /** - * Getter for idm_reconcile.domain.kpp. - */ - public String getKpp() { - return (String) get(26); - } - - /** - * Setter for idm_reconcile.domain.checking_account. - */ - public void setCheckingAccount(String value) { - set(27, value); - } - - /** - * Getter for idm_reconcile.domain.checking_account. - */ - public String getCheckingAccount() { - return (String) get(27); - } - - /** - * Setter for idm_reconcile.domain.bik. - */ - public void setBik(String value) { - set(28, value); - } - - /** - * Getter for idm_reconcile.domain.bik. - */ - public String getBik() { - return (String) get(28); - } - - /** - * Setter for idm_reconcile.domain.bank_name. - */ - public void setBankName(String value) { - set(29, value); - } - - /** - * Getter for idm_reconcile.domain.bank_name. - */ - public String getBankName() { - return (String) get(29); - } - - /** - * Setter for idm_reconcile.domain.bank_correspondent_account. - */ - public void setBankCorrespondentAccount(String value) { - set(30, value); - } - - /** - * Getter for idm_reconcile.domain.bank_correspondent_account. - */ - public String getBankCorrespondentAccount() { - return (String) get(30); - } - - /** - * Setter for idm_reconcile.domain.oktmo. - */ - public void setOktmo(String value) { - set(31, value); - } - - /** - * Getter for idm_reconcile.domain.oktmo. - */ - public String getOktmo() { - return (String) get(31); - } - - /** - * Setter for idm_reconcile.domain.okato. - */ - public void setOkato(String value) { - set(32, value); - } - - /** - * Getter for idm_reconcile.domain.okato. - */ - public String getOkato() { - return (String) get(32); - } - - /** - * Setter for idm_reconcile.domain.gov_registration_date. - */ - public void setGovRegistrationDate(String value) { - set(33, value); - } - - /** - * Getter for idm_reconcile.domain.gov_registration_date. - */ - public String getGovRegistrationDate() { - return (String) get(33); - } - - /** - * Setter for idm_reconcile.domain.gov_organization_type. - */ - public void setGovOrganizationType(String value) { - set(34, value); - } - - /** - * Getter for idm_reconcile.domain.gov_organization_type. - */ - public String getGovOrganizationType() { - return (String) get(34); - } - - /** - * Setter for idm_reconcile.domain.alias_key. - */ - public void setAliasKey(String value) { - set(35, value); - } - - /** - * Getter for idm_reconcile.domain.alias_key. - */ - public String getAliasKey() { - return (String) get(35); - } - - /** - * Setter for idm_reconcile.domain.pass_key. - */ - public void setPassKey(String value) { - set(36, value); - } - - /** - * Getter for idm_reconcile.domain.pass_key. - */ - public String getPassKey() { - return (String) get(36); - } - - /** - * Setter for idm_reconcile.domain.certificate. - */ - public void setCertificate(String value) { - set(37, value); - } - - /** - * Getter for idm_reconcile.domain.certificate. - */ - public String getCertificate() { - return (String) get(37); - } - - /** - * Setter for idm_reconcile.domain.account_number_tofk. - */ - public void setAccountNumberTofk(String value) { - set(38, value); - } - - /** - * Getter for idm_reconcile.domain.account_number_tofk. - */ - public String getAccountNumberTofk() { - return (String) get(38); - } - - /** - * Setter for idm_reconcile.domain.bik_tofk. - */ - public void setBikTofk(String value) { - set(39, value); - } - - /** - * Getter for idm_reconcile.domain.bik_tofk. - */ - public String getBikTofk() { - return (String) get(39); - } - - /** - * Setter for - * idm_reconcile.domain.correspondent_bank_account_tofk. - */ - public void setCorrespondentBankAccountTofk(String value) { - set(40, value); - } - - /** - * Getter for - * idm_reconcile.domain.correspondent_bank_account_tofk. - */ - public String getCorrespondentBankAccountTofk() { - return (String) get(40); - } - - /** - * Setter for idm_reconcile.domain.name_tofk. - */ - public void setNameTofk(String value) { - set(41, value); - } - - /** - * Getter for idm_reconcile.domain.name_tofk. - */ - public String getNameTofk() { - return (String) get(41); - } - - /** - * Setter for idm_reconcile.domain.nsi_organization_id. - */ - public void setNsiOrganizationId(String value) { - set(42, value); - } - - /** - * Getter for idm_reconcile.domain.nsi_organization_id. - */ - public String getNsiOrganizationId() { - return (String) get(42); - } - - /** - * Setter for idm_reconcile.domain.doc_handle. - */ - public void setDocHandle(String value) { - set(43, value); - } - - /** - * Getter for idm_reconcile.domain.doc_handle. - */ - public String getDocHandle() { - return (String) get(43); - } - - /** - * Setter for idm_reconcile.domain.division_type. - */ - public void setDivisionType(String value) { - set(44, value); - } - - /** - * Getter for idm_reconcile.domain.division_type. - */ - public String getDivisionType() { - return (String) get(44); - } - - /** - * Setter for idm_reconcile.domain.tns_department_id. - */ - public void setTnsDepartmentId(String value) { - set(45, value); - } - - /** - * Getter for idm_reconcile.domain.tns_department_id. - */ - public String getTnsDepartmentId() { - return (String) get(45); - } - - /** - * Setter for idm_reconcile.domain.enabled. - */ - public void setEnabled(Boolean value) { - set(46, value); - } - - /** - * Getter for idm_reconcile.domain.enabled. - */ - public Boolean getEnabled() { - return (Boolean) get(46); - } - - /** - * Setter for idm_reconcile.domain.parent. - */ - public void setParent(String value) { - set(47, value); - } - - /** - * Getter for idm_reconcile.domain.parent. - */ - public String getParent() { - return (String) get(47); - } - - /** - * Setter for idm_reconcile.domain.region_id. - */ - public void setRegionId(String value) { - set(48, value); - } - - /** - * Getter for idm_reconcile.domain.region_id. - */ - public String getRegionId() { - return (String) get(48); - } - - /** - * Setter for idm_reconcile.domain.managed. - */ - public void setManaged(String value) { - set(49, value); - } - - /** - * Getter for idm_reconcile.domain.managed. - */ - public String getManaged() { - return (String) get(49); + public Integer getVersion() { + return (Integer) get(17); } // ------------------------------------------------------------------------- @@ -745,59 +327,27 @@ public class DomainRecord extends UpdatableRecordImpl { /** * Create a detached, initialised DomainRecord */ - public DomainRecord(String id, Integer version, Timestamp modified, String schema, String name, String shortname, String fullname, String dns, String email, String phone, String address, String postalAddress, String addressId, String postalAddressId, String militaryCode, String timezone, Boolean reportsEnabled, String inn, String leg, String ogrn, String region, String epguId, String type, Boolean esiaEmployeeAuthorization, String defaultS3Bucket, String opf, String kpp, String checkingAccount, String bik, String bankName, String bankCorrespondentAccount, String oktmo, String okato, String govRegistrationDate, String govOrganizationType, String aliasKey, String passKey, String certificate, String accountNumberTofk, String bikTofk, String correspondentBankAccountTofk, String nameTofk, String nsiOrganizationId, String docHandle, String divisionType, String tnsDepartmentId, Boolean enabled, String parent, String regionId, String managed) { + public DomainRecord(String id, String type, String regionCode, String name, String fullName, String shortName, Boolean reportsEnabled, Boolean active, Long created, Long modified, Long deleted, String postalAddressId, String addressId, String militaryCode, String timeZone, String subpoenaSeriesCode, String parent, Integer version) { super(Domain.DOMAIN); setId(id); - setVersion(version); - setModified(modified); - setSchema(schema); - setName(name); - setShortname(shortname); - setFullname(fullname); - setDns(dns); - setEmail(email); - setPhone(phone); - setAddress(address); - setPostalAddress(postalAddress); - setAddressId(addressId); - setPostalAddressId(postalAddressId); - setMilitaryCode(militaryCode); - setTimezone(timezone); - setReportsEnabled(reportsEnabled); - setInn(inn); - setLeg(leg); - setOgrn(ogrn); - setRegion(region); - setEpguId(epguId); setType(type); - setEsiaEmployeeAuthorization(esiaEmployeeAuthorization); - setDefaultS3Bucket(defaultS3Bucket); - setOpf(opf); - setKpp(kpp); - setCheckingAccount(checkingAccount); - setBik(bik); - setBankName(bankName); - setBankCorrespondentAccount(bankCorrespondentAccount); - setOktmo(oktmo); - setOkato(okato); - setGovRegistrationDate(govRegistrationDate); - setGovOrganizationType(govOrganizationType); - setAliasKey(aliasKey); - setPassKey(passKey); - setCertificate(certificate); - setAccountNumberTofk(accountNumberTofk); - setBikTofk(bikTofk); - setCorrespondentBankAccountTofk(correspondentBankAccountTofk); - setNameTofk(nameTofk); - setNsiOrganizationId(nsiOrganizationId); - setDocHandle(docHandle); - setDivisionType(divisionType); - setTnsDepartmentId(tnsDepartmentId); - setEnabled(enabled); + setRegionCode(regionCode); + setName(name); + setFullName(fullName); + setShortName(shortName); + setReportsEnabled(reportsEnabled); + setActive(active); + setCreated(created); + setModified(modified); + setDeleted(deleted); + setPostalAddressId(postalAddressId); + setAddressId(addressId); + setMilitaryCode(militaryCode); + setTimeZone(timeZone); + setSubpoenaSeriesCode(subpoenaSeriesCode); setParent(parent); - setRegionId(regionId); - setManaged(managed); + setVersion(version); resetChangedOnNotNull(); } } diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/PersonRecord.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/PersonRecord.java new file mode 100644 index 0000000..e1497a6 --- /dev/null +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/PersonRecord.java @@ -0,0 +1,276 @@ +/* + * This file is generated by jOOQ. + */ +package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records; + + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + +import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Person; + + +/** + * Таблица персон (пользователей) в системе + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class PersonRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for idm_reconcile.person.id. Уникальный идентификатор + * персоны + */ + public void setId(String value) { + set(0, value); + } + + /** + * Getter for idm_reconcile.person.id. Уникальный идентификатор + * персоны + */ + public String getId() { + return (String) get(0); + } + + /** + * Setter for idm_reconcile.person.login. Логин пользователя + */ + public void setLogin(String value) { + set(1, value); + } + + /** + * Getter for idm_reconcile.person.login. Логин пользователя + */ + public String getLogin() { + return (String) get(1); + } + + /** + * Setter for idm_reconcile.person.first_name. Имя пользователя + */ + public void setFirstName(String value) { + set(2, value); + } + + /** + * Getter for idm_reconcile.person.first_name. Имя пользователя + */ + public String getFirstName() { + return (String) get(2); + } + + /** + * Setter for idm_reconcile.person.last_name. Фамилия + * пользователя + */ + public void setLastName(String value) { + set(3, value); + } + + /** + * Getter for idm_reconcile.person.last_name. Фамилия + * пользователя + */ + public String getLastName() { + return (String) get(3); + } + + /** + * Setter for idm_reconcile.person.middle_name. Отчество + * пользователя + */ + public void setMiddleName(String value) { + set(4, value); + } + + /** + * Getter for idm_reconcile.person.middle_name. Отчество + * пользователя + */ + public String getMiddleName() { + return (String) get(4); + } + + /** + * Setter for idm_reconcile.person.second_factor_enabled. Флаг + * включения двухфакторной + * аутентификации + */ + public void setSecondFactorEnabled(Boolean value) { + set(5, value); + } + + /** + * Getter for idm_reconcile.person.second_factor_enabled. Флаг + * включения двухфакторной + * аутентификации + */ + public Boolean getSecondFactorEnabled() { + return (Boolean) get(5); + } + + /** + * Setter for idm_reconcile.person.active. Флаг активности + * пользователя + */ + public void setActive(Boolean value) { + set(6, value); + } + + /** + * Getter for idm_reconcile.person.active. Флаг активности + * пользователя + */ + public Boolean getActive() { + return (Boolean) get(6); + } + + /** + * Setter for idm_reconcile.person.created. Дата и время + * создания записи (UNIX + * timestamp) + */ + public void setCreated(Long value) { + set(7, value); + } + + /** + * Getter for idm_reconcile.person.created. Дата и время + * создания записи (UNIX + * timestamp) + */ + public Long getCreated() { + return (Long) get(7); + } + + /** + * Setter for idm_reconcile.person.modified. Дата и время + * последнего изменения записи + * (UNIX timestamp) + */ + public void setModified(Long value) { + set(8, value); + } + + /** + * Getter for idm_reconcile.person.modified. Дата и время + * последнего изменения записи + * (UNIX timestamp) + */ + public Long getModified() { + return (Long) get(8); + } + + /** + * Setter for idm_reconcile.person.deleted. Дата и время + * логического удаления записи + * (UNIX timestamp) + */ + public void setDeleted(Long value) { + set(9, value); + } + + /** + * Getter for idm_reconcile.person.deleted. Дата и время + * логического удаления записи + * (UNIX timestamp) + */ + public Long getDeleted() { + return (Long) get(9); + } + + /** + * Setter for idm_reconcile.person.blocked. Дата и время + * логической блокировки записи + * (UNIX timestamp) + */ + public void setBlocked(Long value) { + set(10, value); + } + + /** + * Getter for idm_reconcile.person.blocked. Дата и время + * логической блокировки записи + * (UNIX timestamp) + */ + public Long getBlocked() { + return (Long) get(10); + } + + /** + * Setter for idm_reconcile.person.block_until. Дата и время + * логического окончания блокировки записи + * (UNIX timestamp) + */ + public void setBlockUntil(Long value) { + set(11, value); + } + + /** + * Getter for idm_reconcile.person.block_until. Дата и время + * логического окончания блокировки записи + * (UNIX timestamp) + */ + public Long getBlockUntil() { + return (Long) get(11); + } + + /** + * Setter for idm_reconcile.person.version. Версия записи + */ + public void setVersion(Integer value) { + set(12, value); + } + + /** + * Getter for idm_reconcile.person.version. Версия записи + */ + public Integer getVersion() { + return (Integer) get(12); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached PersonRecord + */ + public PersonRecord() { + super(Person.PERSON); + } + + /** + * Create a detached, initialised PersonRecord + */ + public PersonRecord(String id, String login, String firstName, String lastName, String middleName, Boolean secondFactorEnabled, Boolean active, Long created, Long modified, Long deleted, Long blocked, Long blockUntil, Integer version) { + super(Person.PERSON); + + setId(id); + setLogin(login); + setFirstName(firstName); + setLastName(lastName); + setMiddleName(middleName); + setSecondFactorEnabled(secondFactorEnabled); + setActive(active); + setCreated(created); + setModified(modified); + setDeleted(deleted); + setBlocked(blocked); + setBlockUntil(blockUntil); + setVersion(version); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/RoleRecord.java b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/RoleRecord.java index 009e902..3e9f30a 100644 --- a/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/RoleRecord.java +++ b/backend/src/main/java/ru/micord/webbpm/ervu/business_metrics/db_beans/idm_reconcile/tables/records/RoleRecord.java @@ -4,8 +4,6 @@ package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records; -import java.sql.Timestamp; - import org.jooq.Record1; import org.jooq.impl.UpdatableRecordImpl; @@ -13,7 +11,7 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Role /** - * This class is generated by jOOQ. + * Справочник ролей системы доступа */ @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class RoleRecord extends UpdatableRecordImpl { @@ -21,157 +19,141 @@ public class RoleRecord extends UpdatableRecordImpl { private static final long serialVersionUID = 1L; /** - * Setter for idm_reconcile.role.id. + * Setter for idm_reconcile.role.id. Уникальный идентификатор + * роли */ public void setId(String value) { set(0, value); } /** - * Getter for idm_reconcile.role.id. + * Getter for idm_reconcile.role.id. Уникальный идентификатор + * роли */ public String getId() { return (String) get(0); } /** - * Setter for idm_reconcile.role.version. + * Setter for idm_reconcile.role.name. Наименование роли */ - public void setVersion(Integer value) { + public void setName(String value) { set(1, value); } /** - * Getter for idm_reconcile.role.version. + * Getter for idm_reconcile.role.name. Наименование роли */ - public Integer getVersion() { - return (Integer) get(1); + public String getName() { + return (String) get(1); } /** - * Setter for idm_reconcile.role.modified. + * Setter for idm_reconcile.role.description. Описание + * назначения роли */ - public void setModified(Timestamp value) { + public void setDescription(String value) { set(2, value); } /** - * Getter for idm_reconcile.role.modified. + * Getter for idm_reconcile.role.description. Описание + * назначения роли */ - public Timestamp getModified() { - return (Timestamp) get(2); + public String getDescription() { + return (String) get(2); } /** - * Setter for idm_reconcile.role.schema. + * Setter for idm_reconcile.role.display_name. Отображаемое имя + * роли */ - public void setSchema(String value) { + public void setDisplayName(String value) { set(3, value); } /** - * Getter for idm_reconcile.role.schema. + * Getter for idm_reconcile.role.display_name. Отображаемое имя + * роли */ - public String getSchema() { + public String getDisplayName() { return (String) get(3); } /** - * Setter for idm_reconcile.role.name. + * Setter for idm_reconcile.role.active. Флаг активности роли */ - public void setName(String value) { + public void setActive(Boolean value) { set(4, value); } /** - * Getter for idm_reconcile.role.name. + * Getter for idm_reconcile.role.active. Флаг активности роли */ - public String getName() { - return (String) get(4); + public Boolean getActive() { + return (Boolean) get(4); } /** - * Setter for idm_reconcile.role.shortname. + * Setter for idm_reconcile.role.created. Дата и время создания + * роли (UNIX timestamp) */ - public void setShortname(String value) { + public void setCreated(Long value) { set(5, value); } /** - * Getter for idm_reconcile.role.shortname. + * Getter for idm_reconcile.role.created. Дата и время создания + * роли (UNIX timestamp) */ - public String getShortname() { - return (String) get(5); + public Long getCreated() { + return (Long) get(5); } /** - * Setter for idm_reconcile.role.display_name. + * Setter for idm_reconcile.role.modified. Дата и время + * последнего изменения роли (UNIX timestamp) */ - public void setDisplayName(String value) { + public void setModified(Long value) { set(6, value); } /** - * Getter for idm_reconcile.role.display_name. + * Getter for idm_reconcile.role.modified. Дата и время + * последнего изменения роли (UNIX timestamp) */ - public String getDisplayName() { - return (String) get(6); + public Long getModified() { + return (Long) get(6); } /** - * Setter for idm_reconcile.role.sessions_limit. + * Setter for idm_reconcile.role.deleted. Дата и время + * логического удаления роли (UNIX timestamp) */ - public void setSessionsLimit(Integer value) { + public void setDeleted(Long value) { set(7, value); } /** - * Getter for idm_reconcile.role.sessions_limit. + * Getter for idm_reconcile.role.deleted. Дата и время + * логического удаления роли (UNIX timestamp) */ - public Integer getSessionsLimit() { - return (Integer) get(7); + public Long getDeleted() { + return (Long) get(7); } /** - * Setter for idm_reconcile.role.ervu_role. + * Setter for idm_reconcile.role.version. Версия записи роли */ - public void setErvuRole(Boolean value) { + public void setVersion(Integer value) { set(8, value); } /** - * Getter for idm_reconcile.role.ervu_role. + * Getter for idm_reconcile.role.version. Версия записи роли */ - public Boolean getErvuRole() { - return (Boolean) get(8); - } - - /** - * Setter for idm_reconcile.role.imported. - */ - public void setImported(Integer value) { - set(9, value); - } - - /** - * Getter for idm_reconcile.role.imported. - */ - public Integer getImported() { - return (Integer) get(9); - } - - /** - * Setter for idm_reconcile.role.description. - */ - public void setDescription(String value) { - set(10, value); - } - - /** - * Getter for idm_reconcile.role.description. - */ - public String getDescription() { - return (String) get(10); + public Integer getVersion() { + return (Integer) get(8); } // ------------------------------------------------------------------------- @@ -197,20 +179,18 @@ public class RoleRecord extends UpdatableRecordImpl { /** * Create a detached, initialised RoleRecord */ - public RoleRecord(String id, Integer version, Timestamp modified, String schema, String name, String shortname, String displayName, Integer sessionsLimit, Boolean ervuRole, Integer imported, String description) { + public RoleRecord(String id, String name, String description, String displayName, Boolean active, Long created, Long modified, Long deleted, Integer version) { super(Role.ROLE); setId(id); - setVersion(version); - setModified(modified); - setSchema(schema); setName(name); - setShortname(shortname); - setDisplayName(displayName); - setSessionsLimit(sessionsLimit); - setErvuRole(ervuRole); - setImported(imported); setDescription(description); + setDisplayName(displayName); + setActive(active); + setCreated(created); + setModified(modified); + setDeleted(deleted); + setVersion(version); resetChangedOnNotNull(); } } diff --git a/backend/src/main/resources/config/v_1.0/20250530-SUPPORT-9212_idmv3.xml b/backend/src/main/resources/config/v_1.0/20250530-SUPPORT-9212_idmv3.xml new file mode 100644 index 0000000..16ea362 --- /dev/null +++ b/backend/src/main/resources/config/v_1.0/20250530-SUPPORT-9212_idmv3.xml @@ -0,0 +1,198 @@ + + + + + + drop and create table idm_reconcile.domain + + DROP TABLE IF EXISTS idm_reconcile.domain; + + CREATE TABLE IF NOT EXISTS idm_reconcile.domain ( + id varchar(36) PRIMARY KEY, + type varchar(36), + region_code varchar(128), + name varchar(255), + full_name varchar(255), + short_name varchar(255), + reports_enabled boolean DEFAULT false, + active boolean NOT NULL DEFAULT true, + created bigint NOT NULL, + modified bigint, + deleted bigint, + postal_address_id varchar(36), + address_id varchar(36), + military_code varchar(128), + time_zone varchar(128), + subpoena_series_code varchar(128), + parent varchar(36), + version int NOT NULL + ); + + ALTER TABLE idm_reconcile.domain OWNER TO ervu_business_metrics; + + COMMENT ON COLUMN idm_reconcile.domain.id IS 'Уникальный идентификатор домена'; + COMMENT ON COLUMN idm_reconcile.domain.type IS 'Идентификатор типа организации'; + COMMENT ON COLUMN idm_reconcile.domain.region_code IS 'Код региона, к которому относится домен'; + COMMENT ON COLUMN idm_reconcile.domain.name IS 'Краткое наименование домена'; + COMMENT ON COLUMN idm_reconcile.domain.full_name IS 'Полное наименование домена'; + COMMENT ON COLUMN idm_reconcile.domain.short_name IS 'Сокращенное наименование домена'; + COMMENT ON COLUMN idm_reconcile.domain.reports_enabled IS 'Флаг включения домена в отчетность'; + COMMENT ON COLUMN idm_reconcile.domain.active IS 'Флаг активности домена'; + COMMENT ON COLUMN idm_reconcile.domain.created IS 'Дата и время создания домена (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.domain.modified IS 'Дата и время последнего изменения (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.domain.deleted IS 'Дата и время логического удаления (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.domain.postal_address_id IS 'Идентификатор почтового адреса'; + COMMENT ON COLUMN idm_reconcile.domain.address_id IS 'Идентификатор основного адреса'; + COMMENT ON COLUMN idm_reconcile.domain.military_code IS 'Военный код организации'; + COMMENT ON COLUMN idm_reconcile.domain.time_zone IS 'Временная зона организации'; + COMMENT ON COLUMN idm_reconcile.domain.subpoena_series_code IS 'Серия повестки (например, для юридических процедур)'; + COMMENT ON COLUMN idm_reconcile.domain.parent IS 'Идентификатор родительской организации (домен)'; + COMMENT ON COLUMN idm_reconcile.domain.version IS 'Версия записи'; + + + + + + create table idm_reconcile.person + + CREATE TABLE IF NOT EXISTS idm_reconcile.person( + id varchar(36) PRIMARY KEY, + login varchar(128), + first_name varchar(255), + last_name varchar(255), + middle_name varchar(255), + second_factor_enabled boolean, + active boolean NOT NULL DEFAULT true, + created bigint NOT NULL, + modified bigint, + deleted bigint, + blocked bigint, + block_until bigint, + version int NOT NULL + ); + + ALTER TABLE idm_reconcile.person OWNER TO ervu_business_metrics; + + COMMENT ON TABLE idm_reconcile.person IS 'Таблица персон (пользователей) в системе'; + + COMMENT ON COLUMN idm_reconcile.person.id IS 'Уникальный идентификатор персоны'; + COMMENT ON COLUMN idm_reconcile.person.login IS 'Логин пользователя'; + COMMENT ON COLUMN idm_reconcile.person.first_name IS 'Имя пользователя'; + COMMENT ON COLUMN idm_reconcile.person.last_name IS 'Фамилия пользователя'; + COMMENT ON COLUMN idm_reconcile.person.middle_name IS 'Отчество пользователя'; + COMMENT ON COLUMN idm_reconcile.person.second_factor_enabled IS 'Флаг включения двухфакторной + аутентификации'; + COMMENT ON COLUMN idm_reconcile.person.active IS 'Флаг активности пользователя'; + COMMENT ON COLUMN idm_reconcile.person.created IS 'Дата и время создания записи (UNIX + timestamp)'; + COMMENT ON COLUMN idm_reconcile.person.modified IS 'Дата и время последнего изменения записи + (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.person.deleted IS 'Дата и время логического удаления записи + (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.person.blocked IS 'Дата и время логической блокировки записи + (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.person.block_until IS 'Дата и время логического окончания блокировки записи + (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.person.version IS 'Версия записи'; + + + + + drop and create table idm_reconcile.account and idm_reconcile.account_role + + DROP TABLE IF EXISTS idm_reconcile.account_role; + DROP TABLE IF EXISTS idm_reconcile.account; + + CREATE TABLE IF NOT EXISTS idm_reconcile.account ( + id varchar(36) PRIMARY KEY, + active boolean NOT NULL DEFAULT true, + start bigint, + finish bigint, + created bigint NOT NULL, + modified bigint, + appointment varchar(255), + deleted bigint, + session_limit smallint, + version int NOT NULL, + domain_id varchar(36), + person_id varchar(36) + ); + + ALTER TABLE idm_reconcile.account OWNER TO ervu_business_metrics; + + COMMENT ON TABLE idm_reconcile.account IS 'Таблица учетных записей пользователей (аккаунтов)'; + + COMMENT ON COLUMN idm_reconcile.account.id IS 'Уникальный идентификатор аккаунта'; + COMMENT ON COLUMN idm_reconcile.account.active IS 'Флаг активности аккаунта'; + COMMENT ON COLUMN idm_reconcile.account.start IS 'Дата и время активации аккаунта (UNIX + timestamp)'; + COMMENT ON COLUMN idm_reconcile.account.finish IS 'Дата и время деактивации аккаунта (UNIX + timestamp)'; + COMMENT ON COLUMN idm_reconcile.account.created IS 'Дата и время создания аккаунта (UNIX + timestamp)'; + COMMENT ON COLUMN idm_reconcile.account.modified IS 'Дата и время последнего изменения + аккаунта (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.account.appointment IS 'Должность, назначенная аккаунту'; + COMMENT ON COLUMN idm_reconcile.account.deleted IS 'Дата и время логического удаления аккаунта + (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.account.session_limit IS 'Максимально допустимое количество + сессий'; + COMMENT ON COLUMN idm_reconcile.account.version IS 'Версия записи аккаунта'; + COMMENT ON COLUMN idm_reconcile.account.domain_id IS 'Идентификатор домена, связанного с + аккаунтом'; + COMMENT ON COLUMN idm_reconcile.account.person_id IS 'Идентификатор персоны, связанной с + аккаунтом'; + + CREATE TABLE IF NOT EXISTS idm_reconcile.account_role ( + account_id varchar(36) NOT NULL, + role_id varchar(36) NOT NULL, + finish bigint NOT NULL, + + CONSTRAINT pk_account_role PRIMARY KEY (account_id, role_id)); + ALTER TABLE idm_reconcile.account_role OWNER TO ervu_business_metrics; + + COMMENT ON TABLE idm_reconcile.account_role IS 'Связующая таблица для связи многие ко многим между аккаунтами и ролями'; + COMMENT ON COLUMN idm_reconcile.account_role.account_id IS 'Уникальный идентификатор аккаунта'; + COMMENT ON COLUMN idm_reconcile.account_role.role_id IS 'Уникальный идентификатор роли'; + COMMENT ON COLUMN idm_reconcile.account_role.finish IS 'Время окончания роли для аккаунта'; + + + + + drop and create idm_reconcile.role + + DROP TABLE IF EXISTS idm_reconcile.role; + + CREATE TABLE IF NOT EXISTS idm_reconcile.role ( + id varchar(36) PRIMARY KEY, + name varchar(255) NOT NULL, + description varchar(1024), + display_name varchar(255), + active boolean NOT NULL DEFAULT true, + created bigint NOT NULL, + modified bigint, + deleted bigint, + version int NOT NULL + ); + + + ALTER TABLE idm_reconcile.role OWNER TO ervu_business_metrics; + + COMMENT ON TABLE idm_reconcile.role IS 'Справочник ролей системы доступа'; + + COMMENT ON COLUMN idm_reconcile.role.id IS 'Уникальный идентификатор роли '; + COMMENT ON COLUMN idm_reconcile.role.name IS 'Наименование роли'; + COMMENT ON COLUMN idm_reconcile.role.description IS 'Описание назначения роли'; + COMMENT ON COLUMN idm_reconcile.role.display_name IS 'Отображаемое имя роли'; + COMMENT ON COLUMN idm_reconcile.role.active IS 'Флаг активности роли'; + COMMENT ON COLUMN idm_reconcile.role.created IS 'Дата и время создания роли (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.role.modified IS 'Дата и время последнего изменения роли (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.role.deleted IS 'Дата и время логического удаления роли (UNIX timestamp)'; + COMMENT ON COLUMN idm_reconcile.role.version IS 'Версия записи роли'; + + + \ No newline at end of file diff --git a/backend/src/main/resources/config/v_1.0/changelog-1.0.xml b/backend/src/main/resources/config/v_1.0/changelog-1.0.xml index 1c4c60c..c5244d9 100644 --- a/backend/src/main/resources/config/v_1.0/changelog-1.0.xml +++ b/backend/src/main/resources/config/v_1.0/changelog-1.0.xml @@ -36,4 +36,5 @@ + \ No newline at end of file