/
FakeSqmToSqlAstConverter.java
125 lines (104 loc) · 3.69 KB
/
FakeSqmToSqlAstConverter.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.query.sqm.sql;
import java.util.List;
import java.util.function.Supplier;
import org.hibernate.LockMode;
import org.hibernate.engine.spi.LoadQueryInfluencers;
import org.hibernate.internal.util.collections.Stack;
import org.hibernate.metamodel.mapping.MappingModelExpressible;
import org.hibernate.query.sqm.spi.BaseSemanticQueryWalker;
import org.hibernate.query.sqm.tree.SqmVisitableNode;
import org.hibernate.query.sqm.tree.expression.SqmExpression;
import org.hibernate.query.sqm.tree.expression.SqmParameter;
import org.hibernate.query.sqm.tree.predicate.SqmPredicate;
import org.hibernate.query.sqm.tree.select.SqmQueryPart;
import org.hibernate.sql.ast.Clause;
import org.hibernate.sql.ast.spi.FromClauseAccess;
import org.hibernate.sql.ast.spi.SqlAliasBaseGenerator;
import org.hibernate.sql.ast.spi.SqlAstCreationContext;
import org.hibernate.sql.ast.spi.SqlAstCreationState;
import org.hibernate.sql.ast.spi.SqlAstProcessingState;
import org.hibernate.sql.ast.spi.SqlExpressionResolver;
import org.hibernate.sql.ast.tree.expression.Expression;
import org.hibernate.sql.ast.tree.expression.QueryTransformer;
import org.hibernate.sql.ast.tree.predicate.Predicate;
/**
*
*/
public class FakeSqmToSqlAstConverter extends BaseSemanticQueryWalker implements SqmToSqlAstConverter {
private final SqlAstCreationState creationState;
public FakeSqmToSqlAstConverter(SqlAstCreationState creationState) {
super( creationState.getCreationContext().getServiceRegistry() );
this.creationState = creationState;
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SqlAstCreationState
@Override
public SqlAstCreationContext getCreationContext() {
return creationState.getCreationContext();
}
@Override
public SqlAstProcessingState getCurrentProcessingState() {
return creationState.getCurrentProcessingState();
}
@Override
public SqlExpressionResolver getSqlExpressionResolver() {
return creationState.getSqlExpressionResolver();
}
@Override
public SqlAliasBaseGenerator getSqlAliasBaseGenerator() {
return creationState.getSqlAliasBaseGenerator();
}
@Override
public LoadQueryInfluencers getLoadQueryInfluencers() {
return LoadQueryInfluencers.NONE;
}
@Override
public void registerLockMode(String identificationVariable, LockMode explicitLockMode) {
creationState.registerLockMode( identificationVariable, explicitLockMode );
}
@Override
public FromClauseAccess getFromClauseAccess() {
return creationState.getFromClauseAccess();
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SqmToSqlAstConverter
@Override
public Stack<Clause> getCurrentClauseStack() {
return null;
}
@Override
public SqmQueryPart<?> getCurrentSqmQueryPart() {
return null;
}
@Override
public void registerQueryTransformer(QueryTransformer transformer) {
}
@Override
public MappingModelExpressible<?> resolveFunctionImpliedReturnType() {
return null;
}
@Override
public MappingModelExpressible<?> determineValueMapping(SqmExpression<?> sqmExpression) {
return null;
}
@Override
public Object visitWithInferredType(
SqmVisitableNode node,
Supplier<MappingModelExpressible<?>> inferredTypeAccess) {
return node.accept( this );
}
@Override
public List<Expression> expandSelfRenderingFunctionMultiValueParameter(SqmParameter<?> sqmParameter) {
return null;
}
@Override
public Predicate visitNestedTopLevelPredicate(SqmPredicate predicate) {
return (Predicate) predicate.accept( this );
}
}