Merge branch 'feature/SUPPORT-9212_idmv3' into develop

This commit is contained in:
Тимур 2025-07-11 10:40:23 +03:00
commit 33bdd152e4
45 changed files with 2476 additions and 2168 deletions

View file

@ -6,13 +6,16 @@ import java.time.Duration;
import java.util.Collections; import java.util.Collections;
import javax.sql.DataSource; 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 exception.AppInitializeException;
import liquibase.integration.spring.SpringLiquibase; import liquibase.integration.spring.SpringLiquibase;
import net.javacrumbs.shedlock.core.LockProvider; import net.javacrumbs.shedlock.core.LockProvider;
import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider; import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider;
import net.javacrumbs.shedlock.spring.ScheduledLockConfiguration; import net.javacrumbs.shedlock.spring.ScheduledLockConfiguration;
import net.javacrumbs.shedlock.spring.ScheduledLockConfigurationBuilder; import net.javacrumbs.shedlock.spring.ScheduledLockConfigurationBuilder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier; 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; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
/** /**
* Root application context * Root application context This context imports XML configs from all the other jars, and is created
* This context imports XML configs from all the other jars, and is created by {@link WebAppInitializer} * by {@link WebAppInitializer} NB: modules are excluded from component scan since
* NB: modules are excluded from component scan since spring-context.xml sometimes holds important parameters and / or annotations * spring-context.xml sometimes holds important parameters and / or annotations
*
* @author krylov * @author krylov
*/ */
@Configuration @Configuration
@ -48,17 +52,19 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc;
"ervu_business_metrics" "ervu_business_metrics"
}, excludeFilters = { }, excludeFilters = {
@ComponentScan.Filter(type = FilterType.REGEX, pattern = "security.WebSecurityConfig"), @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) @EnableAspectJAutoProxy(proxyTargetClass = true)
@EnableWebMvc @EnableWebMvc
@EnableScheduling @EnableScheduling
public class AppConfig { public class AppConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private static final Logger LOGGER = LoggerFactory.getLogger(
MethodHandles.lookup().lookupClass());
@Bean @Bean
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer(){ public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer(); return new PropertySourcesPlaceholderConfigurer();
} }
@ -85,20 +91,12 @@ public class AppConfig {
createErvuMetricsSchema(dataSource); createErvuMetricsSchema(dataSource);
liquibase.setDataSource(dataSource); liquibase.setDataSource(dataSource);
liquibase.setChangeLog("classpath:config/changelog-master.xml"); 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"); liquibase.setDefaultSchema("ervu_business_metrics");
return liquibase; 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) { private void createErvuMetricsSchema(DataSource dataSource) {
try (Connection connection = dataSource.getConnection()) { try (Connection connection = dataSource.getConnection()) {
LOGGER.info("Start creating ervu_business_metrics schema"); 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 @Bean
public RestTemplate restTemplate() { public RestTemplate restTemplate() {
return new RestTemplate(); return new RestTemplate();

View file

@ -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<T extends UpdatableRecord<T>> {
protected final DSLContext dsl;
protected AbstractDataDao(DSLContext dsl) {
this.dsl = dsl;
}
public T newRecord() {
return dsl.newRecord(getTable());
}
protected abstract Table<T> getTable();
public void upsertData(T record) {
record.merge();
}
protected void deleteByFieldInValues(Field<String> field, List<String> values) {
dsl.deleteFrom(getTable())
.where(field.in(values))
.execute();
}
protected <V> void deleteByValues(Map<Field<V>, V> fieldValues) {
Condition condition = DSL.trueCondition();
for (var entry : fieldValues.entrySet()) {
Field<V> field = entry.getKey();
V value = entry.getValue();
condition = condition.and(field.eq(value));
}
dsl.deleteFrom(getTable())
.where(condition)
.execute();
}
protected <E, I> void deleteByFieldAndInValues(Field<E> equalField, E equalValue,
Field<I> inField, List<I> inValues) {
dsl.deleteFrom(getTable())
.where(equalField.eq(equalValue))
.and(inField.in(inValues))
.execute();
}
protected <S, F> List<S> getValuesByField(Field<S> selectField, Field<F> filterField,
F filterValue) {
return dsl.select(selectField)
.from(getTable())
.where(filterField.eq(filterValue))
.fetch(selectField);
}
protected <V, F> void setFieldByField(Field<V> targetField, V value, Field<F> whereField,
F whereValue) {
dsl.update(getTable())
.set(targetField, value)
.where(whereField.eq(whereValue))
.execute();
}
public void mergeRecords(List<T> records) {
dsl.batchMerge(records).execute();
}
}

View file

@ -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<AccountRecord> {
protected AccountDataDao(DSLContext dsl) {
super(dsl);
}
public List<String> 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<String> ids) {
deleteByFieldInValues(Tables.ACCOUNT.ID, ids);
}
@Override
protected Table<AccountRecord> getTable() {
return Tables.ACCOUNT;
}
}

View file

@ -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<AccountRoleRecord> {
protected AccountRoleDataDao(DSLContext dsl) {
super(dsl);
}
public List<String> getRoleIdsByAccountId(String accountId) {
return getValuesByField(Tables.ACCOUNT_ROLE.ROLE_ID, Tables.ACCOUNT_ROLE.ACCOUNT_ID, accountId);
}
public void deleteAccountRolesByAccountIdAndRoleIds(String accountId, List<String> roleIds) {
deleteByFieldAndInValues(
Tables.ACCOUNT_ROLE.ACCOUNT_ID, accountId,
Tables.ACCOUNT_ROLE.ROLE_ID, roleIds
);
}
public void deleteByAccountIds(List<String> accountIds) {
deleteByFieldInValues(Tables.ACCOUNT_ROLE.ACCOUNT_ID, accountIds);
}
public void deleteAccountRole(AccountRoleRecord record) {
Map<Field<String>, String> conditions = Map.of(
Tables.ACCOUNT_ROLE.ACCOUNT_ID, record.getAccountId(),
Tables.ACCOUNT_ROLE.ROLE_ID, record.getRoleId()
);
deleteByValues(conditions);
}
@Override
protected Table<AccountRoleRecord> getTable() {
return Tables.ACCOUNT_ROLE;
}
}

View file

@ -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<DomainRecord> {
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<DomainRecord> getTable() {
return Tables.DOMAIN;
}
}

View file

@ -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<String> getAccountIds() {
return dsl.select(ACCOUNT.ID)
.from(ACCOUNT)
.fetchSet(ACCOUNT.ID);
}
public Set<String> getRoleIds() {
return dsl.select(ROLE.ID)
.from(ROLE)
.fetchSet(ROLE.ID);
}
public Set<String> getDomainIds() {
return dsl.select(DOMAIN.ID)
.from(DOMAIN)
.fetchSet(DOMAIN.ID);
}
public void insertDomainRecords(List<DomainRecord> domainRecords) {
dsl.batchInsert(domainRecords).execute();
}
public void updateDomainRecords(List<DomainRecord> domainRecords) {
dsl.batchUpdate(domainRecords).execute();
}
public void insertRoleRecords(List<RoleRecord> newRoleRecords) {
dsl.batchInsert(newRoleRecords).execute();
}
public void updateRoleRecords(List<RoleRecord> roleRecords) {
dsl.batchUpdate(roleRecords).execute();
}
public void insertAccountRecords(List<AccountRecord> newAccountRecords) {
dsl.batchInsert(newAccountRecords).execute();
}
public void updateAccountRecords(List<AccountRecord> accountRecords) {
dsl.batchUpdate(accountRecords).execute();
}
public void insertAccountRoleRecords(List<AccountRoleRecord> newAccountRoleRecords) {
dsl.batchInsert(newAccountRoleRecords).execute();
}
public void deleteAccountRolesByAccountIds(List<String> accountIds) {
dsl.deleteFrom(ACCOUNT_ROLE)
.where(ACCOUNT_ROLE.ACCOUNT_ID.in(accountIds))
.execute();
}
public void deleteAccountByIds(List<String> accountIds) {
dsl.deleteFrom(ACCOUNT)
.where(ACCOUNT.ID.in(accountIds))
.execute();
}
public void deleteDomainsByIds(List<String> domainIds) {
dsl.deleteFrom(DOMAIN)
.where(DOMAIN.ID.in(domainIds))
.execute();
}
}

View file

@ -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<PersonRecord> {
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<PersonRecord> getTable() {
return Tables.PERSON;
}
}

View file

@ -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<RoleRecord> {
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<RoleRecord> getTable() {
return Tables.ROLE;
}
}

View file

@ -1,9 +1,7 @@
package ervu_business_metrics.kafka.listener; package ervu_business_metrics.kafka.listener;
import ervu_business_metrics.config.KafkaEnabledCondition; import ervu_business_metrics.config.KafkaEnabledCondition;
import ervu_business_metrics.model.idm.AccountData; import ervu_business_metrics.model.idm.*;
import ervu_business_metrics.model.idm.DomainData;
import ervu_business_metrics.model.idm.RoleData;
import ervu_business_metrics.service.IdmDirectoriesService; import ervu_business_metrics.service.IdmDirectoriesService;
import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Conditional;
import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.annotation.KafkaListener;
@ -26,16 +24,6 @@ public class IdmDirectoriesListener {
idmDirectoriesService.processUpsertMessage(kafkaMessage, DomainData.class); 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);
}
@KafkaListener(id = "${kafka.domain.updated.group.id}", topics = "${kafka.domain.updated}") @KafkaListener(id = "${kafka.domain.updated.group.id}", topics = "${kafka.domain.updated}")
public void listenKafkaDomainUpdated(String kafkaMessage) { public void listenKafkaDomainUpdated(String kafkaMessage) {
idmDirectoriesService.processUpsertMessage(kafkaMessage, DomainData.class); idmDirectoriesService.processUpsertMessage(kafkaMessage, DomainData.class);
@ -46,6 +34,41 @@ public class IdmDirectoriesListener {
idmDirectoriesService.processUpsertMessage(kafkaMessage, DomainData.class); 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}") @KafkaListener(id = "${kafka.account.updated.group.id}", topics = "${kafka.account.updated}")
public void listenKafkaAccountUpdated(String kafkaMessage) { public void listenKafkaAccountUpdated(String kafkaMessage) {
idmDirectoriesService.processUpsertMessage(kafkaMessage, AccountData.class); idmDirectoriesService.processUpsertMessage(kafkaMessage, AccountData.class);
@ -56,13 +79,48 @@ public class IdmDirectoriesListener {
idmDirectoriesService.processUpsertMessage(kafkaMessage, AccountData.class); idmDirectoriesService.processUpsertMessage(kafkaMessage, AccountData.class);
} }
@KafkaListener(id = "${kafka.domain.deleted.group.id}", topics = "${kafka.domain.deleted}") @KafkaListener(id = "${kafka.account.deactivated.group.id}", topics = "${kafka.account.deactivated}")
public void listenKafkaDomainDeleted(String kafkaMessage) { public void listenKafkaAccountDeactivated(String kafkaMessage) {
idmDirectoriesService.processDeleteMessage(kafkaMessage, DomainData.class); idmDirectoriesService.processStatusChange(kafkaMessage, AccountData.class, false);
} }
@KafkaListener(id = "${kafka.account.deleted.group.id}", topics = "${kafka.account.deleted}") @KafkaListener(id = "${kafka.account.activated.group.id}", topics = "${kafka.account.activated}")
public void listenKafkaAccountDeleted(String kafkaMessage) { public void listenKafkaAccountActivated(String kafkaMessage) {
idmDirectoriesService.processDeleteMessage(kafkaMessage, AccountData.class); 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);
} }
} }

View file

@ -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;
}
}

View file

@ -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<String> data;
private String origin;
public List<String> getData() {
return data;
}
public void setData(List<String> 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;
}
}

View file

@ -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<T>{
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;
}
}

View file

@ -1,6 +1,5 @@
package ervu_business_metrics.kafka.model; package ervu_business_metrics.kafka.model;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@ -9,13 +8,22 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
*/ */
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
public class UpsertMessage<T>{ public class UpsertMessage<T>{
private List<T> data; private T data;
private boolean success;
public List<T> getData() { public T getData() {
return data; return data;
} }
public void setData(List<T> data) { public void setData(T data) {
this.data = data; this.data = data;
} }
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
} }

View file

