Polishing.

Fix typos, move QueryTransformers.filterCountSelection to CountSelectionTokenStream.create.

Original Pull Request: #3553
This commit is contained in:
Mark Paluch
2024-08-01 09:50:33 +02:00
committed by Christoph Strobl
parent 9d4bde3e7d
commit b279ff0b88
5 changed files with 38 additions and 40 deletions

View File

@@ -15,9 +15,7 @@
*/
package org.springframework.data.jpa.repository.query;
import static org.springframework.data.jpa.repository.query.QueryTokens.TOKEN_CLOSE_PAREN;
import static org.springframework.data.jpa.repository.query.QueryTokens.TOKEN_COMMA;
import static org.springframework.data.jpa.repository.query.QueryTokens.TOKEN_COUNT_FUNC;
import static org.springframework.data.jpa.repository.query.QueryTokens.*;
import org.springframework.data.jpa.repository.query.QueryRenderer.QueryRendererBuilder;
import org.springframework.data.jpa.repository.query.QueryTransformers.CountSelectionTokenStream;
@@ -98,7 +96,7 @@ class EqlCountQueryTransformer extends EqlQueryRenderer {
private QueryRendererBuilder getDistinctCountSelection(QueryTokenStream selectionListbuilder) {
QueryRendererBuilder nested = new QueryRendererBuilder();
CountSelectionTokenStream countSelection = QueryTransformers.filterCountSelection(selectionListbuilder);
CountSelectionTokenStream countSelection = CountSelectionTokenStream.create(selectionListbuilder);
if (countSelection.requiresPrimaryAlias()) {
// constructor

View File

@@ -251,7 +251,7 @@ class HqlCountQueryTransformer extends HqlQueryRenderer {
private QueryRendererBuilder getDistinctCountSelection(QueryTokenStream selectionListbuilder) {
QueryRendererBuilder nested = new QueryRendererBuilder();
CountSelectionTokenStream countSelection = QueryTransformers.filterCountSelection(selectionListbuilder);
CountSelectionTokenStream countSelection = CountSelectionTokenStream.create(selectionListbuilder);
if (countSelection.requiresPrimaryAlias()) {
// constructor

View File

@@ -96,7 +96,7 @@ class JpqlCountQueryTransformer extends JpqlQueryRenderer {
private QueryRendererBuilder getDistinctCountSelection(QueryTokenStream selectionListbuilder) {
QueryRendererBuilder nested = new QueryRendererBuilder();
CountSelectionTokenStream countSelection = QueryTransformers.filterCountSelection(selectionListbuilder);
CountSelectionTokenStream countSelection = CountSelectionTokenStream.create(selectionListbuilder);
if (countSelection.requiresPrimaryAlias()) {
// constructor

View File

@@ -29,48 +29,48 @@ import java.util.List;
*/
class QueryTransformers {
static CountSelectionTokenStream filterCountSelection(QueryTokenStream selection) {
List<QueryToken> target = new ArrayList<>(selection.size());
boolean skipNext = false;
boolean containsNew = false;
for (QueryToken token : selection) {
if (skipNext) {
skipNext = false;
continue;
}
if (token.equals(TOKEN_AS)) {
skipNext = true;
continue;
}
if (!token.equals(TOKEN_COMMA) && token.isExpression()) {
token = QueryTokens.token(token.value());
}
if (!containsNew && token.value().contains("new")) {
containsNew = true;
}
target.add(token);
}
return new CountSelectionTokenStream(target, containsNew);
}
static class CountSelectionTokenStream implements QueryTokenStream {
private final List<QueryToken> tokens;
private final boolean requiresPrimaryAlias;
public CountSelectionTokenStream(List<QueryToken> tokens, boolean requiresPrimaryAlias) {
CountSelectionTokenStream(List<QueryToken> tokens, boolean requiresPrimaryAlias) {
this.tokens = tokens;
this.requiresPrimaryAlias = requiresPrimaryAlias;
}
static CountSelectionTokenStream create(QueryTokenStream selection) {
List<QueryToken> target = new ArrayList<>(selection.size());
boolean skipNext = false;
boolean containsNew = false;
for (QueryToken token : selection) {
if (skipNext) {
skipNext = false;
continue;
}
if (token.equals(TOKEN_AS)) {
skipNext = true;
continue;
}
if (!token.equals(TOKEN_COMMA) && token.isExpression()) {
token = QueryTokens.token(token.value());
}
if (!containsNew && token.value().contains("new")) {
containsNew = true;
}
target.add(token);
}
return new CountSelectionTokenStream(target, containsNew);
}
@Override
public Iterator<QueryToken> iterator() {
return tokens.iterator();

View File

@@ -99,7 +99,7 @@ class JpqlQueryTransformerTests {
}
@Test
void applyCountToAlreadySorteQuery() {
void applyCountToAlreadySortedQuery() {
// given
var original = "SELECT e FROM Employee e where e.name = :name ORDER BY e.modified_date";