Class SqlRepoContext
- java.lang.Object
-
- com.evolveum.midpoint.repo.sqlbase.SqlRepoContext
-
- Direct Known Subclasses:
SqaleRepoContext
public class SqlRepoContext extends Object
Encapsulates QuerydslConfiguration, ourQueryModelMappingRegistryand other parts of SQL repository config and implements methods that need these. Preferably, it should hide (hence "encapsulate") the fields and offer behavior instead.
-
-
Field Summary
Fields Modifier and Type Field Description protected com.querydsl.sql.ConfigurationquerydslConfigprotected SchemaServiceschemaService
-
Constructor Summary
Constructors Constructor Description SqlRepoContext(JdbcRepositoryConfiguration jdbcRepositoryConfiguration, DataSource dataSource, SchemaService schemaService, QueryModelMappingRegistry mappingRegistry)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description @NotNull PrismParserNoIOcreateStringParser(String serializedResult)@NotNull PrismSerializer<String>createStringSerializer()JdbcRepositoryConfigurationgetJdbcRepositoryConfiguration()<TS,TQ extends FlexibleRelationalPathBase<TR>,TR>
QueryTableMapping<TS,TQ,TR>getMappingByQueryType(Class<TQ> queryType)<S,Q extends FlexibleRelationalPathBase<R>,R,QM extends QueryTableMapping<S,Q,R>>
QMgetMappingBySchemaType(Class<S> schemaType)com.querydsl.sql.ConfigurationgetQuerydslConfiguration()com.querydsl.sql.SQLTemplatesgetQuerydslTemplates()MatchingRuleRegistrymatchingRuleRegistry()com.querydsl.sql.dml.SQLDeleteClausenewDelete(Connection connection, com.querydsl.sql.RelationalPath<?> entity)com.querydsl.sql.dml.SQLInsertClausenewInsert(Connection connection, com.querydsl.sql.RelationalPath<?> entity)JdbcSessionnewJdbcSession()CreatesJdbcSessionthat typically represents transactional work on JDBC connection.com.querydsl.sql.SQLQuery<?>newQuery()com.querydsl.sql.SQLQuery<?>newQuery(Connection conn)com.querydsl.sql.dml.SQLUpdateClausenewUpdate(Connection connection, com.querydsl.sql.RelationalPath<?> entity)voidnormalizeAllRelations(PrismContainerValue<?> pcv)@NotNull QNamenormalizeRelation(QName qName)<T> RepositoryObjectParseResult<T>parsePrismObject(String serializedForm, Class<T> schemaType)PrismContextprismContext()Sometimes delegation is not enough - we need Prism context for schema type construction with definitions (parameter to constructor).<T> Class<? extends T>qNameToSchemaClass(QName qName)RelationRegistryrelationRegistry()QNameschemaClassToQName(Class<?> schemaClass)voidsetQuerydslSqlListener(com.querydsl.sql.SQLBaseListener listener)Sets Querydsl SQL listener for this repository, replacing any previously one.
-
-
-
Field Detail
-
querydslConfig
protected final com.querydsl.sql.Configuration querydslConfig
-
schemaService
protected final SchemaService schemaService
-
-
Constructor Detail
-
SqlRepoContext
public SqlRepoContext(JdbcRepositoryConfiguration jdbcRepositoryConfiguration, DataSource dataSource, SchemaService schemaService, QueryModelMappingRegistry mappingRegistry)
-
-
Method Detail
-
setQuerydslSqlListener
public void setQuerydslSqlListener(com.querydsl.sql.SQLBaseListener listener)
Sets Querydsl SQL listener for this repository, replacing any previously one.
-
newQuery
public com.querydsl.sql.SQLQuery<?> newQuery()
-
newQuery
public com.querydsl.sql.SQLQuery<?> newQuery(Connection conn)
-
getMappingByQueryType
public <TS,TQ extends FlexibleRelationalPathBase<TR>,TR> QueryTableMapping<TS,TQ,TR> getMappingByQueryType(Class<TQ> queryType)
- Type Parameters:
TQ- query type for the target tableTR- row type related to theSqlRepoContext
-
getMappingBySchemaType
public <S,Q extends FlexibleRelationalPathBase<R>,R,QM extends QueryTableMapping<S,Q,R>> QM getMappingBySchemaType(Class<S> schemaType)
-
getQuerydslTemplates
public com.querydsl.sql.SQLTemplates getQuerydslTemplates()
-
getQuerydslConfiguration
public com.querydsl.sql.Configuration getQuerydslConfiguration()
-
newInsert
public com.querydsl.sql.dml.SQLInsertClause newInsert(Connection connection, com.querydsl.sql.RelationalPath<?> entity)
-
newUpdate
public com.querydsl.sql.dml.SQLUpdateClause newUpdate(Connection connection, com.querydsl.sql.RelationalPath<?> entity)
-
newDelete
public com.querydsl.sql.dml.SQLDeleteClause newDelete(Connection connection, com.querydsl.sql.RelationalPath<?> entity)
-
getJdbcRepositoryConfiguration
public JdbcRepositoryConfiguration getJdbcRepositoryConfiguration()
-
newJdbcSession
public JdbcSession newJdbcSession()
CreatesJdbcSessionthat typically represents transactional work on JDBC connection. All other lifecycle methods are to be called on the returned object. Object isAutoCloseableand can be used in try-with-resource blocks. This call be followed byJdbcSession.startTransaction()(or one of its variants). If the transaction is not started the connection will likely be in auto-commit mode. *We want to start transaction for any work in production code* but for tests it's ok not to.
-
createStringSerializer
@NotNull public @NotNull PrismSerializer<String> createStringSerializer()
-
parsePrismObject
public <T> RepositoryObjectParseResult<T> parsePrismObject(String serializedForm, Class<T> schemaType) throws SchemaException
- Throws:
SchemaException
-
createStringParser
@NotNull public @NotNull PrismParserNoIO createStringParser(String serializedResult)
-
prismContext
public PrismContext prismContext()
Sometimes delegation is not enough - we need Prism context for schema type construction with definitions (parameter to constructor).
-
matchingRuleRegistry
public MatchingRuleRegistry matchingRuleRegistry()
-
relationRegistry
public RelationRegistry relationRegistry()
-
normalizeAllRelations
public void normalizeAllRelations(PrismContainerValue<?> pcv)
-
-