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