Skip to content

Commit dd5b912

Browse files
authored
Merge pull request #624 from OmniFish-EE/ondromih-jakarta-data-persistence
refactor: Reduce repetitive code in AbstractMethodQueryParser (1.1.x)
2 parents 9079a62 + 4a072d1 commit dd5b912

File tree

4 files changed

+19
-49
lines changed

4 files changed

+19
-49
lines changed

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

Lines changed: 16 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -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,75 +112,47 @@ 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
@Override
181154
public void exitIn(MethodParser.InContext ctx) {
182-
boolean hasNot = Objects.nonNull(ctx.not());
183-
boolean ignoreCase = Objects.nonNull(ctx.ignoreCase());
184-
String variable = getVariable(ctx.variable());
185-
Condition operator = IN;
186-
appendCondition(hasNot, ignoreCase, variable, operator);
155+
exitOperationWithASingleVariable(IN, ctx.not(), ctx.variable(), ctx.ignoreCase());
187156
}
188157

189158
@Override
@@ -213,9 +182,12 @@ public void exitOr(MethodParser.OrContext ctx) {
213182
this.and = false;
214183
}
215184

216-
private void appendCondition(boolean hasNot, String variable, Condition operator) {
217-
ParamQueryValue queryValue = new MethodParamQueryValue(variable);
218-
checkCondition(new MethodCondition(variable, operator, queryValue), hasNot);
185+
private void exitOperationWithASingleVariable(Condition operator, MethodParser.NotContext notContext,
186+
MethodParser.VariableContext variableContext, MethodParser.IgnoreCaseContext ignoreCaseContext) {
187+
boolean hasNot = Objects.nonNull(notContext);
188+
boolean isIgnoreCase = Objects.nonNull(ignoreCaseContext);
189+
String variable = getVariable(variableContext);
190+
appendCondition(hasNot, isIgnoreCase, variable, operator);
219191
}
220192

221193
private void appendCondition(boolean hasNot, boolean ignoreCase, String variable, Condition operator) {
@@ -239,7 +211,6 @@ private void checkCondition(QueryCondition condition, boolean hasNot, boolean ig
239211
} else {
240212
appendCondition(OR, newCondition);
241213
}
242-
243214
}
244215

245216
private String getVariable(MethodParser.VariableContext ctx) {

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: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ public static CustomRepositoryHandlerBuilder builder() {
224224
LOGGER.fine(() -> "The default repository found: " + method);
225225
return repository(method);
226226
}
227-
case SAVE, INSERT, DELETE, UPDATE -> {
227+
case SAVE, INSERT, UPDATE -> {
228228
LOGGER.fine(() -> "The default repository found: " + method);
229229
return repository(method, method.getParameters());
230230
}
@@ -290,7 +290,6 @@ private record RepositoryMetadata(Class<?> typeClass, Optional<EntityMetadata> m
290290
if( typeClass == null) {
291291
return defaultRepository.repository();
292292
}
293-
294293
if (typeClass.isArray()) {
295294
typeClass = typeClass.getComponentType();
296295
} 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
@@ -504,4 +504,4 @@ void shouldReturnNumberOfUpdatedEntitiesFromUpdateQuery() {
504504
.thenReturn(Stream.of(Person.builder().age(26).name("Ada").build()));
505505
Assertions.assertThat(people.updateReturnInt("Ada")).isEqualTo(1L);
506506
}
507-
}
507+
}

0 commit comments

Comments
 (0)