@ -14,20 +14,18 @@ import ervu_business_metrics.deserializer.ReferenceEntityDeserializer;
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
public class AccountData { public class AccountData {
private String id; private String id;
private int version; private boolean active;
private long start;
private long finish;
private long created;
private long modified; private long modified;
private String schema; private long deleted;
private String start; private String appointment;
private String finish; private Short sessionLimit;
private boolean enabled; private int version;
private String position; private ReferenceEntity domain;
private String fio; private ReferenceEntity person;
private String workMail; private List<RoleData> roles;
private boolean esiaAccount;
@JsonProperty("user-domain")
@JsonDeserialize(using = ReferenceEntityDeserializer.class)
private ReferenceEntity userDomain;
private List<String> roles;
public String getId() { public String getId() {
return id; return id;
@ -37,12 +35,36 @@ public class AccountData {
this.id = id; this.id = id;
} }
public int getVersion() { public boolean getActive() {
return version; return active;
} }
public void setVersion(int version) { public void setActive(boolean active) {
this.version = version; 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() { public long getModified() {
@ -53,83 +75,59 @@ public class AccountData {
this.modified = modified; this.modified = modified;
} }
public String getSchema() { public long getDeleted() {
return schema; return deleted;
} }
public void setSchema(String schema) { public void setDeleted(long deleted) {
this.schema = schema; this.deleted = deleted;
} }
public String getStart() { public String getAppointment() {
return start; return appointment;
} }
public void setStart(String start) { public void setAppointment(String appointment) {
this.start = start; this.appointment = appointment;
} }
public String getFinish() { public Short getSessionLimit() {
return finish; return sessionLimit;
} }
public void setFinish(String finish) { public void setSessionLimit(Short sessionLimit) {
this.finish = finish; this.sessionLimit = sessionLimit;
} }
public boolean isEnabled() { public int getVersion() {
return enabled; return version;
} }
public void setEnabled(boolean enabled) { public void setVersion(int version) {
this.enabled = enabled; this.version = version;
} }
public String getPosition() { public ReferenceEntity getDomain() {
return position; return domain;
} }
public void setPosition(String position) { public void setDomain(ReferenceEntity domain) {
this.position = position; this.domain = domain;
} }
public String getFio() { public ReferenceEntity getPerson() {
return fio; return person;
} }
public void setFio(String fio) { public void setPerson(ReferenceEntity person) {
this.fio = fio; this.person = person;
} }
public String getWorkMail() { public List<RoleData> getRoles() {
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<String> getRoles() {
return roles; return roles;
} }
public void setRoles(List<String> roles) { public void setRoles(List<RoleData> roles) {
this.roles = roles; this.roles = roles;
} }
} }

View file

@ -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;
}
}

View file

@ -1,62 +1,36 @@
package ervu_business_metrics.model.idm; package ervu_business_metrics.model.idm;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 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 * @author Adel Kalimullin
*/ */
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
public class DomainData { public class DomainData {
@JsonProperty("id")
private String id; private String id;
private int version; @JsonProperty("codeDomainType")
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;
private String type; private String type;
private boolean esiaEmployeeAuthorization; private String name;
private String defaultS3Bucket; private String fullName;
private String opf; private String shortName;
private String kpp; private boolean reportsEnabled;
private String checkingAccount; private boolean active;
private String bik; private long created;
private String bankName; private long modified;
private String bankCorrespondentAccount; private long deleted;
private String oktmo; private String postalAddressId;
private String okato; private String addressId;
private String govRegistrationDate; private String militaryCode;
private String govOrganizationType; private String timeZone;
private String aliasKey; private String subpoenaSeriesCode;
private String passKey; private int version;
private String certificate; private RegionInfo region;
private String accountNumberTOFK; private ReferenceEntity parent;
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;
public String getId() { public String getId() {
return id; return id;
@ -66,174 +40,6 @@ public class DomainData {
this.id = id; 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() { public String getType() {
return type; return type;
} }
@ -242,219 +48,131 @@ public class DomainData {
this.type = type; this.type = type;
} }
public boolean isEsiaEmployeeAuthorization() { public String getName() {
return esiaEmployeeAuthorization; return name;
} }
public void setEsiaEmployeeAuthorization(boolean esiaEmployeeAuthorization) { public void setName(String name) {
this.esiaEmployeeAuthorization = esiaEmployeeAuthorization; this.name = name;
} }
public String getDefaultS3Bucket() { public String getFullName() {
return defaultS3Bucket; return fullName;
} }
public void setDefaultS3Bucket(String defaultS3Bucket) { public void setFullName(String fullName) {
this.defaultS3Bucket = defaultS3Bucket; this.fullName = fullName;
} }
public String getOpf() { public String getShortName() {
return opf; return shortName;
} }
public void setOpf(String opf) { public void setShortName(String shortName) {
this.opf = opf; this.shortName = shortName;
} }
public String getKpp() { public Boolean getReportsEnabled() {
return kpp; return reportsEnabled;
} }
public void setKpp(String kpp) { public void setReportsEnabled(Boolean reportsEnabled) {
this.kpp = kpp; this.reportsEnabled = reportsEnabled;
} }
public String getCheckingAccount() { public Boolean getActive() {
return checkingAccount; return active;
} }
public void setCheckingAccount(String checkingAccount) { public void setActive(Boolean active) {
this.checkingAccount = checkingAccount; this.active = active;
} }
public String getBik() { public long getCreated() {
return bik; return created;
} }
public void setBik(String bik) { public void setCreated(long created) {
this.bik = bik; this.created = created;
} }
public String getBankName() { public long getModified() {
return bankName; return modified;
} }
public void setBankName(String bankName) { public void setModified(long modified) {
this.bankName = bankName; this.modified = modified;
} }
public String getBankCorrespondentAccount() { public long getDeleted() {
return bankCorrespondentAccount; return deleted;
} }
public void setBankCorrespondentAccount(String bankCorrespondentAccount) { public void setDeleted(long deleted) {
this.bankCorrespondentAccount = bankCorrespondentAccount; this.deleted = deleted;
} }
public String getOktmo() { public String getPostalAddressId() {
return oktmo; return postalAddressId;
} }
public void setOktmo(String oktmo) { public void setPostalAddressId(String postalAddressId) {
this.oktmo = oktmo; this.postalAddressId = postalAddressId;
} }
public String getOkato() { public String getAddressId() {
return okato; return addressId;
} }
public void setOkato(String okato) { public void setAddressId(String addressId) {
this.okato = okato; this.addressId = addressId;
} }
public String getGovRegistrationDate() { public String getMilitaryCode() {
return govRegistrationDate; return militaryCode;
} }
public void setGovRegistrationDate(String govRegistrationDate) { public void setMilitaryCode(String militaryCode) {
this.govRegistrationDate = govRegistrationDate; this.militaryCode = militaryCode;
} }
public String getGovOrganizationType() { public String getTimeZone() {
return govOrganizationType; return timeZone;
} }
public void setGovOrganizationType(String govOrganizationType) { public void setTimeZone(String timeZone) {
this.govOrganizationType = govOrganizationType; this.timeZone = timeZone;
} }
public String getAliasKey() { public String getSubpoenaSeriesCode() {
return aliasKey; return subpoenaSeriesCode;
} }
public void setAliasKey(String aliasKey) { public void setSubpoenaSeriesCode(String subpoenaSeriesCode) {
this.aliasKey = aliasKey; this.subpoenaSeriesCode = subpoenaSeriesCode;
} }
public String getPassKey() { public ReferenceEntity getParent() {
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() {
return parent; return parent;
} }
public void setParent(String parent) { public void setParent(ReferenceEntity parent) {
this.parent = parent; this.parent = parent;
} }
public String getRegionId() { public int getVersion() {
return regionId; return version;
} }
public void setRegionId(String regionId) { public void setVersion(int version) {
this.regionId = regionId; this.version = version;
} }
public String getManaged() { public RegionInfo getRegion() {
return managed; return region;
} }
public void setManaged(String managed) { public void setRegion(RegionInfo region) {
this.managed = managed; this.region = region;
} }
} }

View file

@ -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<AccountData> 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<AccountData> getAccounts() {
return accounts;
}
public void setAccounts(List<AccountData> 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;
}
}

View file

@ -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;
}
}

View file

@ -8,16 +8,15 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
public class RoleData { public class RoleData {
private String id; private String id;
private int version;
private long modified;
private String schema;
private String name; private String name;
private String shortname;
private String displayName;
private int sessionsLimit;
private boolean ervuRole;
private int imported;
private String description; 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() { public String getId() {
return id; return id;
@ -27,30 +26,6 @@ public class RoleData {
this.id = id; 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() { public String getName() {
return name; return name;
} }
@ -59,12 +34,12 @@ public class RoleData {
this.name = name; this.name = name;
} }
public String getShortname() { public String getDescription() {
return shortname; return description;
} }
public void setShortname(String shortname) { public void setDescription(String description) {
this.shortname = shortname; this.description = description;
} }
public String getDisplayName() { public String getDisplayName() {
@ -75,35 +50,51 @@ public class RoleData {
this.displayName = displayName; this.displayName = displayName;
} }
public int getSessionsLimit() { public Boolean getActive() {
return sessionsLimit; return active;
} }
public void setSessionsLimit(int sessionsLimit) { public void setActive(Boolean active) {
this.sessionsLimit = sessionsLimit; this.active = active;
} }
public boolean isErvuRole() { public long getCreated() {
return ervuRole; return created;
} }
public void setErvuRole(boolean ervuRole) { public void setCreated(long created) {
this.ervuRole = ervuRole; this.created = created;
} }
public int getImported() { public long getModified() {
return imported; return modified;
} }
public void setImported(int imported) { public void setModified(long modified) {
this.imported = imported; this.modified = modified;
} }
public String getDescription() { public long getDeleted() {
return description; return deleted;
} }
public void setDescription(String description) { public void setDeleted(long deleted) {
this.description = description; 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;
} }
} }

View file

@ -1,9 +1,7 @@
package ervu_business_metrics.model.sso; package ervu_business_metrics.model.sso;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import ervu_business_metrics.model.ReferenceEntity; 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) @JsonIgnoreProperties(ignoreUnknown = true)
public class UserAccount { public class UserAccount {
private String id; private String id;
@JsonDeserialize(using = ReferenceEntityDeserializer.class)
private ReferenceEntity domain; private ReferenceEntity domain;
public String getId() { public String getId() {

View file

@ -2,7 +2,11 @@ package ervu_business_metrics.security.service;
import java.time.Instant; import java.time.Instant;
import java.time.temporal.ChronoUnit; 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 java.util.stream.Collectors;
import javax.crypto.SecretKey; import javax.crypto.SecretKey;

View file

@ -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<String> getAccountIds() {
return idmDirectoriesDao.getAccountIds();
}
@Cacheable(value = "role-ids", unless = "#result == null")
public Set<String> getRoleIds() {
return idmDirectoriesDao.getRoleIds();
}
@Cacheable(value = "domain-ids", unless = "#result == null")
public Set<String> getDomainIds() {
return idmDirectoriesDao.getDomainIds();
}
@CacheEvict(value = "domain-ids", allEntries = true)
public void insertDomainRecords(List<DomainRecord> newDomainRecords) {
idmDirectoriesDao.insertDomainRecords(newDomainRecords);
}
public void updateDomainRecords(List<DomainRecord> domainRecords) {
idmDirectoriesDao.updateDomainRecords(domainRecords);
}
@CacheEvict(value = "role-ids", allEntries = true)
public void insertRoleRecords(List<RoleRecord> newRoleRecords) {
idmDirectoriesDao.insertRoleRecords(newRoleRecords);
}
public void updateRoleRecords(List<RoleRecord> roleRecords) {
idmDirectoriesDao.updateRoleRecords(roleRecords);
}
@CacheEvict(value = "account-ids", allEntries = true)
public void insertAccountRecords(List<AccountRecord> accountRecords) {
idmDirectoriesDao.insertAccountRecords(accountRecords);
}
public void updateAccountRecords(List<AccountRecord> accountRecords) {
idmDirectoriesDao.updateAccountRecords(accountRecords);
}
public void insertAccountRoleRecords(List<AccountRoleRecord> newAccountRoleRecords) {
idmDirectoriesDao.insertAccountRoleRecords(newAccountRoleRecords);
}
public void deleteAccountRolesByAccountIds(List<String> accountIds) {
idmDirectoriesDao.deleteAccountRolesByAccountIds(accountIds);
}
@CacheEvict(value = "domain-ids", allEntries = true)
public void deleteDomainsByIds(List<String> domainIds) {
idmDirectoriesDao.deleteDomainsByIds(domainIds);
}
@CacheEvict(value = "account-ids", allEntries = true)
public void deleteAccountsByIds(List<String> accountIds) {
idmDirectoriesDao.deleteAccountByIds(accountIds);
}
}

View file

@ -2,36 +2,29 @@ package ervu_business_metrics.service;
import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodHandles;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import ervu_business_metrics.config.KafkaEnabledCondition; 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.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.DataProcessor;
import ervu_business_metrics.service.processor.impl.DomainDataProcessor; import ervu_business_metrics.service.processor.LinkDataProcessor;
import ervu_business_metrics.service.processor.impl.RoleDataProcessor;
import exception.IdmDirectoriesException; import exception.IdmDirectoriesException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value; 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.Conditional;
import org.springframework.context.annotation.DependsOn; 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.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
/** /**
* @author Adel Kalimullin * @author Adel Kalimullin
@ -44,41 +37,29 @@ public class IdmDirectoriesService {
MethodHandles.lookup().lookupClass()); MethodHandles.lookup().lookupClass());
private final RestTemplate restTemplate; private final RestTemplate restTemplate;
private final ObjectMapper objectMapper; private final ObjectMapper objectMapper;
private final Map<Class<?>, DataProcessor<?>> dataProcessors = new HashMap<>(); private final Map<Class<?>, DataProcessor<?, ?>> dataProcessors;
@Value("${ervu.idm.url}") @Value("${ervu.idm.url}")
private String idmUrl; private String idmUrl;
@Value("${ervu.directories:domain, role , account }") @Value("${ervu.directories:domain, role , person }")
private String ervuDirectories; private String ervuDirectories;
public IdmDirectoriesService( public IdmDirectoriesService(
RestTemplate restTemplate, RestTemplate restTemplate,
AccountDataProcessor accountDataProcessor, ObjectMapper objectMapper, List<DataProcessor<?, ?>> processors) {
DomainDataProcessor domainDataProcessor,
RoleDataProcessor roleDataProcessor, ObjectMapper objectMapper) {
this.restTemplate = restTemplate; this.restTemplate = restTemplate;
this.objectMapper = objectMapper; this.objectMapper = objectMapper;
dataProcessors.put(AccountData.class, accountDataProcessor); this.dataProcessors = processors.stream()
dataProcessors.put(DomainData.class, domainDataProcessor); .collect(Collectors.toMap(DataProcessor::getType, p -> p));
dataProcessors.put(RoleData.class, roleDataProcessor);
} }
@Caching(evict = {
@CacheEvict(value = "domain-ids", allEntries = true),
@CacheEvict(value = "role-ids", allEntries = true),
@CacheEvict(value = "account-ids", allEntries = true)
})
public void updateDirectories() { public void updateDirectories() {
try { try {
String[] ervuDirectoriesArray = ervuDirectories.split(","); String[] ervuDirectoriesArray = ervuDirectories.split(",");
Arrays.stream(ervuDirectoriesArray).forEach(ervuDirectory -> { Arrays.stream(ervuDirectoriesArray).forEach(ervuDirectory -> {
String targetUrl = idmUrl + "/reconcile/" + ervuDirectory.trim() + "/to/kafka/v1"; String targetUrl = UriComponentsBuilder.fromHttpUrl(idmUrl)
HttpHeaders headers = new HttpHeaders(); .pathSegment("reconcile", ervuDirectory.trim(), "to", "kafka", "v1")
headers.setContentType(MediaType.APPLICATION_JSON); .toUriString();
String emptyJson = "{}"; ResponseEntity<String> response = restTemplate.getForEntity(targetUrl, String.class);
HttpEntity<String> requestEntity = new HttpEntity<>(emptyJson, headers);
ResponseEntity<String> response = restTemplate.postForEntity(targetUrl, requestEntity,
String.class
);
if (!response.getStatusCode().is2xxSuccessful()) { if (!response.getStatusCode().is2xxSuccessful()) {
LOGGER.error("Error in {} request. Status code: {}; Body: {}", LOGGER.error("Error in {} request. Status code: {}; Body: {}",
ervuDirectory, response.getStatusCode(), response.getBody() ervuDirectory, response.getStatusCode(), response.getBody()
@ -97,18 +78,16 @@ public class IdmDirectoriesService {
try { try {
JavaType messageType = objectMapper.getTypeFactory() JavaType messageType = objectMapper.getTypeFactory()
.constructParametricType(UpsertMessage.class, entityClass); .constructParametricType(UpsertMessage.class, entityClass);
JavaType arrayType = objectMapper.getTypeFactory()
.constructArrayType(messageType);
UpsertMessage<T>[] messages = objectMapper.readValue(kafkaMessage, arrayType); UpsertMessage<T> message = objectMapper.readValue(kafkaMessage, messageType);
if (messages.length > 0 && messages[0].getData() != null && !messages[0].getData()
.isEmpty()) { if (message.isSuccess() && message.getData() != null) {
DataProcessor<T> processor = (DataProcessor<T>) dataProcessors.get(entityClass); DataProcessor<T, ?> processor = (DataProcessor<T, ?>) dataProcessors.get(entityClass);
if (processor == null) { if (processor == null) {
throw new IllegalStateException("No processor found for " + entityClass.getSimpleName()); throw new IllegalStateException("No processor found for " + entityClass.getSimpleName());
} }
processor.upsertData(messages[0].getData()); processor.upsertData(message.getData());
} }
} }
catch (Exception e) { catch (Exception e) {
@ -117,23 +96,44 @@ public class IdmDirectoriesService {
} }
@Transactional @Transactional
public <T> void processDeleteMessage(String kafkaMessage, Class<T> entityClass) { public <T> void processStatusChange(String kafkaMessage, Class<T> entityClass, boolean active) {
try { try {
DeleteKafkaMessage[] deleteKafkaMessages = objectMapper.readValue(kafkaMessage, ChangeActiveMessage changeActiveMessage = objectMapper.readValue(kafkaMessage,
DeleteKafkaMessage[].class ChangeActiveMessage.class
); );
if (Boolean.TRUE.equals(deleteKafkaMessages[0].isSuccess()) if (changeActiveMessage.isSuccess() && changeActiveMessage.getData() != null) {
&& deleteKafkaMessages[0].getData() != null && !deleteKafkaMessages[0].getData() DataProcessor<T, ?> processor = (DataProcessor<T, ?>) dataProcessors.get(entityClass);
.isEmpty()) {
DataProcessor<T> processor = (DataProcessor<T>) dataProcessors.get(entityClass);
if (processor == null) { if (processor == null) {
throw new IllegalStateException("No processor found for " + entityClass.getSimpleName()); 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 <T> void processDeleteLink(String kafkaMessage, Class<T> entityClass) {
try {
JavaType messageType = objectMapper.getTypeFactory()
.constructParametricType(DeleteLinkMessage.class, entityClass);
DeleteLinkMessage<T> message = objectMapper.readValue(kafkaMessage, messageType);
if (message.isSuccess() && message.getData() != null) {
DataProcessor<T, ?> processor = (DataProcessor<T, ?>) dataProcessors.get(entityClass);
if (processor instanceof LinkDataProcessor<T, ?> linkProcessor) {
linkProcessor.deleteLink(message.getData());
}
else {
LOGGER.warn("Processor {} does not support deleteLink operation",
entityClass.getSimpleName()
);
}
}
} }
catch (Exception e) { catch (Exception e) {
throw new IdmDirectoriesException(e); throw new IdmDirectoriesException(e);

View file

@ -1,11 +1,14 @@
package ervu_business_metrics.service.processor; package ervu_business_metrics.service.processor;
import java.util.List;
/** /**
* @author Adel Kalimullin * @author Adel Kalimullin
*/ */
public interface DataProcessor<T> { public interface DataProcessor<T, R> {
void upsertData(List<T> dataList); void upsertData(T data);
void deleteData(List<String> ids);
void changeActiveStatus(String id, boolean active);
Class<T> getType();
R mapToRecord(T data);
} }

View file

@ -0,0 +1,9 @@
package ervu_business_metrics.service.processor;
/**
* @author Adel Kalimullin
*/
public interface LinkDataProcessor<T,R> extends DataProcessor<T,R> {
void deleteLink(T data);
}

View file

@ -1,104 +1,100 @@
package ervu_business_metrics.service.processor.impl; package ervu_business_metrics.service.processor.impl;
import java.sql.Timestamp;
import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import ervu_business_metrics.config.KafkaEnabledCondition; 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.model.idm.AccountData;
import ervu_business_metrics.service.IdmDirectoriesDaoService;
import ervu_business_metrics.service.processor.DataProcessor; import ervu_business_metrics.service.processor.DataProcessor;
import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; 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.AccountRecord;
import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRoleRecord;
/** /**
* @author Adel Kalimullin * @author Adel Kalimullin
*/ */
@Component @Component
@Conditional(KafkaEnabledCondition.class) @Conditional(KafkaEnabledCondition.class)
public class AccountDataProcessor implements DataProcessor<AccountData> { public class AccountDataProcessor implements DataProcessor<AccountData, AccountRecord> {
private final IdmDirectoriesDaoService idmDirectoriesDaoService; private final AccountDataDao dao;
private final AccountRoleDataProcessor accountRoleDataProcessor;
public AccountDataProcessor(IdmDirectoriesDaoService idmDirectoriesDaoService) { public AccountDataProcessor(AccountDataDao dao,
this.idmDirectoriesDaoService = idmDirectoriesDaoService; AccountRoleDataProcessor accountRoleDataProcessor) {
this.dao = dao;
this.accountRoleDataProcessor = accountRoleDataProcessor;
} }
@Override @Override
public void upsertData(List<AccountData> dataList) { public void upsertData(AccountData data) {
List<AccountRecord> newAccountRecords = new ArrayList<>(); AccountRecord accountRecord = mapToRecord(data);
List<AccountRecord> accountRecordsToUpdate = new ArrayList<>(); dao.upsertData(accountRecord);
List<AccountRoleRecord> newAccountRoleRecords = new ArrayList<>();
List<String> accountsToDeleteRoles = new ArrayList<>();
Set<String> 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);
}
} }
@Override @Override
public void deleteData(List<String> ids) { public void changeActiveStatus(String id, boolean active) {
idmDirectoriesDaoService.deleteAccountsByIds(ids); dao.setActiveStatus(id, active);
} }
private void addRolesForAccount(AccountData data, List<AccountRoleRecord> accountRoleRecords) { @Override
Set<String> existingRoleIds = idmDirectoriesDaoService.getRoleIds(); public Class<AccountData> 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<AccountData> accounts) {
List<AccountRecord> accountRecords = new ArrayList<>();
Set<String> 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<String> incomingAccountIds) {
List<String> existingAccountIds = dao.getAccountIdsByPersonId(personId);
List<String> toDelete = existingAccountIds.stream()
.filter(id -> !incomingAccountIds.contains(id))
.toList();
if (!toDelete.isEmpty()) {
accountRoleDataProcessor.deleteByAccountIds(toDelete);
dao.deleteByIds(toDelete);
} }
} }
} }

View file

@ -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<AccountRoleData, AccountRoleRecord> {
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<AccountRoleData> 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<AccountData> accounts) {
List<AccountRoleRecord> accountRoleRecords = new ArrayList<>();
for (AccountData account : accounts) {
String accountId = account.getId();
List<String> existingRoleIds = dao.getRoleIdsByAccountId(accountId);
Set<String> incomingRoleIds = account.getRoles() == null
? Set.of()
: account.getRoles().stream()
.map(RoleData::getId)
.collect(Collectors.toSet());
List<String> toDelete = existingRoleIds.stream()
.filter(roleId -> !incomingRoleIds.contains(roleId))
.toList();
if (!toDelete.isEmpty()) {
dao.deleteAccountRolesByAccountIdAndRoleIds(accountId, toDelete);
}
List<RoleData> toAdd = account.getRoles() == null
? List.of()
: account.getRoles().stream()
.filter(role -> !existingRoleIds.contains(role.getId()))
.toList();
if (!toAdd.isEmpty()) {
List<AccountRoleRecord> 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<String> accountIds) {
dao.deleteByAccountIds(accountIds);
}
@Override
public void deleteLink(AccountRoleData data) {
AccountRoleRecord accountRoleRecord = mapToRecord(data);
dao.deleteAccountRole(accountRoleRecord);
}
}

View file

@ -1,14 +1,8 @@
package ervu_business_metrics.service.processor.impl; 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.config.KafkaEnabledCondition;
import ervu_business_metrics.dao.DomainDataDao;
import ervu_business_metrics.model.idm.DomainData; import ervu_business_metrics.model.idm.DomainData;
import ervu_business_metrics.service.IdmDirectoriesDaoService;
import ervu_business_metrics.service.processor.DataProcessor; import ervu_business_metrics.service.processor.DataProcessor;
import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -19,93 +13,53 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.reco
*/ */
@Component @Component
@Conditional(KafkaEnabledCondition.class) @Conditional(KafkaEnabledCondition.class)
public class DomainDataProcessor implements DataProcessor<DomainData> { public class DomainDataProcessor implements DataProcessor<DomainData, DomainRecord> {
private final IdmDirectoriesDaoService idmDirectoriesDaoService; private final DomainDataDao dao;
public DomainDataProcessor(IdmDirectoriesDaoService idmDirectoriesDaoService) { public DomainDataProcessor(DomainDataDao dao) {
this.idmDirectoriesDaoService = idmDirectoriesDaoService; this.dao = dao;
} }
@Override @Override
public void upsertData(List<DomainData> dataList) { public void upsertData(DomainData domainData) {
List<DomainRecord> newDomainRecords = new ArrayList<>(); DomainRecord domainRecord = mapToRecord(domainData);
List<DomainRecord> domainRecords = new ArrayList<>(); dao.upsertData(domainRecord);
Set<String> existingIds = idmDirectoriesDaoService.getDomainIds(); }
for (DomainData data : dataList) { @Override
DomainRecord domainRecord = idmDirectoriesDaoService.getDomainRecord(); public void changeActiveStatus(String id, boolean active) {
Timestamp modifiedAt = Timestamp.from(Instant.ofEpochMilli(data.getModified())); dao.setActiveStatus(id, active);
}
@Override
public Class<DomainData> getType() {
return DomainData.class;
}
public DomainRecord mapToRecord(DomainData data) {
DomainRecord domainRecord = dao.newRecord();
domainRecord.setId(data.getId()); 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.setType(data.getType());
domainRecord.setEsiaEmployeeAuthorization(data.isEsiaEmployeeAuthorization()); if(data.getRegion() != null) {
domainRecord.setDefaultS3Bucket(data.getDefaultS3Bucket()); domainRecord.setRegionCode(data.getRegion().getCode());
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 { domainRecord.setName(data.getName());
newDomainRecords.add(domainRecord); 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;
if (!newDomainRecords.isEmpty()) {
idmDirectoriesDaoService.insertDomainRecords(newDomainRecords);
}
if (!domainRecords.isEmpty()) {
idmDirectoriesDaoService.updateDomainRecords(domainRecords);
}
}
@Override
public void deleteData(List<String> ids) {
idmDirectoriesDaoService.deleteDomainsByIds(ids);
} }
} }

View file

@ -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<PersonData, PersonRecord> {
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<PersonData> 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;
}
}

View file

@ -1,14 +1,9 @@
package ervu_business_metrics.service.processor.impl; 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.config.KafkaEnabledCondition;
import ervu_business_metrics.dao.RoleDataDao;
import ervu_business_metrics.model.idm.RoleData; import ervu_business_metrics.model.idm.RoleData;
import ervu_business_metrics.service.IdmDirectoriesDaoService;
import ervu_business_metrics.service.processor.DataProcessor; import ervu_business_metrics.service.processor.DataProcessor;
import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -19,57 +14,41 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.reco
*/ */
@Component @Component
@Conditional(KafkaEnabledCondition.class) @Conditional(KafkaEnabledCondition.class)
public class RoleDataProcessor implements DataProcessor<RoleData> { public class RoleDataProcessor implements DataProcessor<RoleData, RoleRecord> {
private final IdmDirectoriesDaoService idmDirectoriesDaoService; private final RoleDataDao dao;
public RoleDataProcessor(IdmDirectoriesDaoService idmDirectoriesDaoService) { public RoleDataProcessor(RoleDataDao dao) {
this.idmDirectoriesDaoService = idmDirectoriesDaoService; this.dao = dao;
} }
@Override @Override
public void upsertData(List<RoleData> dataList) { public void upsertData(RoleData roleData) {
List<RoleRecord> newRoleRecords = new ArrayList<>(); RoleRecord roleRecord = mapToRecord(roleData);
List<RoleRecord> roleRecords = new ArrayList<>(); dao.upsertData(roleRecord);
Set<String> existingIds = idmDirectoriesDaoService.getRoleIds();
for (RoleData data : dataList) {
if (!data.isErvuRole()) {
continue;
} }
RoleRecord record = idmDirectoriesDaoService.getRoleRecord();
Timestamp modifiedAt = Timestamp.from(Instant.ofEpochMilli(data.getModified()));
@Override
public void changeActiveStatus(String id, boolean active) {
dao.setActiveStatus(id, active);
}
@Override
public Class<RoleData> getType() {
return RoleData.class;
}
@Override
public RoleRecord mapToRecord(RoleData data) {
RoleRecord record = dao.newRecord();
record.setId(data.getId()); record.setId(data.getId());
record.setName(data.getName()); 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.setDescription(data.getDescription());
record.setErvuRole(data.isErvuRole()); record.setDisplayName(data.getDisplayName());
record.setModified(modifiedAt); record.setActive(data.getActive());
record.setCreated(data.getCreated());
if (existingIds.contains(data.getId())) { record.setModified(data.getModified());
roleRecords.add(record); record.setDeleted(data.getDeleted());
} record.setVersion(data.getVersion());
else { return record;
newRoleRecords.add(record);
}
}
if (!newRoleRecords.isEmpty()) {
idmDirectoriesDaoService.insertRoleRecords(newRoleRecords);
}
if (!roleRecords.isEmpty()) {
idmDirectoriesDaoService.updateRoleRecords(roleRecords);
}
}
@Override
public void deleteData(List<String> ids) {
// TODO удаление пока не реализовано
} }
} }

View file

@ -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.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.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.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.Role;
@ -33,7 +34,7 @@ public class IdmReconcile extends SchemaImpl {
public static final IdmReconcile IDM_RECONCILE = new IdmReconcile(); public static final IdmReconcile IDM_RECONCILE = new IdmReconcile();
/** /**
* The table <code>idm_reconcile.account</code>. * Таблица учетных записей пользователей (аккаунтов)
*/ */
public final Account ACCOUNT = Account.ACCOUNT; public final Account ACCOUNT = Account.ACCOUNT;
@ -43,7 +44,7 @@ public class IdmReconcile extends SchemaImpl {
public final AccountBlocked ACCOUNT_BLOCKED = AccountBlocked.ACCOUNT_BLOCKED; public final AccountBlocked ACCOUNT_BLOCKED = AccountBlocked.ACCOUNT_BLOCKED;
/** /**
* The table <code>idm_reconcile.account_role</code>. * Связующая таблица для связи многие ко многим между аккаунтами и ролями
*/ */
public final AccountRole ACCOUNT_ROLE = AccountRole.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; public final Domain DOMAIN = Domain.DOMAIN;
/** /**
* The table <code>idm_reconcile.role</code>. * Таблица персон (пользователей) в системе
*/
public final Person PERSON = Person.PERSON;
/**
* Справочник ролей системы доступа
*/ */
public final Role ROLE = Role.ROLE; public final Role ROLE = Role.ROLE;
@ -77,6 +83,7 @@ public class IdmReconcile extends SchemaImpl {
AccountBlocked.ACCOUNT_BLOCKED, AccountBlocked.ACCOUNT_BLOCKED,
AccountRole.ACCOUNT_ROLE, AccountRole.ACCOUNT_ROLE,
Domain.DOMAIN, Domain.DOMAIN,
Person.PERSON,
Role.ROLE Role.ROLE
); );
} }

View file

@ -4,7 +4,6 @@
package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile; package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile;
import org.jooq.ForeignKey;
import org.jooq.TableField; import org.jooq.TableField;
import org.jooq.UniqueKey; import org.jooq.UniqueKey;
import org.jooq.impl.DSL; 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.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.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.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.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.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.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.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.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; 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<AccountBlockedRecord> ACCOUNT_BLOCKED_PKEY = Internal.createUniqueKey(AccountBlocked.ACCOUNT_BLOCKED, DSL.name("account_blocked_pkey"), new TableField[] { AccountBlocked.ACCOUNT_BLOCKED.ID }, true); public static final UniqueKey<AccountBlockedRecord> ACCOUNT_BLOCKED_PKEY = Internal.createUniqueKey(AccountBlocked.ACCOUNT_BLOCKED, DSL.name("account_blocked_pkey"), new TableField[] { AccountBlocked.ACCOUNT_BLOCKED.ID }, true);
public static final UniqueKey<AccountRoleRecord> 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<AccountRoleRecord> 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<DomainRecord> DOMAIN_PKEY = Internal.createUniqueKey(Domain.DOMAIN, DSL.name("domain_pkey"), new TableField[] { Domain.DOMAIN.ID }, true); public static final UniqueKey<DomainRecord> DOMAIN_PKEY = Internal.createUniqueKey(Domain.DOMAIN, DSL.name("domain_pkey"), new TableField[] { Domain.DOMAIN.ID }, true);
public static final UniqueKey<PersonRecord> PERSON_PKEY = Internal.createUniqueKey(Person.PERSON, DSL.name("person_pkey"), new TableField[] { Person.PERSON.ID }, true);
public static final UniqueKey<RoleRecord> ROLE_PKEY = Internal.createUniqueKey(Role.ROLE, DSL.name("role_pkey"), new TableField[] { Role.ROLE.ID }, true); public static final UniqueKey<RoleRecord> ROLE_PKEY = Internal.createUniqueKey(Role.ROLE, DSL.name("role_pkey"), new TableField[] { Role.ROLE.ID }, true);
// -------------------------------------------------------------------------
// FOREIGN KEY definitions
// -------------------------------------------------------------------------
public static final ForeignKey<AccountRoleRecord, AccountRecord> 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);
} }

View file

@ -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.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.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.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.Role;
@ -18,7 +19,7 @@ import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.Role
public class Tables { public class Tables {
/** /**
* The table <code>idm_reconcile.account</code>. * Таблица учетных записей пользователей (аккаунтов)
*/ */
public static final Account ACCOUNT = Account.ACCOUNT; public static final Account ACCOUNT = Account.ACCOUNT;
@ -28,7 +29,7 @@ public class Tables {
public static final AccountBlocked ACCOUNT_BLOCKED = AccountBlocked.ACCOUNT_BLOCKED; public static final AccountBlocked ACCOUNT_BLOCKED = AccountBlocked.ACCOUNT_BLOCKED;
/** /**
* The table <code>idm_reconcile.account_role</code>. * Связующая таблица для связи многие ко многим между аккаунтами и ролями
*/ */
public static final AccountRole ACCOUNT_ROLE = AccountRole.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; public static final Domain DOMAIN = Domain.DOMAIN;
/** /**
* The table <code>idm_reconcile.role</code>. * Таблица персон (пользователей) в системе
*/
public static final Person PERSON = Person.PERSON;
/**
* Справочник ролей системы доступа
*/ */
public static final Role ROLE = Role.ROLE; public static final Role ROLE = Role.ROLE;
} }

View file

@ -4,18 +4,13 @@
package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables; package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables;
import java.sql.Timestamp;
import java.util.Collection; import java.util.Collection;
import org.jooq.Condition; import org.jooq.Condition;
import org.jooq.Field; import org.jooq.Field;
import org.jooq.ForeignKey;
import org.jooq.InverseForeignKey;
import org.jooq.Name; import org.jooq.Name;
import org.jooq.Path;
import org.jooq.PlainSQL; import org.jooq.PlainSQL;
import org.jooq.QueryPart; import org.jooq.QueryPart;
import org.jooq.Record;
import org.jooq.SQL; import org.jooq.SQL;
import org.jooq.Schema; import org.jooq.Schema;
import org.jooq.Select; 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.IdmReconcile;
import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Keys; 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; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRecord;
/** /**
* This class is generated by jOOQ. * Таблица учетных записей пользователей (аккаунтов)
*/ */
@SuppressWarnings({ "all", "unchecked", "rawtypes" }) @SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Account extends TableImpl<AccountRecord> { public class Account extends TableImpl<AccountRecord> {
@ -56,71 +50,91 @@ public class Account extends TableImpl<AccountRecord> {
} }
/** /**
* The column <code>idm_reconcile.account.id</code>. * The column <code>idm_reconcile.account.id</code>. Уникальный
* идентификатор аккаунта
*/ */
public final TableField<AccountRecord, String> ID = createField(DSL.name("id"), SQLDataType.VARCHAR(36).nullable(false), this, ""); public final TableField<AccountRecord, String> ID = createField(DSL.name("id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор аккаунта");
/** /**
* The column <code>idm_reconcile.account.version</code>. * The column <code>idm_reconcile.account.active</code>. Флаг активности
* аккаунта
*/ */
public final TableField<AccountRecord, Integer> VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, ""); public final TableField<AccountRecord, Boolean> ACTIVE = createField(DSL.name("active"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, "Флаг активности аккаунта");
/** /**
* The column <code>idm_reconcile.account.modified</code>. * The column <code>idm_reconcile.account.start</code>. Дата и время
* активации аккаунта (UNIX
* timestamp)
*/ */
public final TableField<AccountRecord, Timestamp> MODIFIED = createField(DSL.name("modified"), SQLDataType.TIMESTAMP(0), this, ""); public final TableField<AccountRecord, Long> START = createField(DSL.name("start"), SQLDataType.BIGINT, this, "Дата и время активации аккаунта (UNIX\n timestamp)");
/** /**
* The column <code>idm_reconcile.account.schema</code>. * The column <code>idm_reconcile.account.finish</code>. Дата и время
* деактивации аккаунта (UNIX
* timestamp)
*/ */
public final TableField<AccountRecord, String> SCHEMA = createField(DSL.name("schema"), SQLDataType.VARCHAR(100).nullable(false), this, ""); public final TableField<AccountRecord, Long> FINISH = createField(DSL.name("finish"), SQLDataType.BIGINT, this, "Дата и время деактивации аккаунта (UNIX\n timestamp)");
/** /**
* The column <code>idm_reconcile.account.start</code>. * The column <code>idm_reconcile.account.created</code>. Дата и время
* создания аккаунта (UNIX
* timestamp)
*/ */
public final TableField<AccountRecord, String> START = createField(DSL.name("start"), SQLDataType.VARCHAR(50), this, ""); public final TableField<AccountRecord, Long> CREATED = createField(DSL.name("created"), SQLDataType.BIGINT.nullable(false), this, "Дата и время создания аккаунта (UNIX\n timestamp)");
/** /**
* The column <code>idm_reconcile.account.finish</code>. * The column <code>idm_reconcile.account.modified</code>. Дата и время
* последнего изменения
* аккаунта (UNIX timestamp)
*/ */
public final TableField<AccountRecord, String> FINISH = createField(DSL.name("finish"), SQLDataType.VARCHAR(50), this, ""); public final TableField<AccountRecord, Long> MODIFIED = createField(DSL.name("modified"), SQLDataType.BIGINT, this, "Дата и время последнего изменения\n аккаунта (UNIX timestamp)");
/** /**
* The column <code>idm_reconcile.account.enabled</code>. * The column <code>idm_reconcile.account.appointment</code>. Должность,
* назначенная аккаунту
*/ */
public final TableField<AccountRecord, Boolean> ENABLED = createField(DSL.name("enabled"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, ""); public final TableField<AccountRecord, String> APPOINTMENT = createField(DSL.name("appointment"), SQLDataType.VARCHAR(255), this, "Должность, назначенная аккаунту");
/** /**
* The column <code>idm_reconcile.account.position</code>. * The column <code>idm_reconcile.account.deleted</code>. Дата и время
* логического удаления аккаунта
* (UNIX timestamp)
*/ */
public final TableField<AccountRecord, String> POSITION = createField(DSL.name("position"), SQLDataType.VARCHAR(255), this, ""); public final TableField<AccountRecord, Long> DELETED = createField(DSL.name("deleted"), SQLDataType.BIGINT, this, "Дата и время логического удаления аккаунта\n (UNIX timestamp)");
/** /**
* The column <code>idm_reconcile.account.fio</code>. * The column <code>idm_reconcile.account.session_limit</code>. Максимально
* допустимое количество
* сессий
*/ */
public final TableField<AccountRecord, String> FIO = createField(DSL.name("fio"), SQLDataType.VARCHAR(255), this, ""); public final TableField<AccountRecord, Short> SESSION_LIMIT = createField(DSL.name("session_limit"), SQLDataType.SMALLINT, this, "Максимально допустимое количество\n сессий");
/** /**
* The column <code>idm_reconcile.account.work_mail</code>. * The column <code>idm_reconcile.account.version</code>. Версия записи
* аккаунта
*/ */
public final TableField<AccountRecord, String> WORK_MAIL = createField(DSL.name("work_mail"), SQLDataType.VARCHAR(255), this, ""); public final TableField<AccountRecord, Integer> VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, "Версия записи аккаунта");
/** /**
* The column <code>idm_reconcile.account.esia_account</code>. * The column <code>idm_reconcile.account.domain_id</code>. Идентификатор
* домена, связанного с
* аккаунтом
*/ */
public final TableField<AccountRecord, Boolean> ESIA_ACCOUNT = createField(DSL.name("esia_account"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("false"), SQLDataType.BOOLEAN)), this, ""); public final TableField<AccountRecord, String> DOMAIN_ID = createField(DSL.name("domain_id"), SQLDataType.VARCHAR(36), this, "Идентификатор домена, связанного с\n аккаунтом");
/** /**
* The column <code>idm_reconcile.account.domain_id</code>. * The column <code>idm_reconcile.account.person_id</code>. Идентификатор
* персоны, связанной с
* аккаунтом
*/ */
public final TableField<AccountRecord, String> DOMAIN_ID = createField(DSL.name("domain_id"), SQLDataType.VARCHAR(36), this, ""); public final TableField<AccountRecord, String> PERSON_ID = createField(DSL.name("person_id"), SQLDataType.VARCHAR(36), this, "Идентификатор персоны, связанной с\n аккаунтом");
private Account(Name alias, Table<AccountRecord> aliased) { private Account(Name alias, Table<AccountRecord> aliased) {
this(alias, aliased, (Field<?>[]) null, null); this(alias, aliased, (Field<?>[]) null, null);
} }
private Account(Name alias, Table<AccountRecord> aliased, Field<?>[] parameters, Condition where) { private Account(Name alias, Table<AccountRecord> 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<AccountRecord> {
this(DSL.name("account"), null); this(DSL.name("account"), null);
} }
public <O extends Record> Account(Table<O> path, ForeignKey<O, AccountRecord> childPath, InverseForeignKey<O, AccountRecord> parentPath) {
super(path, childPath, parentPath, ACCOUNT);
}
/**
* A subtype implementing {@link Path} for simplified path-based joins.
*/
public static class AccountPath extends Account implements Path<AccountRecord> {
public <O extends Record> AccountPath(Table<O> path, ForeignKey<O, AccountRecord> childPath, InverseForeignKey<O, AccountRecord> parentPath) {
super(path, childPath, parentPath);
}
private AccountPath(Name alias, Table<AccountRecord> 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 @Override
public Schema getSchema() { public Schema getSchema() {
return aliased() ? null : IdmReconcile.IDM_RECONCILE; return aliased() ? null : IdmReconcile.IDM_RECONCILE;
@ -185,19 +168,6 @@ public class Account extends TableImpl<AccountRecord> {
return Keys.ACCOUNT_PKEY; return Keys.ACCOUNT_PKEY;
} }
private transient AccountRolePath _accountRole;
/**
* Get the implicit to-many join path to the
* <code>idm_reconcile.account_role</code> table
*/
public AccountRolePath accountRole() {
if (_accountRole == null)
_accountRole = new AccountRolePath(this, null, Keys.ACCOUNT_ROLE__FK_ACCOUNT_ROLE_ACCOUNT.getInverseKey());
return _accountRole;
}
@Override @Override
public Account as(String alias) { public Account as(String alias) {
return new Account(DSL.name(alias), this); return new Account(DSL.name(alias), this);

View file

@ -4,19 +4,13 @@
package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables; package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import org.jooq.Condition; import org.jooq.Condition;
import org.jooq.Field; import org.jooq.Field;
import org.jooq.ForeignKey;
import org.jooq.InverseForeignKey;
import org.jooq.Name; import org.jooq.Name;
import org.jooq.Path;
import org.jooq.PlainSQL; import org.jooq.PlainSQL;
import org.jooq.QueryPart; import org.jooq.QueryPart;
import org.jooq.Record;
import org.jooq.SQL; import org.jooq.SQL;
import org.jooq.Schema; import org.jooq.Schema;
import org.jooq.Select; 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.IdmReconcile;
import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.Keys; 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; import ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records.AccountRoleRecord;
/** /**
* This class is generated by jOOQ. * Связующая таблица для связи многие ко многим между аккаунтами и ролями
*/ */
@SuppressWarnings({ "all", "unchecked", "rawtypes" }) @SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class AccountRole extends TableImpl<AccountRoleRecord> { public class AccountRole extends TableImpl<AccountRoleRecord> {
@ -57,21 +50,28 @@ public class AccountRole extends TableImpl<AccountRoleRecord> {
} }
/** /**
* The column <code>idm_reconcile.account_role.account_id</code>. * The column <code>idm_reconcile.account_role.account_id</code>. Уникальный
* идентификатор аккаунта
*/ */
public final TableField<AccountRoleRecord, String> ACCOUNT_ID = createField(DSL.name("account_id"), SQLDataType.VARCHAR(36).nullable(false), this, ""); public final TableField<AccountRoleRecord, String> ACCOUNT_ID = createField(DSL.name("account_id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор аккаунта");
/** /**
* The column <code>idm_reconcile.account_role.role_id</code>. * The column <code>idm_reconcile.account_role.role_id</code>. Уникальный
* идентификатор роли
*/ */
public final TableField<AccountRoleRecord, String> ROLE_ID = createField(DSL.name("role_id"), SQLDataType.VARCHAR(36).nullable(false), this, ""); public final TableField<AccountRoleRecord, String> ROLE_ID = createField(DSL.name("role_id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор роли");
/**
* The column <code>idm_reconcile.account_role.finish</code>.
*/
public final TableField<AccountRoleRecord, Long> FINISH = createField(DSL.name("finish"), SQLDataType.BIGINT.nullable(false), this, "");
private AccountRole(Name alias, Table<AccountRoleRecord> aliased) { private AccountRole(Name alias, Table<AccountRoleRecord> aliased) {
this(alias, aliased, (Field<?>[]) null, null); this(alias, aliased, (Field<?>[]) null, null);
} }
private AccountRole(Name alias, Table<AccountRoleRecord> aliased, Field<?>[] parameters, Condition where) { private AccountRole(Name alias, Table<AccountRoleRecord> 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<AccountRoleRecord> {
this(DSL.name("account_role"), null); this(DSL.name("account_role"), null);
} }
public <O extends Record> AccountRole(Table<O> path, ForeignKey<O, AccountRoleRecord> childPath, InverseForeignKey<O, AccountRoleRecord> 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<AccountRoleRecord> {
public <O extends Record> AccountRolePath(Table<O> path, ForeignKey<O, AccountRoleRecord> childPath, InverseForeignKey<O, AccountRoleRecord> parentPath) {
super(path, childPath, parentPath);
}
private AccountRolePath(Name alias, Table<AccountRoleRecord> 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 @Override
public Schema getSchema() { public Schema getSchema() {
return aliased() ? null : IdmReconcile.IDM_RECONCILE; return aliased() ? null : IdmReconcile.IDM_RECONCILE;
@ -136,24 +105,6 @@ public class AccountRole extends TableImpl<AccountRoleRecord> {
return Keys.PK_ACCOUNT_ROLE; return Keys.PK_ACCOUNT_ROLE;
} }
@Override
public List<ForeignKey<AccountRoleRecord, ?>> getReferences() {
return Arrays.asList(Keys.ACCOUNT_ROLE__FK_ACCOUNT_ROLE_ACCOUNT);
}
private transient AccountPath _account;
/**
* Get the implicit join path to the <code>idm_reconcile.account</code>
* table.
*/
public AccountPath account() {
if (_account == null)
_account = new AccountPath(this, Keys.ACCOUNT_ROLE__FK_ACCOUNT_ROLE_ACCOUNT, null);
return _account;
}
@Override @Override
public AccountRole as(String alias) { public AccountRole as(String alias) {
return new AccountRole(DSL.name(alias), this); return new AccountRole(DSL.name(alias), this);

View file

@ -4,7 +4,6 @@
package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables; package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables;
import java.sql.Timestamp;
import java.util.Collection; import java.util.Collection;
import org.jooq.Condition; import org.jooq.Condition;
@ -51,255 +50,111 @@ public class Domain extends TableImpl<DomainRecord> {
} }
/** /**
* The column <code>idm_reconcile.domain.id</code>. * The column <code>idm_reconcile.domain.id</code>. Уникальный идентификатор
* домена
*/ */
public final TableField<DomainRecord, String> ID = createField(DSL.name("id"), SQLDataType.VARCHAR(255).nullable(false), this, ""); public final TableField<DomainRecord, String> ID = createField(DSL.name("id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор домена");
/** /**
* The column <code>idm_reconcile.domain.version</code>. * The column <code>idm_reconcile.domain.type</code>. Идентификатор типа
* организации
*/ */
public final TableField<DomainRecord, Integer> VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, ""); public final TableField<DomainRecord, String> TYPE = createField(DSL.name("type"), SQLDataType.VARCHAR(36), this, "Идентификатор типа организации");
/** /**
* The column <code>idm_reconcile.domain.modified</code>. * The column <code>idm_reconcile.domain.region_code</code>. Код региона, к
* которому относится домен
*/ */
public final TableField<DomainRecord, Timestamp> MODIFIED = createField(DSL.name("modified"), SQLDataType.TIMESTAMP(0), this, ""); public final TableField<DomainRecord, String> REGION_CODE = createField(DSL.name("region_code"), SQLDataType.VARCHAR(128), this, "Код региона, к которому относится домен");
/** /**
* The column <code>idm_reconcile.domain.schema</code>. * The column <code>idm_reconcile.domain.name</code>. Краткое наименование
* домена
*/ */
public final TableField<DomainRecord, String> SCHEMA = createField(DSL.name("schema"), SQLDataType.VARCHAR(255).nullable(false), this, ""); public final TableField<DomainRecord, String> NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255), this, "Краткое наименование домена");
/** /**
* The column <code>idm_reconcile.domain.name</code>. * The column <code>idm_reconcile.domain.full_name</code>. Полное
* наименование домена
*/ */
public final TableField<DomainRecord, String> NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, String> FULL_NAME = createField(DSL.name("full_name"), SQLDataType.VARCHAR(255), this, "Полное наименование домена");
/** /**
* The column <code>idm_reconcile.domain.shortname</code>. * The column <code>idm_reconcile.domain.short_name</code>. Сокращенное
* наименование домена
*/ */
public final TableField<DomainRecord, String> SHORTNAME = createField(DSL.name("shortname"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, String> SHORT_NAME = createField(DSL.name("short_name"), SQLDataType.VARCHAR(255), this, "Сокращенное наименование домена");
/** /**
* The column <code>idm_reconcile.domain.fullname</code>. * The column <code>idm_reconcile.domain.reports_enabled</code>. Флаг
* включения домена в отчетность
*/ */
public final TableField<DomainRecord, String> FULLNAME = createField(DSL.name("fullname"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, Boolean> REPORTS_ENABLED = createField(DSL.name("reports_enabled"), SQLDataType.BOOLEAN.defaultValue(DSL.field(DSL.raw("false"), SQLDataType.BOOLEAN)), this, "Флаг включения домена в отчетность");
/** /**
* The column <code>idm_reconcile.domain.dns</code>. * The column <code>idm_reconcile.domain.active</code>. Флаг активности
* домена
*/ */
public final TableField<DomainRecord, String> DNS = createField(DSL.name("dns"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, Boolean> ACTIVE = createField(DSL.name("active"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, "Флаг активности домена");
/** /**
* The column <code>idm_reconcile.domain.email</code>. * The column <code>idm_reconcile.domain.created</code>. Дата и время
* создания домена (UNIX timestamp)
*/ */
public final TableField<DomainRecord, String> EMAIL = createField(DSL.name("email"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, Long> CREATED = createField(DSL.name("created"), SQLDataType.BIGINT.nullable(false), this, "Дата и время создания домена (UNIX timestamp)");
/** /**
* The column <code>idm_reconcile.domain.phone</code>. * The column <code>idm_reconcile.domain.modified</code>. Дата и время
* последнего изменения (UNIX timestamp)
*/ */
public final TableField<DomainRecord, String> PHONE = createField(DSL.name("phone"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, Long> MODIFIED = createField(DSL.name("modified"), SQLDataType.BIGINT, this, "Дата и время последнего изменения (UNIX timestamp)");
/** /**
* The column <code>idm_reconcile.domain.address</code>. * The column <code>idm_reconcile.domain.deleted</code>. Дата и время
* логического удаления (UNIX timestamp)
*/ */
public final TableField<DomainRecord, String> ADDRESS = createField(DSL.name("address"), SQLDataType.VARCHAR(1024), this, ""); public final TableField<DomainRecord, Long> DELETED = createField(DSL.name("deleted"), SQLDataType.BIGINT, this, "Дата и время логического удаления (UNIX timestamp)");
/**
* The column <code>idm_reconcile.domain.postal_address</code>.
*/
public final TableField<DomainRecord, String> POSTAL_ADDRESS = createField(DSL.name("postal_address"), SQLDataType.VARCHAR(1024), this, "");
/**
* The column <code>idm_reconcile.domain.address_id</code>.
*/
public final TableField<DomainRecord, String> ADDRESS_ID = createField(DSL.name("address_id"), SQLDataType.VARCHAR(255), this, "");
/** /**
* The column <code>idm_reconcile.domain.postal_address_id</code>. * The column <code>idm_reconcile.domain.postal_address_id</code>.
* Идентификатор почтового адреса
*/ */
public final TableField<DomainRecord, String> POSTAL_ADDRESS_ID = createField(DSL.name("postal_address_id"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, String> POSTAL_ADDRESS_ID = createField(DSL.name("postal_address_id"), SQLDataType.VARCHAR(36), this, "Идентификатор почтового адреса");
/** /**
* The column <code>idm_reconcile.domain.military_code</code>. * The column <code>idm_reconcile.domain.address_id</code>. Идентификатор
* основного адреса
*/ */
public final TableField<DomainRecord, String> MILITARY_CODE = createField(DSL.name("military_code"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, String> ADDRESS_ID = createField(DSL.name("address_id"), SQLDataType.VARCHAR(36), this, "Идентификатор основного адреса");
/** /**
* The column <code>idm_reconcile.domain.timezone</code>. * The column <code>idm_reconcile.domain.military_code</code>. Военный код
* организации
*/ */
public final TableField<DomainRecord, String> TIMEZONE = createField(DSL.name("timezone"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, String> MILITARY_CODE = createField(DSL.name("military_code"), SQLDataType.VARCHAR(128), this, "Военный код организации");
/** /**
* The column <code>idm_reconcile.domain.reports_enabled</code>. * The column <code>idm_reconcile.domain.time_zone</code>. Временная зона
* организации
*/ */
public final TableField<DomainRecord, Boolean> REPORTS_ENABLED = createField(DSL.name("reports_enabled"), SQLDataType.BOOLEAN, this, ""); public final TableField<DomainRecord, String> TIME_ZONE = createField(DSL.name("time_zone"), SQLDataType.VARCHAR(128), this, "Временная зона организации");
/** /**
* The column <code>idm_reconcile.domain.inn</code>. * The column <code>idm_reconcile.domain.subpoena_series_code</code>. Серия
* повестки (например, для юридических процедур)
*/ */
public final TableField<DomainRecord, String> INN = createField(DSL.name("inn"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, String> SUBPOENA_SERIES_CODE = createField(DSL.name("subpoena_series_code"), SQLDataType.VARCHAR(128), this, "Серия повестки (например, для юридических процедур)");
/** /**
* The column <code>idm_reconcile.domain.leg</code>. * The column <code>idm_reconcile.domain.parent</code>. Идентификатор
* родительской организации (домен)
*/ */
public final TableField<DomainRecord, String> LEG = createField(DSL.name("leg"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, String> PARENT = createField(DSL.name("parent"), SQLDataType.VARCHAR(36), this, "Идентификатор родительской организации (домен)");
/** /**
* The column <code>idm_reconcile.domain.ogrn</code>. * The column <code>idm_reconcile.domain.version</code>. Версия записи
*/ */
public final TableField<DomainRecord, String> OGRN = createField(DSL.name("ogrn"), SQLDataType.VARCHAR(255), this, ""); public final TableField<DomainRecord, Integer> VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, "Версия записи");
/**
* The column <code>idm_reconcile.domain.region</code>.
*/
public final TableField<DomainRecord, String> REGION = createField(DSL.name("region"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.epgu_id</code>.
*/
public final TableField<DomainRecord, String> EPGU_ID = createField(DSL.name("epgu_id"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.type</code>.
*/
public final TableField<DomainRecord, String> TYPE = createField(DSL.name("type"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.esia_employee_authorization</code>.
*/
public final TableField<DomainRecord, Boolean> ESIA_EMPLOYEE_AUTHORIZATION = createField(DSL.name("esia_employee_authorization"), SQLDataType.BOOLEAN, this, "");
/**
* The column <code>idm_reconcile.domain.default_s3_bucket</code>.
*/
public final TableField<DomainRecord, String> DEFAULT_S3_BUCKET = createField(DSL.name("default_s3_bucket"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.opf</code>.
*/
public final TableField<DomainRecord, String> OPF = createField(DSL.name("opf"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.kpp</code>.
*/
public final TableField<DomainRecord, String> KPP = createField(DSL.name("kpp"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.checking_account</code>.
*/
public final TableField<DomainRecord, String> CHECKING_ACCOUNT = createField(DSL.name("checking_account"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.bik</code>.
*/
public final TableField<DomainRecord, String> BIK = createField(DSL.name("bik"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.bank_name</code>.
*/
public final TableField<DomainRecord, String> BANK_NAME = createField(DSL.name("bank_name"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.bank_correspondent_account</code>.
*/
public final TableField<DomainRecord, String> BANK_CORRESPONDENT_ACCOUNT = createField(DSL.name("bank_correspondent_account"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.oktmo</code>.
*/
public final TableField<DomainRecord, String> OKTMO = createField(DSL.name("oktmo"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.okato</code>.
*/
public final TableField<DomainRecord, String> OKATO = createField(DSL.name("okato"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.gov_registration_date</code>.
*/
public final TableField<DomainRecord, String> GOV_REGISTRATION_DATE = createField(DSL.name("gov_registration_date"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.gov_organization_type</code>.
*/
public final TableField<DomainRecord, String> GOV_ORGANIZATION_TYPE = createField(DSL.name("gov_organization_type"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.alias_key</code>.
*/
public final TableField<DomainRecord, String> ALIAS_KEY = createField(DSL.name("alias_key"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.pass_key</code>.
*/
public final TableField<DomainRecord, String> PASS_KEY = createField(DSL.name("pass_key"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.certificate</code>.
*/
public final TableField<DomainRecord, String> CERTIFICATE = createField(DSL.name("certificate"), SQLDataType.VARCHAR(2048), this, "");
/**
* The column <code>idm_reconcile.domain.account_number_tofk</code>.
*/
public final TableField<DomainRecord, String> ACCOUNT_NUMBER_TOFK = createField(DSL.name("account_number_tofk"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.bik_tofk</code>.
*/
public final TableField<DomainRecord, String> BIK_TOFK = createField(DSL.name("bik_tofk"), SQLDataType.VARCHAR(255), this, "");
/**
* The column
* <code>idm_reconcile.domain.correspondent_bank_account_tofk</code>.
*/
public final TableField<DomainRecord, String> CORRESPONDENT_BANK_ACCOUNT_TOFK = createField(DSL.name("correspondent_bank_account_tofk"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.name_tofk</code>.
*/
public final TableField<DomainRecord, String> NAME_TOFK = createField(DSL.name("name_tofk"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.nsi_organization_id</code>.
*/
public final TableField<DomainRecord, String> NSI_ORGANIZATION_ID = createField(DSL.name("nsi_organization_id"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.doc_handle</code>.
*/
public final TableField<DomainRecord, String> DOC_HANDLE = createField(DSL.name("doc_handle"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.division_type</code>.
*/
public final TableField<DomainRecord, String> DIVISION_TYPE = createField(DSL.name("division_type"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.tns_department_id</code>.
*/
public final TableField<DomainRecord, String> TNS_DEPARTMENT_ID = createField(DSL.name("tns_department_id"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.enabled</code>.
*/
public final TableField<DomainRecord, Boolean> ENABLED = createField(DSL.name("enabled"), SQLDataType.BOOLEAN, this, "");
/**
* The column <code>idm_reconcile.domain.parent</code>.
*/
public final TableField<DomainRecord, String> PARENT = createField(DSL.name("parent"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.region_id</code>.
*/
public final TableField<DomainRecord, String> REGION_ID = createField(DSL.name("region_id"), SQLDataType.VARCHAR(255), this, "");
/**
* The column <code>idm_reconcile.domain.managed</code>.
*/
public final TableField<DomainRecord, String> MANAGED = createField(DSL.name("managed"), SQLDataType.VARCHAR(255), this, "");
private Domain(Name alias, Table<DomainRecord> aliased) { private Domain(Name alias, Table<DomainRecord> aliased) {
this(alias, aliased, (Field<?>[]) null, null); this(alias, aliased, (Field<?>[]) null, null);

View file

@ -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<PersonRecord> {
private static final long serialVersionUID = 1L;
/**
* The reference instance of <code>idm_reconcile.person</code>
*/
public static final Person PERSON = new Person();
/**
* The class holding records for this type
*/
@Override
public Class<PersonRecord> getRecordType() {
return PersonRecord.class;
}
/**
* The column <code>idm_reconcile.person.id</code>. Уникальный идентификатор
* персоны
*/
public final TableField<PersonRecord, String> ID = createField(DSL.name("id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор персоны");
/**
* The column <code>idm_reconcile.person.login</code>. Логин пользователя
*/
public final TableField<PersonRecord, String> LOGIN = createField(DSL.name("login"), SQLDataType.VARCHAR(128), this, "Логин пользователя");
/**
* The column <code>idm_reconcile.person.first_name</code>. Имя пользователя
*/
public final TableField<PersonRecord, String> FIRST_NAME = createField(DSL.name("first_name"), SQLDataType.VARCHAR(255), this, "Имя пользователя");
/**
* The column <code>idm_reconcile.person.last_name</code>. Фамилия
* пользователя
*/
public final TableField<PersonRecord, String> LAST_NAME = createField(DSL.name("last_name"), SQLDataType.VARCHAR(255), this, "Фамилия пользователя");
/**
* The column <code>idm_reconcile.person.middle_name</code>. Отчество
* пользователя
*/
public final TableField<PersonRecord, String> MIDDLE_NAME = createField(DSL.name("middle_name"), SQLDataType.VARCHAR(255), this, "Отчество пользователя");
/**
* The column <code>idm_reconcile.person.second_factor_enabled</code>. Флаг
* включения двухфакторной
* аутентификации
*/
public final TableField<PersonRecord, Boolean> SECOND_FACTOR_ENABLED = createField(DSL.name("second_factor_enabled"), SQLDataType.BOOLEAN, this, "Флаг включения двухфакторной\n аутентификации");
/**
* The column <code>idm_reconcile.person.active</code>. Флаг активности
* пользователя
*/
public final TableField<PersonRecord, Boolean> ACTIVE = createField(DSL.name("active"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, "Флаг активности пользователя");
/**
* The column <code>idm_reconcile.person.created</code>. Дата и время
* создания записи (UNIX
* timestamp)
*/
public final TableField<PersonRecord, Long> CREATED = createField(DSL.name("created"), SQLDataType.BIGINT.nullable(false), this, "Дата и время создания записи (UNIX\n timestamp)");
/**
* The column <code>idm_reconcile.person.modified</code>. Дата и время
* последнего изменения записи
* (UNIX timestamp)
*/
public final TableField<PersonRecord, Long> MODIFIED = createField(DSL.name("modified"), SQLDataType.BIGINT, this, "Дата и время последнего изменения записи\n (UNIX timestamp)");
/**
* The column <code>idm_reconcile.person.deleted</code>. Дата и время
* логического удаления записи
* (UNIX timestamp)
*/
public final TableField<PersonRecord, Long> DELETED = createField(DSL.name("deleted"), SQLDataType.BIGINT, this, "Дата и время логического удаления записи\n (UNIX timestamp)");
/**
* The column <code>idm_reconcile.person.blocked</code>. Дата и время
* логической блокировки записи
* (UNIX timestamp)
*/
public final TableField<PersonRecord, Long> BLOCKED = createField(DSL.name("blocked"), SQLDataType.BIGINT, this, "Дата и время логической блокировки записи\n (UNIX timestamp)");
/**
* The column <code>idm_reconcile.person.block_until</code>. Дата и время
* логического окончания блокировки записи
* (UNIX timestamp)
*/
public final TableField<PersonRecord, Long> BLOCK_UNTIL = createField(DSL.name("block_until"), SQLDataType.BIGINT, this, "Дата и время логического окончания блокировки записи\n (UNIX timestamp)");
/**
* The column <code>idm_reconcile.person.version</code>. Версия записи
*/
public final TableField<PersonRecord, Integer> VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, "Версия записи");
private Person(Name alias, Table<PersonRecord> aliased) {
this(alias, aliased, (Field<?>[]) null, null);
}
private Person(Name alias, Table<PersonRecord> aliased, Field<?>[] parameters, Condition where) {
super(alias, null, aliased, parameters, DSL.comment("Таблица персон (пользователей) в системе"), TableOptions.table(), where);
}
/**
* Create an aliased <code>idm_reconcile.person</code> table reference
*/
public Person(String alias) {
this(DSL.name(alias), PERSON);
}
/**
* Create an aliased <code>idm_reconcile.person</code> table reference
*/
public Person(Name alias) {
this(alias, PERSON);
}
/**
* Create a <code>idm_reconcile.person</code> table reference
*/
public Person() {
this(DSL.name("person"), null);
}
@Override
public Schema getSchema() {
return aliased() ? null : IdmReconcile.IDM_RECONCILE;
}
@Override
public UniqueKey<PersonRecord> 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<? extends Condition> 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<Boolean> 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));
}
}

View file

@ -4,7 +4,6 @@
package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables; package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables;
import java.sql.Timestamp;
import java.util.Collection; import java.util.Collection;
import org.jooq.Condition; 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" }) @SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Role extends TableImpl<RoleRecord> { public class Role extends TableImpl<RoleRecord> {
@ -51,66 +50,62 @@ public class Role extends TableImpl<RoleRecord> {
} }
/** /**
* The column <code>idm_reconcile.role.id</code>. * The column <code>idm_reconcile.role.id</code>. Уникальный идентификатор
* роли
*/ */
public final TableField<RoleRecord, String> ID = createField(DSL.name("id"), SQLDataType.VARCHAR(255).nullable(false), this, ""); public final TableField<RoleRecord, String> ID = createField(DSL.name("id"), SQLDataType.VARCHAR(36).nullable(false), this, "Уникальный идентификатор роли ");
/** /**
* The column <code>idm_reconcile.role.version</code>. * The column <code>idm_reconcile.role.name</code>. Наименование роли
*/ */
public final TableField<RoleRecord, Integer> VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, ""); public final TableField<RoleRecord, String> NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255).nullable(false), this, "Наименование роли");
/** /**
* The column <code>idm_reconcile.role.modified</code>. * The column <code>idm_reconcile.role.description</code>. Описание
* назначения роли
*/ */
public final TableField<RoleRecord, Timestamp> MODIFIED = createField(DSL.name("modified"), SQLDataType.TIMESTAMP(0), this, ""); public final TableField<RoleRecord, String> DESCRIPTION = createField(DSL.name("description"), SQLDataType.VARCHAR(1024), this, "Описание назначения роли");
/** /**
* The column <code>idm_reconcile.role.schema</code>. * The column <code>idm_reconcile.role.display_name</code>. Отображаемое имя
* роли
*/ */
public final TableField<RoleRecord, String> SCHEMA = createField(DSL.name("schema"), SQLDataType.VARCHAR(255).nullable(false), this, ""); public final TableField<RoleRecord, String> DISPLAY_NAME = createField(DSL.name("display_name"), SQLDataType.VARCHAR(255), this, "Отображаемое имя роли");
/** /**
* The column <code>idm_reconcile.role.name</code>. * The column <code>idm_reconcile.role.active</code>. Флаг активности роли
*/ */
public final TableField<RoleRecord, String> NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255), this, ""); public final TableField<RoleRecord, Boolean> ACTIVE = createField(DSL.name("active"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, "Флаг активности роли");
/** /**
* The column <code>idm_reconcile.role.shortname</code>. * The column <code>idm_reconcile.role.created</code>. Дата и время создания
* роли (UNIX timestamp)
*/ */
public final TableField<RoleRecord, String> SHORTNAME = createField(DSL.name("shortname"), SQLDataType.VARCHAR(255), this, ""); public final TableField<RoleRecord, Long> CREATED = createField(DSL.name("created"), SQLDataType.BIGINT.nullable(false), this, "Дата и время создания роли (UNIX timestamp)");
/** /**
* The column <code>idm_reconcile.role.display_name</code>. * The column <code>idm_reconcile.role.modified</code>. Дата и время
* последнего изменения роли (UNIX timestamp)
*/ */
public final TableField<RoleRecord, String> DISPLAY_NAME = createField(DSL.name("display_name"), SQLDataType.VARCHAR(255), this, ""); public final TableField<RoleRecord, Long> MODIFIED = createField(DSL.name("modified"), SQLDataType.BIGINT, this, "Дата и время последнего изменения роли (UNIX timestamp)");
/** /**
* The column <code>idm_reconcile.role.sessions_limit</code>. * The column <code>idm_reconcile.role.deleted</code>. Дата и время
* логического удаления роли (UNIX timestamp)
*/ */
public final TableField<RoleRecord, Integer> SESSIONS_LIMIT = createField(DSL.name("sessions_limit"), SQLDataType.INTEGER, this, ""); public final TableField<RoleRecord, Long> DELETED = createField(DSL.name("deleted"), SQLDataType.BIGINT, this, "Дата и время логического удаления роли (UNIX timestamp)");
/** /**
* The column <code>idm_reconcile.role.ervu_role</code>. * The column <code>idm_reconcile.role.version</code>. Версия записи роли
*/ */
public final TableField<RoleRecord, Boolean> ERVU_ROLE = createField(DSL.name("ervu_role"), SQLDataType.BOOLEAN, this, ""); public final TableField<RoleRecord, Integer> VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, "Версия записи роли");
/**
* The column <code>idm_reconcile.role.imported</code>.
*/
public final TableField<RoleRecord, Integer> IMPORTED = createField(DSL.name("imported"), SQLDataType.INTEGER, this, "");
/**
* The column <code>idm_reconcile.role.description</code>.
*/
public final TableField<RoleRecord, String> DESCRIPTION = createField(DSL.name("description"), SQLDataType.CLOB, this, "");
private Role(Name alias, Table<RoleRecord> aliased) { private Role(Name alias, Table<RoleRecord> aliased) {
this(alias, aliased, (Field<?>[]) null, null); this(alias, aliased, (Field<?>[]) null, null);
} }
private Role(Name alias, Table<RoleRecord> aliased, Field<?>[] parameters, Condition where) { private Role(Name alias, Table<RoleRecord> 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);
} }
/** /**

View file

@ -4,8 +4,6 @@
package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records; package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records;
import java.sql.Timestamp;
import org.jooq.Record1; import org.jooq.Record1;
import org.jooq.impl.UpdatableRecordImpl; 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" }) @SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class AccountRecord extends UpdatableRecordImpl<AccountRecord> { public class AccountRecord extends UpdatableRecordImpl<AccountRecord> {
@ -21,170 +19,210 @@ public class AccountRecord extends UpdatableRecordImpl<AccountRecord> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* Setter for <code>idm_reconcile.account.id</code>. * Setter for <code>idm_reconcile.account.id</code>. Уникальный
* идентификатор аккаунта
*/ */
public void setId(String value) { public void setId(String value) {
set(0, value); set(0, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.id</code>. * Getter for <code>idm_reconcile.account.id</code>. Уникальный
* идентификатор аккаунта
*/ */
public String getId() { public String getId() {
return (String) get(0); return (String) get(0);
} }
/** /**
* Setter for <code>idm_reconcile.account.version</code>. * Setter for <code>idm_reconcile.account.active</code>. Флаг активности
* аккаунта
*/ */
public void setVersion(Integer value) { public void setActive(Boolean value) {
set(1, value); set(1, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.version</code>. * Getter for <code>idm_reconcile.account.active</code>. Флаг активности
* аккаунта
*/ */
public Integer getVersion() { public Boolean getActive() {
return (Integer) get(1); return (Boolean) get(1);
} }
/** /**
* Setter for <code>idm_reconcile.account.modified</code>. * Setter for <code>idm_reconcile.account.start</code>. Дата и время
* активации аккаунта (UNIX
* timestamp)
*/ */
public void setModified(Timestamp value) { public void setStart(Long value) {
set(2, value); set(2, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.modified</code>. * Getter for <code>idm_reconcile.account.start</code>. Дата и время
* активации аккаунта (UNIX
* timestamp)
*/ */
public Timestamp getModified() { public Long getStart() {
return (Timestamp) get(2); return (Long) get(2);
} }
/** /**
* Setter for <code>idm_reconcile.account.schema</code>. * Setter for <code>idm_reconcile.account.finish</code>. Дата и время
* деактивации аккаунта (UNIX
* timestamp)
*/ */
public void setSchema(String value) { public void setFinish(Long value) {
set(3, value); set(3, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.schema</code>. * Getter for <code>idm_reconcile.account.finish</code>. Дата и время
* деактивации аккаунта (UNIX
* timestamp)
*/ */
public String getSchema() { public Long getFinish() {
return (String) get(3); return (Long) get(3);
} }
/** /**
* Setter for <code>idm_reconcile.account.start</code>. * Setter for <code>idm_reconcile.account.created</code>. Дата и время
* создания аккаунта (UNIX
* timestamp)
*/ */
public void setStart(String value) { public void setCreated(Long value) {
set(4, value); set(4, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.start</code>. * Getter for <code>idm_reconcile.account.created</code>. Дата и время
* создания аккаунта (UNIX
* timestamp)
*/ */
public String getStart() { public Long getCreated() {
return (String) get(4); return (Long) get(4);
} }
/** /**
* Setter for <code>idm_reconcile.account.finish</code>. * Setter for <code>idm_reconcile.account.modified</code>. Дата и время
* последнего изменения
* аккаунта (UNIX timestamp)
*/ */
public void setFinish(String value) { public void setModified(Long value) {
set(5, value); set(5, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.finish</code>. * Getter for <code>idm_reconcile.account.modified</code>. Дата и время
* последнего изменения
* аккаунта (UNIX timestamp)
*/ */
public String getFinish() { public Long getModified() {
return (String) get(5); return (Long) get(5);
} }
/** /**
* Setter for <code>idm_reconcile.account.enabled</code>. * Setter for <code>idm_reconcile.account.appointment</code>. Должность,
* назначенная аккаунту
*/ */
public void setEnabled(Boolean value) { public void setAppointment(String value) {
set(6, value); set(6, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.enabled</code>. * Getter for <code>idm_reconcile.account.appointment</code>. Должность,
* назначенная аккаунту
*/ */
public Boolean getEnabled() { public String getAppointment() {
return (Boolean) get(6); return (String) get(6);
} }
/** /**
* Setter for <code>idm_reconcile.account.position</code>. * Setter for <code>idm_reconcile.account.deleted</code>. Дата и время
* логического удаления аккаунта
* (UNIX timestamp)
*/ */
public void setPosition(String value) { public void setDeleted(Long value) {
set(7, value); set(7, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.position</code>. * Getter for <code>idm_reconcile.account.deleted</code>. Дата и время
* логического удаления аккаунта
* (UNIX timestamp)
*/ */
public String getPosition() { public Long getDeleted() {
return (String) get(7); return (Long) get(7);
} }
/** /**
* Setter for <code>idm_reconcile.account.fio</code>. * Setter for <code>idm_reconcile.account.session_limit</code>. Максимально
* допустимое количество
* сессий
*/ */
public void setFio(String value) { public void setSessionLimit(Short value) {
set(8, value); set(8, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.fio</code>. * Getter for <code>idm_reconcile.account.session_limit</code>. Максимально
* допустимое количество
* сессий
*/ */
public String getFio() { public Short getSessionLimit() {
return (String) get(8); return (Short) get(8);
} }
/** /**
* Setter for <code>idm_reconcile.account.work_mail</code>. * Setter for <code>idm_reconcile.account.version</code>. Версия записи
* аккаунта
*/ */
public void setWorkMail(String value) { public void setVersion(Integer value) {
set(9, value); set(9, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.work_mail</code>. * Getter for <code>idm_reconcile.account.version</code>. Версия записи
* аккаунта
*/ */
public String getWorkMail() { public Integer getVersion() {
return (String) get(9); return (Integer) get(9);
} }
/** /**
* Setter for <code>idm_reconcile.account.esia_account</code>. * Setter for <code>idm_reconcile.account.domain_id</code>. Идентификатор
* домена, связанного с
* аккаунтом
*/ */
public void setEsiaAccount(Boolean value) { public void setDomainId(String value) {
set(10, value); set(10, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.esia_account</code>. * Getter for <code>idm_reconcile.account.domain_id</code>. Идентификатор
* домена, связанного с
* аккаунтом
*/ */
public Boolean getEsiaAccount() { public String getDomainId() {
return (Boolean) get(10); return (String) get(10);
} }
/** /**
* Setter for <code>idm_reconcile.account.domain_id</code>. * Setter for <code>idm_reconcile.account.person_id</code>. Идентификатор
* персоны, связанной с
* аккаунтом
*/ */
public void setDomainId(String value) { public void setPersonId(String value) {
set(11, value); set(11, value);
} }
/** /**
* Getter for <code>idm_reconcile.account.domain_id</code>. * Getter for <code>idm_reconcile.account.person_id</code>. Идентификатор
* персоны, связанной с
* аккаунтом
*/ */
public String getDomainId() { public String getPersonId() {
return (String) get(11); return (String) get(11);
} }
@ -211,21 +249,21 @@ public class AccountRecord extends UpdatableRecordImpl<AccountRecord> {
/** /**
* Create a detached, initialised AccountRecord * 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); super(Account.ACCOUNT);
setId(id); setId(id);
setVersion(version); setActive(active);
setModified(modified);
setSchema(schema);
setStart(start); setStart(start);
setFinish(finish); setFinish(finish);
setEnabled(enabled); setCreated(created);
setPosition(position); setModified(modified);
setFio(fio); setAppointment(appointment);
setWorkMail(workMail); setDeleted(deleted);
setEsiaAccount(esiaAccount); setSessionLimit(sessionLimit);
setVersion(version);
setDomainId(domainId); setDomainId(domainId);
setPersonId(personId);
resetChangedOnNotNull(); resetChangedOnNotNull();
} }
} }

View file

@ -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" }) @SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class AccountRoleRecord extends UpdatableRecordImpl<AccountRoleRecord> { public class AccountRoleRecord extends UpdatableRecordImpl<AccountRoleRecord> {
@ -19,33 +19,51 @@ public class AccountRoleRecord extends UpdatableRecordImpl<AccountRoleRecord> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* Setter for <code>idm_reconcile.account_role.account_id</code>. * Setter for <code>idm_reconcile.account_role.account_id</code>. Уникальный
* идентификатор аккаунта
*/ */
public void setAccountId(String value) { public void setAccountId(String value) {
set(0, value); set(0, value);
} }
/** /**
* Getter for <code>idm_reconcile.account_role.account_id</code>. * Getter for <code>idm_reconcile.account_role.account_id</code>. Уникальный
* идентификатор аккаунта
*/ */
public String getAccountId() { public String getAccountId() {
return (String) get(0); return (String) get(0);
} }
/** /**
* Setter for <code>idm_reconcile.account_role.role_id</code>. * Setter for <code>idm_reconcile.account_role.role_id</code>. Уникальный
* идентификатор роли
*/ */
public void setRoleId(String value) { public void setRoleId(String value) {
set(1, value); set(1, value);
} }
/** /**
* Getter for <code>idm_reconcile.account_role.role_id</code>. * Getter for <code>idm_reconcile.account_role.role_id</code>. Уникальный
* идентификатор роли
*/ */
public String getRoleId() { public String getRoleId() {
return (String) get(1); return (String) get(1);
} }
/**
* Setter for <code>idm_reconcile.account_role.finish</code>.
*/
public void setFinish(Long value) {
set(2, value);
}
/**
* Getter for <code>idm_reconcile.account_role.finish</code>.
*/
public Long getFinish() {
return (Long) get(2);
}
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Primary key information // Primary key information
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
@ -69,11 +87,12 @@ public class AccountRoleRecord extends UpdatableRecordImpl<AccountRoleRecord> {
/** /**
* Create a detached, initialised AccountRoleRecord * Create a detached, initialised AccountRoleRecord
*/ */
public AccountRoleRecord(String accountId, String roleId) { public AccountRoleRecord(String accountId, String roleId, Long finish) {
super(AccountRole.ACCOUNT_ROLE); super(AccountRole.ACCOUNT_ROLE);
setAccountId(accountId); setAccountId(accountId);
setRoleId(roleId); setRoleId(roleId);
setFinish(finish);
resetChangedOnNotNull(); resetChangedOnNotNull();
} }
} }

View file

@ -4,8 +4,6 @@
package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records; package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records;
import java.sql.Timestamp;
import org.jooq.Record1; import org.jooq.Record1;
import org.jooq.impl.UpdatableRecordImpl; import org.jooq.impl.UpdatableRecordImpl;
@ -21,705 +19,289 @@ public class DomainRecord extends UpdatableRecordImpl<DomainRecord> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* Setter for <code>idm_reconcile.domain.id</code>. * Setter for <code>idm_reconcile.domain.id</code>. Уникальный идентификатор
* домена
*/ */
public void setId(String value) { public void setId(String value) {
set(0, value); set(0, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.id</code>. * Getter for <code>idm_reconcile.domain.id</code>. Уникальный идентификатор
* домена
*/ */
public String getId() { public String getId() {
return (String) get(0); return (String) get(0);
} }
/** /**
* Setter for <code>idm_reconcile.domain.version</code>. * Setter for <code>idm_reconcile.domain.type</code>. Идентификатор типа
* организации
*/ */
public void setVersion(Integer value) { public void setType(String value) {
set(1, value); set(1, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.version</code>. * Getter for <code>idm_reconcile.domain.type</code>. Идентификатор типа
* организации
*/ */
public Integer getVersion() { public String getType() {
return (Integer) get(1); return (String) get(1);
} }
/** /**
* Setter for <code>idm_reconcile.domain.modified</code>. * Setter for <code>idm_reconcile.domain.region_code</code>. Код региона, к
* которому относится домен
*/ */
public void setModified(Timestamp value) { public void setRegionCode(String value) {
set(2, value); set(2, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.modified</code>. * Getter for <code>idm_reconcile.domain.region_code</code>. Код региона, к
* которому относится домен
*/ */
public Timestamp getModified() { public String getRegionCode() {
return (Timestamp) get(2); return (String) get(2);
} }
/** /**
* Setter for <code>idm_reconcile.domain.schema</code>. * Setter for <code>idm_reconcile.domain.name</code>. Краткое наименование
* домена
*/ */
public void setSchema(String value) { public void setName(String value) {
set(3, value); set(3, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.schema</code>. * Getter for <code>idm_reconcile.domain.name</code>. Краткое наименование
* домена
*/ */
public String getSchema() { public String getName() {
return (String) get(3); return (String) get(3);
} }
/** /**
* Setter for <code>idm_reconcile.domain.name</code>. * Setter for <code>idm_reconcile.domain.full_name</code>. Полное
* наименование домена
*/ */
public void setName(String value) { public void setFullName(String value) {
set(4, value); set(4, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.name</code>. * Getter for <code>idm_reconcile.domain.full_name</code>. Полное
* наименование домена
*/ */
public String getName() { public String getFullName() {
return (String) get(4); return (String) get(4);
} }
/** /**
* Setter for <code>idm_reconcile.domain.shortname</code>. * Setter for <code>idm_reconcile.domain.short_name</code>. Сокращенное
* наименование домена
*/ */
public void setShortname(String value) { public void setShortName(String value) {
set(5, value); set(5, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.shortname</code>. * Getter for <code>idm_reconcile.domain.short_name</code>. Сокращенное
* наименование домена
*/ */
public String getShortname() { public String getShortName() {
return (String) get(5); return (String) get(5);
} }
/** /**
* Setter for <code>idm_reconcile.domain.fullname</code>. * Setter for <code>idm_reconcile.domain.reports_enabled</code>. Флаг
* включения домена в отчетность
*/ */
public void setFullname(String value) { public void setReportsEnabled(Boolean value) {
set(6, value); set(6, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.fullname</code>. * Getter for <code>idm_reconcile.domain.reports_enabled</code>. Флаг
* включения домена в отчетность
*/ */
public String getFullname() { public Boolean getReportsEnabled() {
return (String) get(6); return (Boolean) get(6);
} }
/** /**
* Setter for <code>idm_reconcile.domain.dns</code>. * Setter for <code>idm_reconcile.domain.active</code>. Флаг активности
* домена
*/ */
public void setDns(String value) { public void setActive(Boolean value) {
set(7, value); set(7, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.dns</code>. * Getter for <code>idm_reconcile.domain.active</code>. Флаг активности
* домена
*/ */
public String getDns() { public Boolean getActive() {
return (String) get(7); return (Boolean) get(7);
} }
/** /**
* Setter for <code>idm_reconcile.domain.email</code>. * Setter for <code>idm_reconcile.domain.created</code>. Дата и время
* создания домена (UNIX timestamp)
*/ */
public void setEmail(String value) { public void setCreated(Long value) {
set(8, value); set(8, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.email</code>. * Getter for <code>idm_reconcile.domain.created</code>. Дата и время
* создания домена (UNIX timestamp)
*/ */
public String getEmail() { public Long getCreated() {
return (String) get(8); return (Long) get(8);
} }
/** /**
* Setter for <code>idm_reconcile.domain.phone</code>. * Setter for <code>idm_reconcile.domain.modified</code>. Дата и время
* последнего изменения (UNIX timestamp)
*/ */
public void setPhone(String value) { public void setModified(Long value) {
set(9, value); set(9, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.phone</code>. * Getter for <code>idm_reconcile.domain.modified</code>. Дата и время
* последнего изменения (UNIX timestamp)
*/ */
public String getPhone() { public Long getModified() {
return (String) get(9); return (Long) get(9);
} }
/** /**
* Setter for <code>idm_reconcile.domain.address</code>. * Setter for <code>idm_reconcile.domain.deleted</code>. Дата и время
* логического удаления (UNIX timestamp)
*/ */
public void setAddress(String value) { public void setDeleted(Long value) {
set(10, value); set(10, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.address</code>. * Getter for <code>idm_reconcile.domain.deleted</code>. Дата и время
* логического удаления (UNIX timestamp)
*/ */
public String getAddress() { public Long getDeleted() {
return (String) get(10); return (Long) get(10);
} }
/** /**
* Setter for <code>idm_reconcile.domain.postal_address</code>. * Setter for <code>idm_reconcile.domain.postal_address_id</code>.
* Идентификатор почтового адреса
*/ */
public void setPostalAddress(String value) { public void setPostalAddressId(String value) {
set(11, value); set(11, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.postal_address</code>. * Getter for <code>idm_reconcile.domain.postal_address_id</code>.
* Идентификатор почтового адреса
*/ */
public String getPostalAddress() { public String getPostalAddressId() {
return (String) get(11); return (String) get(11);
} }
/** /**
* Setter for <code>idm_reconcile.domain.address_id</code>. * Setter for <code>idm_reconcile.domain.address_id</code>. Идентификатор
* основного адреса
*/ */
public void setAddressId(String value) { public void setAddressId(String value) {
set(12, value); set(12, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.address_id</code>. * Getter for <code>idm_reconcile.domain.address_id</code>. Идентификатор
* основного адреса
*/ */
public String getAddressId() { public String getAddressId() {
return (String) get(12); return (String) get(12);
} }
/** /**
* Setter for <code>idm_reconcile.domain.postal_address_id</code>. * Setter for <code>idm_reconcile.domain.military_code</code>. Военный код
* организации
*/ */
public void setPostalAddressId(String value) { public void setMilitaryCode(String value) {
set(13, value); set(13, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.postal_address_id</code>. * Getter for <code>idm_reconcile.domain.military_code</code>. Военный код
* организации
*/ */
public String getPostalAddressId() { public String getMilitaryCode() {
return (String) get(13); return (String) get(13);
} }
/** /**
* Setter for <code>idm_reconcile.domain.military_code</code>. * Setter for <code>idm_reconcile.domain.time_zone</code>. Временная зона
* организации
*/ */
public void setMilitaryCode(String value) { public void setTimeZone(String value) {
set(14, value); set(14, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.military_code</code>. * Getter for <code>idm_reconcile.domain.time_zone</code>. Временная зона
* организации
*/ */
public String getMilitaryCode() { public String getTimeZone() {
return (String) get(14); return (String) get(14);
} }
/** /**
* Setter for <code>idm_reconcile.domain.timezone</code>. * Setter for <code>idm_reconcile.domain.subpoena_series_code</code>. Серия
* повестки (например, для юридических процедур)
*/ */
public void setTimezone(String value) { public void setSubpoenaSeriesCode(String value) {
set(15, value); set(15, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.timezone</code>. * Getter for <code>idm_reconcile.domain.subpoena_series_code</code>. Серия
* повестки (например, для юридических процедур)
*/ */
public String getTimezone() { public String getSubpoenaSeriesCode() {
return (String) get(15); return (String) get(15);
} }
/** /**
* Setter for <code>idm_reconcile.domain.reports_enabled</code>. * Setter for <code>idm_reconcile.domain.parent</code>. Идентификатор
* родительской организации (домен)
*/ */
public void setReportsEnabled(Boolean value) { public void setParent(String value) {
set(16, value); set(16, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.reports_enabled</code>. * Getter for <code>idm_reconcile.domain.parent</code>. Идентификатор
* родительской организации (домен)
*/ */
public Boolean getReportsEnabled() { public String getParent() {
return (Boolean) get(16); return (String) get(16);
} }
/** /**
* Setter for <code>idm_reconcile.domain.inn</code>. * Setter for <code>idm_reconcile.domain.version</code>. Версия записи
*/ */
public void setInn(String value) { public void setVersion(Integer value) {
set(17, value); set(17, value);
} }
/** /**
* Getter for <code>idm_reconcile.domain.inn</code>. * Getter for <code>idm_reconcile.domain.version</code>. Версия записи
*/ */
public String getInn() { public Integer getVersion() {
return (String) get(17); return (Integer) get(17);
}
/**
* Setter for <code>idm_reconcile.domain.leg</code>.
*/
public void setLeg(String value) {
set(18, value);
}
/**
* Getter for <code>idm_reconcile.domain.leg</code>.
*/
public String getLeg() {
return (String) get(18);
}
/**
* Setter for <code>idm_reconcile.domain.ogrn</code>.
*/
public void setOgrn(String value) {
set(19, value);
}
/**
* Getter for <code>idm_reconcile.domain.ogrn</code>.
*/
public String getOgrn() {
return (String) get(19);
}
/**
* Setter for <code>idm_reconcile.domain.region</code>.
*/
public void setRegion(String value) {
set(20, value);
}
/**
* Getter for <code>idm_reconcile.domain.region</code>.
*/
public String getRegion() {
return (String) get(20);
}
/**
* Setter for <code>idm_reconcile.domain.epgu_id</code>.
*/
public void setEpguId(String value) {
set(21, value);
}
/**
* Getter for <code>idm_reconcile.domain.epgu_id</code>.
*/
public String getEpguId() {
return (String) get(21);
}
/**
* Setter for <code>idm_reconcile.domain.type</code>.
*/
public void setType(String value) {
set(22, value);
}
/**
* Getter for <code>idm_reconcile.domain.type</code>.
*/
public String getType() {
return (String) get(22);
}
/**
* Setter for <code>idm_reconcile.domain.esia_employee_authorization</code>.
*/
public void setEsiaEmployeeAuthorization(Boolean value) {
set(23, value);
}
/**
* Getter for <code>idm_reconcile.domain.esia_employee_authorization</code>.
*/
public Boolean getEsiaEmployeeAuthorization() {
return (Boolean) get(23);
}
/**
* Setter for <code>idm_reconcile.domain.default_s3_bucket</code>.
*/
public void setDefaultS3Bucket(String value) {
set(24, value);
}
/**
* Getter for <code>idm_reconcile.domain.default_s3_bucket</code>.
*/
public String getDefaultS3Bucket() {
return (String) get(24);
}
/**
* Setter for <code>idm_reconcile.domain.opf</code>.
*/
public void setOpf(String value) {
set(25, value);
}
/**
* Getter for <code>idm_reconcile.domain.opf</code>.
*/
public String getOpf() {
return (String) get(25);
}
/**
* Setter for <code>idm_reconcile.domain.kpp</code>.
*/
public void setKpp(String value) {
set(26, value);
}
/**
* Getter for <code>idm_reconcile.domain.kpp</code>.
*/
public String getKpp() {
return (String) get(26);
}
/**
* Setter for <code>idm_reconcile.domain.checking_account</code>.
*/
public void setCheckingAccount(String value) {
set(27, value);
}
/**
* Getter for <code>idm_reconcile.domain.checking_account</code>.
*/
public String getCheckingAccount() {
return (String) get(27);
}
/**
* Setter for <code>idm_reconcile.domain.bik</code>.
*/
public void setBik(String value) {
set(28, value);
}
/**
* Getter for <code>idm_reconcile.domain.bik</code>.
*/
public String getBik() {
return (String) get(28);
}
/**
* Setter for <code>idm_reconcile.domain.bank_name</code>.
*/
public void setBankName(String value) {
set(29, value);
}
/**
* Getter for <code>idm_reconcile.domain.bank_name</code>.
*/
public String getBankName() {
return (String) get(29);
}
/**
* Setter for <code>idm_reconcile.domain.bank_correspondent_account</code>.
*/
public void setBankCorrespondentAccount(String value) {
set(30, value);
}
/**
* Getter for <code>idm_reconcile.domain.bank_correspondent_account</code>.
*/
public String getBankCorrespondentAccount() {
return (String) get(30);
}
/**
* Setter for <code>idm_reconcile.domain.oktmo</code>.
*/
public void setOktmo(String value) {
set(31, value);
}
/**
* Getter for <code>idm_reconcile.domain.oktmo</code>.
*/
public String getOktmo() {
return (String) get(31);
}
/**
* Setter for <code>idm_reconcile.domain.okato</code>.
*/
public void setOkato(String value) {
set(32, value);
}
/**
* Getter for <code>idm_reconcile.domain.okato</code>.
*/
public String getOkato() {
return (String) get(32);
}
/**
* Setter for <code>idm_reconcile.domain.gov_registration_date</code>.
*/
public void setGovRegistrationDate(String value) {
set(33, value);
}
/**
* Getter for <code>idm_reconcile.domain.gov_registration_date</code>.
*/
public String getGovRegistrationDate() {
return (String) get(33);
}
/**
* Setter for <code>idm_reconcile.domain.gov_organization_type</code>.
*/
public void setGovOrganizationType(String value) {
set(34, value);
}
/**
* Getter for <code>idm_reconcile.domain.gov_organization_type</code>.
*/
public String getGovOrganizationType() {
return (String) get(34);
}
/**
* Setter for <code>idm_reconcile.domain.alias_key</code>.
*/
public void setAliasKey(String value) {
set(35, value);
}
/**
* Getter for <code>idm_reconcile.domain.alias_key</code>.
*/
public String getAliasKey() {
return (String) get(35);
}
/**
* Setter for <code>idm_reconcile.domain.pass_key</code>.
*/
public void setPassKey(String value) {
set(36, value);
}
/**
* Getter for <code>idm_reconcile.domain.pass_key</code>.
*/
public String getPassKey() {
return (String) get(36);
}
/**
* Setter for <code>idm_reconcile.domain.certificate</code>.
*/
public void setCertificate(String value) {
set(37, value);
}
/**
* Getter for <code>idm_reconcile.domain.certificate</code>.
*/
public String getCertificate() {
return (String) get(37);
}
/**
* Setter for <code>idm_reconcile.domain.account_number_tofk</code>.
*/
public void setAccountNumberTofk(String value) {
set(38, value);
}
/**
* Getter for <code>idm_reconcile.domain.account_number_tofk</code>.
*/
public String getAccountNumberTofk() {
return (String) get(38);
}
/**
* Setter for <code>idm_reconcile.domain.bik_tofk</code>.
*/
public void setBikTofk(String value) {
set(39, value);
}
/**
* Getter for <code>idm_reconcile.domain.bik_tofk</code>.
*/
public String getBikTofk() {
return (String) get(39);
}
/**
* Setter for
* <code>idm_reconcile.domain.correspondent_bank_account_tofk</code>.
*/
public void setCorrespondentBankAccountTofk(String value) {
set(40, value);
}
/**
* Getter for
* <code>idm_reconcile.domain.correspondent_bank_account_tofk</code>.
*/
public String getCorrespondentBankAccountTofk() {
return (String) get(40);
}
/**
* Setter for <code>idm_reconcile.domain.name_tofk</code>.
*/
public void setNameTofk(String value) {
set(41, value);
}
/**
* Getter for <code>idm_reconcile.domain.name_tofk</code>.
*/
public String getNameTofk() {
return (String) get(41);
}
/**
* Setter for <code>idm_reconcile.domain.nsi_organization_id</code>.
*/
public void setNsiOrganizationId(String value) {
set(42, value);
}
/**
* Getter for <code>idm_reconcile.domain.nsi_organization_id</code>.
*/
public String getNsiOrganizationId() {
return (String) get(42);
}
/**
* Setter for <code>idm_reconcile.domain.doc_handle</code>.
*/
public void setDocHandle(String value) {
set(43, value);
}
/**
* Getter for <code>idm_reconcile.domain.doc_handle</code>.
*/
public String getDocHandle() {
return (String) get(43);
}
/**
* Setter for <code>idm_reconcile.domain.division_type</code>.
*/
public void setDivisionType(String value) {
set(44, value);
}
/**
* Getter for <code>idm_reconcile.domain.division_type</code>.
*/
public String getDivisionType() {
return (String) get(44);
}
/**
* Setter for <code>idm_reconcile.domain.tns_department_id</code>.
*/
public void setTnsDepartmentId(String value) {
set(45, value);
}
/**
* Getter for <code>idm_reconcile.domain.tns_department_id</code>.
*/
public String getTnsDepartmentId() {
return (String) get(45);
}
/**
* Setter for <code>idm_reconcile.domain.enabled</code>.
*/
public void setEnabled(Boolean value) {
set(46, value);
}
/**
* Getter for <code>idm_reconcile.domain.enabled</code>.
*/
public Boolean getEnabled() {
return (Boolean) get(46);
}
/**
* Setter for <code>idm_reconcile.domain.parent</code>.
*/
public void setParent(String value) {
set(47, value);
}
/**
* Getter for <code>idm_reconcile.domain.parent</code>.
*/
public String getParent() {
return (String) get(47);
}
/**
* Setter for <code>idm_reconcile.domain.region_id</code>.
*/
public void setRegionId(String value) {
set(48, value);
}
/**
* Getter for <code>idm_reconcile.domain.region_id</code>.
*/
public String getRegionId() {
return (String) get(48);
}
/**
* Setter for <code>idm_reconcile.domain.managed</code>.
*/
public void setManaged(String value) {
set(49, value);
}
/**
* Getter for <code>idm_reconcile.domain.managed</code>.
*/
public String getManaged() {
return (String) get(49);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
@ -745,59 +327,27 @@ public class DomainRecord extends UpdatableRecordImpl<DomainRecord> {
/** /**
* Create a detached, initialised DomainRecord * 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); super(Domain.DOMAIN);
setId(id); 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); setType(type);
setEsiaEmployeeAuthorization(esiaEmployeeAuthorization); setRegionCode(regionCode);
setDefaultS3Bucket(defaultS3Bucket); setName(name);
setOpf(opf); setFullName(fullName);
setKpp(kpp); setShortName(shortName);
setCheckingAccount(checkingAccount); setReportsEnabled(reportsEnabled);
setBik(bik); setActive(active);
setBankName(bankName); setCreated(created);
setBankCorrespondentAccount(bankCorrespondentAccount); setModified(modified);
setOktmo(oktmo); setDeleted(deleted);
setOkato(okato); setPostalAddressId(postalAddressId);
setGovRegistrationDate(govRegistrationDate); setAddressId(addressId);
setGovOrganizationType(govOrganizationType); setMilitaryCode(militaryCode);
setAliasKey(aliasKey); setTimeZone(timeZone);
setPassKey(passKey); setSubpoenaSeriesCode(subpoenaSeriesCode);
setCertificate(certificate);
setAccountNumberTofk(accountNumberTofk);
setBikTofk(bikTofk);
setCorrespondentBankAccountTofk(correspondentBankAccountTofk);
setNameTofk(nameTofk);
setNsiOrganizationId(nsiOrganizationId);
setDocHandle(docHandle);
setDivisionType(divisionType);
setTnsDepartmentId(tnsDepartmentId);
setEnabled(enabled);
setParent(parent); setParent(parent);
setRegionId(regionId); setVersion(version);
setManaged(managed);
resetChangedOnNotNull(); resetChangedOnNotNull();
} }
} }

View file

@ -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<PersonRecord> {
private static final long serialVersionUID = 1L;
/**
* Setter for <code>idm_reconcile.person.id</code>. Уникальный идентификатор
* персоны
*/
public void setId(String value) {
set(0, value);
}
/**
* Getter for <code>idm_reconcile.person.id</code>. Уникальный идентификатор
* персоны
*/
public String getId() {
return (String) get(0);
}
/**
* Setter for <code>idm_reconcile.person.login</code>. Логин пользователя
*/
public void setLogin(String value) {
set(1, value);
}
/**
* Getter for <code>idm_reconcile.person.login</code>. Логин пользователя
*/
public String getLogin() {
return (String) get(1);
}
/**
* Setter for <code>idm_reconcile.person.first_name</code>. Имя пользователя
*/
public void setFirstName(String value) {
set(2, value);
}
/**
* Getter for <code>idm_reconcile.person.first_name</code>. Имя пользователя
*/
public String getFirstName() {
return (String) get(2);
}
/**
* Setter for <code>idm_reconcile.person.last_name</code>. Фамилия
* пользователя
*/
public void setLastName(String value) {
set(3, value);
}
/**
* Getter for <code>idm_reconcile.person.last_name</code>. Фамилия
* пользователя
*/
public String getLastName() {
return (String) get(3);
}
/**
* Setter for <code>idm_reconcile.person.middle_name</code>. Отчество
* пользователя
*/
public void setMiddleName(String value) {
set(4, value);
}
/**
* Getter for <code>idm_reconcile.person.middle_name</code>. Отчество
* пользователя
*/
public String getMiddleName() {
return (String) get(4);
}
/**
* Setter for <code>idm_reconcile.person.second_factor_enabled</code>. Флаг
* включения двухфакторной
* аутентификации
*/
public void setSecondFactorEnabled(Boolean value) {
set(5, value);
}
/**
* Getter for <code>idm_reconcile.person.second_factor_enabled</code>. Флаг
* включения двухфакторной
* аутентификации
*/
public Boolean getSecondFactorEnabled() {
return (Boolean) get(5);
}
/**
* Setter for <code>idm_reconcile.person.active</code>. Флаг активности
* пользователя
*/
public void setActive(Boolean value) {
set(6, value);
}
/**
* Getter for <code>idm_reconcile.person.active</code>. Флаг активности
* пользователя
*/
public Boolean getActive() {
return (Boolean) get(6);
}
/**
* Setter for <code>idm_reconcile.person.created</code>. Дата и время
* создания записи (UNIX
* timestamp)
*/
public void setCreated(Long value) {
set(7, value);
}
/**
* Getter for <code>idm_reconcile.person.created</code>. Дата и время
* создания записи (UNIX
* timestamp)
*/
public Long getCreated() {
return (Long) get(7);
}
/**
* Setter for <code>idm_reconcile.person.modified</code>. Дата и время
* последнего изменения записи
* (UNIX timestamp)
*/
public void setModified(Long value) {
set(8, value);
}
/**
* Getter for <code>idm_reconcile.person.modified</code>. Дата и время
* последнего изменения записи
* (UNIX timestamp)
*/
public Long getModified() {
return (Long) get(8);
}
/**
* Setter for <code>idm_reconcile.person.deleted</code>. Дата и время
* логического удаления записи
* (UNIX timestamp)
*/
public void setDeleted(Long value) {
set(9, value);
}
/**
* Getter for <code>idm_reconcile.person.deleted</code>. Дата и время
* логического удаления записи
* (UNIX timestamp)
*/
public Long getDeleted() {
return (Long) get(9);
}
/**
* Setter for <code>idm_reconcile.person.blocked</code>. Дата и время
* логической блокировки записи
* (UNIX timestamp)
*/
public void setBlocked(Long value) {
set(10, value);
}
/**
* Getter for <code>idm_reconcile.person.blocked</code>. Дата и время
* логической блокировки записи
* (UNIX timestamp)
*/
public Long getBlocked() {
return (Long) get(10);
}
/**
* Setter for <code>idm_reconcile.person.block_until</code>. Дата и время
* логического окончания блокировки записи
* (UNIX timestamp)
*/
public void setBlockUntil(Long value) {
set(11, value);
}
/**
* Getter for <code>idm_reconcile.person.block_until</code>. Дата и время
* логического окончания блокировки записи
* (UNIX timestamp)
*/
public Long getBlockUntil() {
return (Long) get(11);
}
/**
* Setter for <code>idm_reconcile.person.version</code>. Версия записи
*/
public void setVersion(Integer value) {
set(12, value);
}
/**
* Getter for <code>idm_reconcile.person.version</code>. Версия записи
*/
public Integer getVersion() {
return (Integer) get(12);
}
// -------------------------------------------------------------------------
// Primary key information
// -------------------------------------------------------------------------
@Override
public Record1<String> 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();
}
}

View file

@ -4,8 +4,6 @@
package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records; package ru.micord.webbpm.ervu.business_metrics.db_beans.idm_reconcile.tables.records;
import java.sql.Timestamp;
import org.jooq.Record1; import org.jooq.Record1;
import org.jooq.impl.UpdatableRecordImpl; 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" }) @SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class RoleRecord extends UpdatableRecordImpl<RoleRecord> { public class RoleRecord extends UpdatableRecordImpl<RoleRecord> {
@ -21,157 +19,141 @@ public class RoleRecord extends UpdatableRecordImpl<RoleRecord> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* Setter for <code>idm_reconcile.role.id</code>. * Setter for <code>idm_reconcile.role.id</code>. Уникальный идентификатор
* роли
*/ */
public void setId(String value) { public void setId(String value) {
set(0, value); set(0, value);
} }
/** /**
* Getter for <code>idm_reconcile.role.id</code>. * Getter for <code>idm_reconcile.role.id</code>. Уникальный идентификатор
* роли
*/ */
public String getId() { public String getId() {
return (String) get(0); return (String) get(0);
} }
/** /**
* Setter for <code>idm_reconcile.role.version</code>. * Setter for <code>idm_reconcile.role.name</code>. Наименование роли
*/ */
public void setVersion(Integer value) { public void setName(String value) {
set(1, value); set(1, value);
} }
/** /**
* Getter for <code>idm_reconcile.role.version</code>. * Getter for <code>idm_reconcile.role.name</code>. Наименование роли
*/ */
public Integer getVersion() { public String getName() {
return (Integer) get(1); return (String) get(1);
} }
/** /**
* Setter for <code>idm_reconcile.role.modified</code>. * Setter for <code>idm_reconcile.role.description</code>. Описание
* назначения роли
*/ */
public void setModified(Timestamp value) { public void setDescription(String value) {
set(2, value); set(2, value);
} }
/** /**
* Getter for <code>idm_reconcile.role.modified</code>. * Getter for <code>idm_reconcile.role.description</code>. Описание
* назначения роли
*/ */
public Timestamp getModified() { public String getDescription() {
return (Timestamp) get(2); return (String) get(2);
} }
/** /**
* Setter for <code>idm_reconcile.role.schema</code>. * Setter for <code>idm_reconcile.role.display_name</code>. Отображаемое имя
* роли
*/ */
public void setSchema(String value) { public void setDisplayName(String value) {
set(3, value); set(3, value);
} }
/** /**
* Getter for <code>idm_reconcile.role.schema</code>. * Getter for <code>idm_reconcile.role.display_name</code>. Отображаемое имя
* роли
*/ */
public String getSchema() { public String getDisplayName() {
return (String) get(3); return (String) get(3);
} }
/** /**
* Setter for <code>idm_reconcile.role.name</code>. * Setter for <code>idm_reconcile.role.active</code>. Флаг активности роли
*/ */
public void setName(String value) { public void setActive(Boolean value) {
set(4, value); set(4, value);
} }
/** /**
* Getter for <code>idm_reconcile.role.name</code>. * Getter for <code>idm_reconcile.role.active</code>. Флаг активности роли
*/ */
public String getName() { public Boolean getActive() {
return (String) get(4); return (Boolean) get(4);
} }
/** /**
* Setter for <code>idm_reconcile.role.shortname</code>. * Setter for <code>idm_reconcile.role.created</code>. Дата и время создания
* роли (UNIX timestamp)
*/ */
public void setShortname(String value) { public void setCreated(Long value) {
set(5, value); set(5, value);
} }
/** /**
* Getter for <code>idm_reconcile.role.shortname</code>. * Getter for <code>idm_reconcile.role.created</code>. Дата и время создания
* роли (UNIX timestamp)
*/ */
public String getShortname() { public Long getCreated() {
return (String) get(5); return (Long) get(5);
} }
/** /**
* Setter for <code>idm_reconcile.role.display_name</code>. * Setter for <code>idm_reconcile.role.modified</code>. Дата и время
* последнего изменения роли (UNIX timestamp)
*/ */
public void setDisplayName(String value) { public void setModified(Long value) {
set(6, value); set(6, value);
} }
/** /**
* Getter for <code>idm_reconcile.role.display_name</code>. * Getter for <code>idm_reconcile.role.modified</code>. Дата и время
* последнего изменения роли (UNIX timestamp)
*/ */
public String getDisplayName() { public Long getModified() {
return (String) get(6); return (Long) get(6);
} }
/** /**
* Setter for <code>idm_reconcile.role.sessions_limit</code>. * Setter for <code>idm_reconcile.role.deleted</code>. Дата и время
* логического удаления роли (UNIX timestamp)
*/ */
public void setSessionsLimit(Integer value) { public void setDeleted(Long value) {
set(7, value); set(7, value);
} }
/** /**
* Getter for <code>idm_reconcile.role.sessions_limit</code>. * Getter for <code>idm_reconcile.role.deleted</code>. Дата и время
* логического удаления роли (UNIX timestamp)
*/ */
public Integer getSessionsLimit() { public Long getDeleted() {
return (Integer) get(7); return (Long) get(7);
} }
/** /**
* Setter for <code>idm_reconcile.role.ervu_role</code>. * Setter for <code>idm_reconcile.role.version</code>. Версия записи роли
*/ */
public void setErvuRole(Boolean value) { public void setVersion(Integer value) {
set(8, value); set(8, value);
} }
/** /**
* Getter for <code>idm_reconcile.role.ervu_role</code>. * Getter for <code>idm_reconcile.role.version</code>. Версия записи роли
*/ */
public Boolean getErvuRole() { public Integer getVersion() {
return (Boolean) get(8); return (Integer) get(8);
}
/**
* Setter for <code>idm_reconcile.role.imported</code>.
*/
public void setImported(Integer value) {
set(9, value);
}
/**
* Getter for <code>idm_reconcile.role.imported</code>.
*/
public Integer getImported() {
return (Integer) get(9);
}
/**
* Setter for <code>idm_reconcile.role.description</code>.
*/
public void setDescription(String value) {
set(10, value);
}
/**
* Getter for <code>idm_reconcile.role.description</code>.
*/
public String getDescription() {
return (String) get(10);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
@ -197,20 +179,18 @@ public class RoleRecord extends UpdatableRecordImpl<RoleRecord> {
/** /**
* Create a detached, initialised RoleRecord * 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); super(Role.ROLE);
setId(id); setId(id);
setVersion(version);
setModified(modified);
setSchema(schema);
setName(name); setName(name);
setShortname(shortname);
setDisplayName(displayName);
setSessionsLimit(sessionsLimit);
setErvuRole(ervuRole);
setImported(imported);
setDescription(description); setDescription(description);
setDisplayName(displayName);
setActive(active);
setCreated(created);
setModified(modified);
setDeleted(deleted);
setVersion(version);
resetChangedOnNotNull(); resetChangedOnNotNull();
} }
} }

View file

@ -0,0 +1,198 @@
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
<changeSet id="0001" author="adel.ka">
<comment>drop and create table idm_reconcile.domain</comment>
<sql>
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 'Версия записи';
</sql>
</changeSet>
<changeSet id="0002" author="adel.ka">
<comment>create table idm_reconcile.person</comment>
<sql>
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 'Версия записи';
</sql>
</changeSet>
<changeSet id="0003" author="adel.ka">
<comment>drop and create table idm_reconcile.account and idm_reconcile.account_role</comment>
<sql>
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 'Время окончания роли для аккаунта';
</sql>
</changeSet>
<changeSet id="0004" author="adel.ka">
<comment>drop and create idm_reconcile.role</comment>
<sql>
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 'Версия записи роли';
</sql>
</changeSet>
</databaseChangeLog>

View file

@ -36,4 +36,5 @@
<include file="20250515-db_changes.xml" relativeToChangelogFile="true"/> <include file="20250515-db_changes.xml" relativeToChangelogFile="true"/>
<include file="20250519-db_changes.xml" relativeToChangelogFile="true"/> <include file="20250519-db_changes.xml" relativeToChangelogFile="true"/>
<include file="20250522-db_changes.xml" relativeToChangelogFile="true"/> <include file="20250522-db_changes.xml" relativeToChangelogFile="true"/>
<include file="20250530-SUPPORT-9212_idmv3.xml" relativeToChangelogFile="true"/>
</databaseChangeLog> </databaseChangeLog>