From 23a46b4be35277e06ec89f48730eeb694e686be8 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 15:40:06 +0000
Subject: [PATCH] add fdx-commons and fdx-consultation
---
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/WhereQueryString.java | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 160 insertions(+), 0 deletions(-)
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/WhereQueryString.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/WhereQueryString.java
new file mode 100644
index 0000000..5f18449
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/WhereQueryString.java
@@ -0,0 +1,160 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IS_NOT_NULL;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IS_NULL;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LIKE;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_IN;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class WhereQueryString {
+
+ private final QueryCriterion queryCriterion;
+
+ public WhereQueryString(QueryCriterion queryCriterion) {
+ this.queryCriterion = queryCriterion;
+ }
+
+ public String query() {
+ StringBuilder query = new StringBuilder("");
+ if (queryCriterion != null) {
+ query
+ .append(" WHERE ")
+ .append(buildQuery(queryCriterion));
+ }
+ return query.toString();
+ }
+
+ private String buildQuery(QueryCriterion criterion) {
+ StringBuilder query = new StringBuilder();
+
+ if (criterion.getSubCriteria().isEmpty()) {
+
+ switch (criterion.getOperateur()) {
+ case EQUALS:
+ case NOT_EQUALS:
+ case LIKE:
+ case GREATER_OR_EQUALS_THAN:
+ case GREATER_THAN:
+ case LOWER_OR_EQUALS_THAN:
+ case LOWER_THAN:
+ query.append(buildQueryWithSingleParameter(criterion));
+ break;
+ case BETWEEN:
+ case NOT_BETWEEN:
+ query.append(buildBetweenQuery(criterion));
+ break;
+ case IS_NOT_NULL:
+ case IS_NULL:
+ query.append(buildQueryWithoutParameter(criterion));
+ break;
+ case NOT_IN:
+ case IN:
+ query.append(buildQueryWithMultipleParameters(criterion));
+ break;
+ }
+
+ } else {
+
+ CriteriaLogicConnector criteriaLogicConnector = criterion.getCriteriaLogicConnector();
+ int size = criterion.getSubCriteria().size();
+ int index = 0;
+
+ for (QueryCriterion c : criterion.getSubCriteria()) {
+ query
+ .append("(")
+ .append(buildQuery(c))
+ .append(")");
+
+ if ((++index) < size) {
+ query.append(criteriaLogicConnector.equals(CriteriaLogicConnector.AND) ? " AND " : " OR ");
+ }
+
+ }
+
+ }
+
+ return query.toString();
+ }
+
+ private String buildQueryWithoutParameter(QueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+ query
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue());
+ return query.toString();
+ }
+
+ private String buildQueryWithSingleParameter(QueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+ if (criterion.getOperateur().equals(Operateur.LIKE)) {
+ query
+ .append("LOWER(")
+ .append(criterion.getNomColonne())
+ .append(") LIKE LOWER(?)");
+ } else {
+ query
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue())
+ .append(" ?");
+ }
+
+ return query.toString();
+ }
+
+ private String buildBetweenQuery(QueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+ query
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue())
+ .append(" ? ")
+ .append(" AND ")
+ .append(" ? ");
+ return query.toString();
+ }
+
+ private String buildQueryWithMultipleParameters(QueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+
+ query
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue())
+ .append("(");
+
+ List values = (List) criterion.getCriteriaValue();
+
+ int size = values.size();
+ for (int i = 0; i < size; i++) {
+
+ if ((i + 1) < size) {
+ query.append("?,");
+ } else {
+ query.append("?");
+ }
+
+ }
+
+ query.append(")");
+
+ return query.toString();
+ }
+}
--
Gitblit v1.10.0