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