Skip to content

Commit 65db8b2

Browse files
authored
Merge pull request #625 from OmniFish-EE/ondromih-jnosql-contributions-main
refactor: Reduce repetitive code in AbstractMethodQueryParser
2 parents 999fd35 + a5b01e2 commit 65db8b2

File tree

4 files changed

+20
-45
lines changed

4 files changed

+20
-45
lines changed

jnosql-communication/jnosql-communication-query/src/main/java/org/eclipse/jnosql/communication/query/method/AbstractMethodQueryParser.java

Lines changed: 18 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2022-2025 Contributors to the Eclipse Foundation
2+
* Copyright (c) 2022,2025 Contributors to the Eclipse Foundation
33
* All rights reserved. This program and the accompanying materials
44
* are made available under the terms of the Eclipse Public License v1.0
55
* and Apache License v2.0 which accompanies this distribution.
@@ -95,10 +95,7 @@ public void exitSelectStart(MethodParser.SelectStartContext ctx) {
9595

9696
@Override
9797
public void exitEq(MethodParser.EqContext ctx) {
98-
boolean hasNot = Objects.nonNull(ctx.not());
99-
boolean ignoreCase = Objects.nonNull(ctx.ignoreCase());
100-
String variable = getVariable(ctx.variable());
101-
appendCondition(hasNot, ignoreCase, variable, EQUALS);
98+
exitOperationWithASingleVariable(EQUALS, ctx.not(), ctx.variable(), ctx.ignoreCase());
10299
}
103100

104101
@Override
@@ -115,76 +112,48 @@ public void exitUntruth(MethodParser.UntruthContext ctx) {
115112

116113
@Override
117114
public void exitGt(MethodParser.GtContext ctx) {
118-
boolean hasNot = Objects.nonNull(ctx.not());
119-
boolean ignoreCase = Objects.nonNull(ctx.ignoreCase());
120-
String variable = getVariable(ctx.variable());
121-
appendCondition(hasNot, ignoreCase, variable, GREATER_THAN);
115+
exitOperationWithASingleVariable(GREATER_THAN, ctx.not(), ctx.variable(), ctx.ignoreCase());
122116
}
123117

124118
@Override
125119
public void exitGte(MethodParser.GteContext ctx) {
126-
boolean hasNot = Objects.nonNull(ctx.not());
127-
boolean ignoreCase = Objects.nonNull(ctx.ignoreCase());
128-
String variable = getVariable(ctx.variable());
129-
appendCondition(hasNot, ignoreCase, variable, GREATER_EQUALS_THAN);
120+
exitOperationWithASingleVariable(GREATER_EQUALS_THAN, ctx.not(), ctx.variable(), ctx.ignoreCase());
130121
}
131122

132123
@Override
133124
public void exitLt(MethodParser.LtContext ctx) {
134-
boolean hasNot = Objects.nonNull(ctx.not());
135-
boolean ignoreCase = Objects.nonNull(ctx.ignoreCase());
136-
String variable = getVariable(ctx.variable());
137-
appendCondition(hasNot, ignoreCase, variable, LESSER_THAN);
125+
exitOperationWithASingleVariable(LESSER_THAN, ctx.not(), ctx.variable(), ctx.ignoreCase());
138126
}
139127

140128
@Override
141129
public void exitLte(MethodParser.LteContext ctx) {
142-
boolean hasNot = Objects.nonNull(ctx.not());
143-
boolean ignoreCase = Objects.nonNull(ctx.ignoreCase());
144-
String variable = getVariable(ctx.variable());
145-
appendCondition(hasNot, ignoreCase, variable, LESSER_EQUALS_THAN);
130+
exitOperationWithASingleVariable(LESSER_EQUALS_THAN, ctx.not(), ctx.variable(), ctx.ignoreCase());
146131
}
147132

148133
@Override
149134
public void exitLike(MethodParser.LikeContext ctx) {
150-
boolean hasNot = Objects.nonNull(ctx.not());
151-
boolean ignoreCase = Objects.nonNull(ctx.ignoreCase());
152-
String variable = getVariable(ctx.variable());
153-
appendCondition(hasNot, ignoreCase, variable, LIKE);
135+
exitOperationWithASingleVariable(LIKE, ctx.not(), ctx.variable(), ctx.ignoreCase());
154136
}
155137

156138
@Override
157139
public void exitContains(MethodParser.ContainsContext ctx) {
158-
boolean hasNot = Objects.nonNull(ctx.not());
159-
boolean ignoreCase = Objects.nonNull(ctx.ignoreCase());
160-
String variable = getVariable(ctx.variable());
161-
appendCondition(hasNot, ignoreCase, variable, CONTAINS);
140+
exitOperationWithASingleVariable(CONTAINS, ctx.not(), ctx.variable(), ctx.ignoreCase());
162141
}
163142

164143
@Override
165144
public void exitEndsWith(MethodParser.EndsWithContext ctx) {
166-
boolean hasNot = Objects.nonNull(ctx.not());
167-
boolean ignoreCase = Objects.nonNull(ctx.ignoreCase());
168-
String variable = getVariable(ctx.variable());
169-
appendCondition(hasNot, ignoreCase, variable, ENDS_WITH);
145+
exitOperationWithASingleVariable(ENDS_WITH, ctx.not(), ctx.variable(), ctx.ignoreCase());
170146
}
171147

172148
@Override
173149
public void exitStartsWith(MethodParser.StartsWithContext ctx) {
174-
boolean hasNot = Objects.nonNull(ctx.not());
175-
boolean ignoreCase = Objects.nonNull(ctx.ignoreCase());
176-
String variable = getVariable(ctx.variable());
177-
appendCondition(hasNot, ignoreCase, variable, STARTS_WITH);
150+
exitOperationWithASingleVariable(STARTS_WITH, ctx.not(), ctx.variable(), ctx.ignoreCase());
178151
}
179152

180153

181154
@Override
182155
public void exitIn(MethodParser.InContext ctx) {
183-
boolean hasNot = Objects.nonNull(ctx.not());
184-
boolean ignoreCase = Objects.nonNull(ctx.ignoreCase());
185-
String variable = getVariable(ctx.variable());
186-
Condition operator = IN;
187-
appendCondition(hasNot, ignoreCase, variable, operator);
156+
exitOperationWithASingleVariable(IN, ctx.not(), ctx.variable(), ctx.ignoreCase());
188157
}
189158

190159
@Override
@@ -214,6 +183,13 @@ public void exitOr(MethodParser.OrContext ctx) {
214183
this.and = false;
215184
}
216185

186+
private void exitOperationWithASingleVariable(Condition operator, MethodParser.NotContext notContext,
187+
MethodParser.VariableContext variableContext, MethodParser.IgnoreCaseContext ignoreCaseContext) {
188+
boolean hasNot = Objects.nonNull(notContext);
189+
boolean isIgnoreCase = Objects.nonNull(ignoreCaseContext);
190+
String variable = getVariable(variableContext);
191+
appendCondition(hasNot, isIgnoreCase, variable, operator);
192+
}
217193

218194
private void appendCondition(boolean hasNot, boolean ignoreCase, String variable, Condition operator) {
219195
ParamQueryValue queryValue = new MethodParamQueryValue(variable);

jnosql-mapping/jnosql-mapping-core/src/main/java/org/eclipse/jnosql/mapping/core/query/AnnotationOperation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ private static List<Object> getArray(Object param) {
209209
}
210210

211211
private static void checkParameterNumber(Operation operation) {
212-
if (operation.params.length != 1) {
212+
if (operation.params == null || operation.params.length != 1) {
213213
throw new UnsupportedOperationException("The method operation requires one parameter, please check the method: "
214214
+ operation.method);
215215
}

jnosql-mapping/jnosql-mapping-semistructured/src/main/java/org/eclipse/jnosql/mapping/semistructured/query/CustomRepositoryHandler.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,6 @@ private record RepositoryMetadata(Class<?> typeClass, Optional<EntityMetadata> m
294294
if( typeClass == null) {
295295
return defaultRepository.repository();
296296
}
297-
298297
if (typeClass.isArray()) {
299298
typeClass = typeClass.getComponentType();
300299
} else if (IS_GENERIC_SUPPORTED_TYPE.test(typeClass)) {

jnosql-mapping/jnosql-mapping-semistructured/src/test/java/org/eclipse/jnosql/mapping/semistructured/query/CustomRepositoryHandlerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -502,4 +502,4 @@ void shouldReturnNumberOfUpdatedEntitiesFromUpdateQuery() {
502502
.thenReturn(Optional.of(1L));
503503
Assertions.assertThat(people.updateReturnLong("Ada")).isEqualTo(1L);
504504
}
505-
}
505+
}

0 commit comments

Comments
 (0)