Class SqlRepoContext
- java.lang.Object
-
- com.evolveum.midpoint.repo.sqlbase.SqlRepoContext
-
- Direct Known Subclasses:
SqaleRepoContext
public class SqlRepoContext extends Object
Encapsulates QuerydslConfiguration
, ourQueryModelMappingRegistry
and 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.Configuration
querydslConfig
protected SchemaService
schemaService
-
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 PrismParserNoIO
createStringParser(String serializedResult)
@NotNull PrismSerializer<String>
createStringSerializer()
JdbcRepositoryConfiguration
getJdbcRepositoryConfiguration()
<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.Configuration
getQuerydslConfiguration()
com.querydsl.sql.SQLTemplates
getQuerydslTemplates()
MatchingRuleRegistry
matchingRuleRegistry()
com.querydsl.sql.dml.SQLDeleteClause
newDelete(Connection connection, com.querydsl.sql.RelationalPath<?> entity)
com.querydsl.sql.dml.SQLInsertClause
newInsert(Connection connection, com.querydsl.sql.RelationalPath<?> entity)
JdbcSession
newJdbcSession()
CreatesJdbcSession
that typically represents transactional work on JDBC connection.com.querydsl.sql.SQLQuery<?>
newQuery()
com.querydsl.sql.SQLQuery<?>
newQuery(Connection conn)
com.querydsl.sql.dml.SQLUpdateClause
newUpdate(Connection connection, com.querydsl.sql.RelationalPath<?> entity)
void
normalizeAllRelations(PrismContainerValue<?> pcv)
@NotNull QName
normalizeRelation(QName qName)
<T> RepositoryObjectParseResult<T>
parsePrismObject(String serializedForm, Class<T> schemaType)
PrismContext
prismContext()
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)
RelationRegistry
relationRegistry()
QName
schemaClassToQName(Class<?> schemaClass)
void
setQuerydslSqlListener(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()
CreatesJdbcSession
that typically represents transactional work on JDBC connection. All other lifecycle methods are to be called on the returned object. Object isAutoCloseable
and 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)
-
-