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/metadata/AliasedQueryCriterion.java |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 113 insertions(+), 0 deletions(-)

diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/AliasedQueryCriterion.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/AliasedQueryCriterion.java
new file mode 100644
index 0000000..017d2fe
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/AliasedQueryCriterion.java
@@ -0,0 +1,113 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxApiColumnDefinitions;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxConsultationColumnDefinitions;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class AliasedQueryCriterion {
+
+    private final JsonTableDefinition tableDefinition;
+    private final QueryCriterion queryCriterion;
+    private final Map<String, String> tablesNameToAlias;
+    private final FdxApiColumnDefinitions apiColumnDefinitions = new FdxApiColumnDefinitions();
+    private final FdxConsultationColumnDefinitions fdxConsColumnDefinitions = new FdxConsultationColumnDefinitions();
+
+    public AliasedQueryCriterion(JsonTableDefinition tableDefinition, QueryCriterion queryCriterion, Map<String, String> tablesNameToAlias) {
+        this.tableDefinition = tableDefinition;
+        this.queryCriterion = queryCriterion;
+        this.tablesNameToAlias = tablesNameToAlias;
+    }
+
+    public QueryCriterion aliasedQueryCriterion() {
+        return queryCriterion != null ? aliasedQueryCriterion(queryCriterion) : null;
+    }
+
+    private QueryCriterion aliasedQueryCriterion(QueryCriterion criterion) {
+        if (criterion == null) {
+            return null;
+        }
+        if (criterion.getSubCriteria() != null && !criterion.getSubCriteria().isEmpty() && criterion.getCriteriaLogicConnector() != null) {
+            List<QueryCriterion> subCriteria = new ArrayList<>();
+
+            for (QueryCriterion qc : criterion.getSubCriteria()) {
+                QueryCriterion parseCriterion = aliasedQueryCriterion(qc);
+
+                if (parseCriterion != null) {
+                    subCriteria.add(parseCriterion);
+                }
+            }
+            if (!subCriteria.isEmpty()) {
+                return new QueryCriterion(null,
+                        null,
+                        null,
+                        criterion.getCriteriaLogicConnector(),
+                        subCriteria
+                );
+            }
+        } else if ((criterion.getSubCriteria() == null || criterion.getSubCriteria().isEmpty())) {
+            return new QueryCriterion(columnFullQualifiedName(criterion.getNomColonne()),
+                    criterion.getCriteriaValue(),
+                    criterion.getOperateur(),
+                    null,
+                    Arrays.asList()
+            );
+        }
+        return null;
+    }
+
+    private String tableName(String nomColonne) {
+        if (apiColumnDefinitions.isAppColumnDefinition(nomColonne) || fdxConsColumnDefinitions.isAppColumnDefinition(nomColonne)) {
+            return tableDefinition.getTableName();
+        } else if (tableDefinition.getColumnDefs().stream().filter(c -> c.getName().equalsIgnoreCase(nomColonne)).findFirst().isPresent()) {
+            return tableDefinition.getTableName();
+        } else {
+            return tableName(nomColonne, tableDefinition.getTablesDefinition());
+        }
+    }
+
+    private String tableName(String nomColonne, List<JsonTableDefinition> tablesDef) {
+        String tableName = null;
+        for (JsonTableDefinition t : tablesDef) {
+            tableName = tableName(nomColonne, t);
+
+            if (tableName != null) {
+                return tableName;
+            }
+        }
+        return tableName;
+    }
+
+    private String columnFullQualifiedName(String nomColonne) {
+        String[] nomColonneArray = nomColonne.split("\\.");
+        String finalNomColonne = nomColonneArray[nomColonneArray.length - 1];
+        String tableName = tableName(finalNomColonne);
+
+        return tablesNameToAlias.get(tableName) + "." + finalNomColonne;
+    }
+
+    private String tableName(String nomColonne, JsonTableDefinition t) {
+        if (apiColumnDefinitions.isAppColumnDefinition(nomColonne) || fdxConsColumnDefinitions.isAppColumnDefinition(nomColonne)) {
+            return t.getTableName();
+        } else if (t.getColumnDefs().stream().filter(c -> c.getName().equalsIgnoreCase(nomColonne)).findFirst().isPresent()) {
+            return t.getTableName();
+        } else {
+            if (t.getTablesDefinition().isEmpty()) {
+                return null;
+            } else {
+                return tableName(nomColonne, t.getTablesDefinition());
+            }
+        }
+    }
+}

--
Gitblit v1.10.0