29
29
import net .sf .jsqlparser .statement .delete .Delete ;
30
30
import net .sf .jsqlparser .statement .insert .Insert ;
31
31
import net .sf .jsqlparser .statement .merge .Merge ;
32
- import net .sf .jsqlparser .statement .select .*;
32
+ import net .sf .jsqlparser .statement .select .OrderByElement ;
33
+ import net .sf .jsqlparser .statement .select .PlainSelect ;
34
+ import net .sf .jsqlparser .statement .select .Select ;
35
+ import net .sf .jsqlparser .statement .select .SelectBody ;
36
+ import net .sf .jsqlparser .statement .select .SelectExpressionItem ;
37
+ import net .sf .jsqlparser .statement .select .SelectItem ;
38
+ import net .sf .jsqlparser .statement .select .SetOperationList ;
39
+ import net .sf .jsqlparser .statement .select .WithItem ;
33
40
import net .sf .jsqlparser .statement .update .Update ;
34
41
import net .sf .jsqlparser .statement .values .ValuesStatement ;
35
42
36
- import java .util .*;
43
+ import java .util .ArrayList ;
44
+ import java .util .Collections ;
45
+ import java .util .HashSet ;
46
+ import java .util .List ;
47
+ import java .util .Objects ;
48
+ import java .util .Set ;
37
49
import java .util .stream .Collectors ;
38
50
39
51
import org .springframework .data .domain .Sort ;
50
62
* @author Geoffrey Deremetz
51
63
* @since 2.7.0
52
64
*/
53
- public class JSqlParserQueryEnhancer implements QueryEnhancer {
65
+ public class JSqlParserQueryEnhancer extends QueryEnhancer {
54
66
55
- private final DeclaredQuery query ;
56
67
private final ParsedType parsedType ;
57
68
58
69
/**
59
70
* @param query the query we want to enhance. Must not be {@literal null}.
60
71
*/
61
72
public JSqlParserQueryEnhancer (DeclaredQuery query ) {
62
73
63
- this . query = query ;
74
+ super ( query ) ;
64
75
this .parsedType = detectParsedType ();
65
76
}
66
77
@@ -72,7 +83,7 @@ public JSqlParserQueryEnhancer(DeclaredQuery query) {
72
83
private ParsedType detectParsedType () {
73
84
74
85
try {
75
- Statement statement = CCJSqlParserUtil .parse (this . query .getQueryString ());
86
+ Statement statement = CCJSqlParserUtil .parse (getQuery () .getQueryString ());
76
87
77
88
if (statement instanceof Insert ) {
78
89
return ParsedType .INSERT ;
@@ -95,7 +106,7 @@ private ParsedType detectParsedType() {
95
106
@ Override
96
107
public String applySorting (Sort sort , @ Nullable String alias ) {
97
108
98
- String queryString = query .getQueryString ();
109
+ String queryString = getQuery () .getQueryString ();
99
110
Assert .hasText (queryString , "Query must not be null or empty" );
100
111
101
112
if (this .parsedType != ParsedType .SELECT ) {
@@ -192,7 +203,7 @@ Set<String> getSelectionAliases() {
192
203
return new HashSet <>();
193
204
}
194
205
195
- Select selectStatement = parseSelectStatement (this . query .getQueryString ());
206
+ Select selectStatement = parseSelectStatement (getQuery () .getQueryString ());
196
207
PlainSelect selectBody = (PlainSelect ) selectStatement .getSelectBody ();
197
208
return this .getSelectionAliases (selectBody );
198
209
}
@@ -280,7 +291,7 @@ private OrderByElement getOrderClause(final Set<String> joinAliases, final Set<S
280
291
281
292
@ Override
282
293
public String detectAlias () {
283
- return detectAlias (this . query .getQueryString ());
294
+ return detectAlias (getQuery () .getQueryString ());
284
295
}
285
296
286
297
/**
@@ -354,18 +365,18 @@ private String detectAlias(Merge mergeStatement) {
354
365
public String createCountQueryFor (@ Nullable String countProjection ) {
355
366
356
367
if (this .parsedType != ParsedType .SELECT ) {
357
- return this . query .getQueryString ();
368
+ return getQuery () .getQueryString ();
358
369
}
359
370
360
- Assert .hasText (this . query .getQueryString (), "OriginalQuery must not be null or empty" );
371
+ Assert .hasText (getQuery () .getQueryString (), "OriginalQuery must not be null or empty" );
361
372
362
- Select selectStatement = parseSelectStatement (this . query .getQueryString ());
373
+ Select selectStatement = parseSelectStatement (getQuery () .getQueryString ());
363
374
364
375
/*
365
376
We only support count queries for {@link PlainSelect}.
366
377
*/
367
378
if (!(selectStatement .getSelectBody () instanceof PlainSelect )) {
368
- return this . query .getQueryString ();
379
+ return getQuery () .getQueryString ();
369
380
}
370
381
371
382
PlainSelect selectBody = (PlainSelect ) selectStatement .getSelectBody ();
@@ -423,9 +434,9 @@ public String getProjection() {
423
434
return "" ;
424
435
}
425
436
426
- Assert .hasText (query .getQueryString (), "Query must not be null or empty" );
437
+ Assert .hasText (getQuery () .getQueryString (), "Query must not be null or empty" );
427
438
428
- Select selectStatement = parseSelectStatement (query .getQueryString ());
439
+ Select selectStatement = parseSelectStatement (getQuery () .getQueryString ());
429
440
430
441
if (selectStatement .getSelectBody () instanceof ValuesStatement ) {
431
442
return "" ;
@@ -451,7 +462,7 @@ public String getProjection() {
451
462
452
463
@ Override
453
464
public Set <String > getJoinAliases () {
454
- return this .getJoinAliases (this . query .getQueryString ());
465
+ return this .getJoinAliases (getQuery () .getQueryString ());
455
466
}
456
467
457
468
/**
@@ -492,11 +503,6 @@ private boolean onlyASingleColumnProjection(List<SelectItem> projection) {
492
503
&& (((SelectExpressionItem ) projection .get (0 )).getExpression ()) instanceof Column ;
493
504
}
494
505
495
- @ Override
496
- public DeclaredQuery getQuery () {
497
- return this .query ;
498
- }
499
-
500
506
/**
501
507
* An enum to represent the top level parsed statement of the provided query.
502
508
* <ul>
0 commit comments