Skip to content

Commit 7768d34

Browse files
committed
feat: update abstract query builder
Signed-off-by: Otavio Santana <[email protected]>
1 parent bf5863a commit 7768d34

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

jnosql-oracle-nosql/src/main/java/org/eclipse/jnosql/databases/oracle/communication/AbstractQueryBuilder.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,16 @@ protected void condition(CriteriaCondition condition, StringBuilder query, List<
6565
predicate(query, " >= ", document, params);
6666
return;
6767
case LIKE:
68+
predicateLike(query, document);
69+
return;
6870
case CONTAINS:
71+
predicateContains(query, document);
72+
return;
6973
case STARTS_WITH:
74+
predicateStartsWith(query, document);
75+
return;
7076
case ENDS_WITH:
71-
predicateLike(query, document, params);
77+
predicateEndsWith(query, document);
7278
return;
7379
case NOT:
7480
query.append(" NOT ");
@@ -138,13 +144,33 @@ protected void predicate(StringBuilder query,
138144
}
139145

140146
protected void predicateLike(StringBuilder query,
141-
Element document,
142-
List<FieldValue> params) {
147+
Element document) {
143148
String name = identifierOf(document.name());
144149
Object value = OracleNoSqlLikeConverter.INSTANCE.convert(document.get());
145150
query.append("regex_like(").append(name).append(", \"").append(value).append("\")");
146151
}
147152

153+
protected void predicateStartsWith(StringBuilder query,
154+
Element document) {
155+
String name = identifierOf(document.name());
156+
var value = document.get() == null ? "" : document.get(String.class);
157+
query.append("regex_like(").append(name).append(", \"").append(value).append("*").append("\")");
158+
}
159+
160+
protected void predicateEndsWith(StringBuilder query,
161+
Element document) {
162+
String name = identifierOf(document.name());
163+
var value = document.get() == null ? "" : document.get(String.class);
164+
query.append("regex_like(").append(name).append(", \"").append("*").append(value).append("\")");
165+
}
166+
167+
protected void predicateContains(StringBuilder query,
168+
Element document) {
169+
String name = identifierOf(document.name());
170+
var value = document.get() == null ? "" : document.get(String.class);
171+
query.append("regex_like(").append(name).append(", \"").append("*").append(value).append("*").append("\")");
172+
}
173+
148174
protected String identifierOf(String name) {
149175
return ' ' + table + "." + JSON_FIELD + "." + name + ' ';
150176
}

0 commit comments

Comments
 (0)