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/utils/SearchColumnUtil.java | 88 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 88 insertions(+), 0 deletions(-)
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/SearchColumnUtil.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/SearchColumnUtil.java
new file mode 100644
index 0000000..2e745f6
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/SearchColumnUtil.java
@@ -0,0 +1,88 @@
+package com.megatim.fdxcommons.tools.utils;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.search.SearchColumn;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import org.apache.poi.ss.formula.functions.T;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class SearchColumnUtil {
+
+ private SearchColumnUtil() {
+ }
+
+ public static List<SearchColumn> getSearchColumns(Class<T> classe) {
+ List<SearchColumn> searchColumns = new ArrayList<>();
+ List<Field> fields = Arrays.asList(classe.getDeclaredFields());
+
+ for (Field f : fields) {
+ CriteriaEntitySearch searchAnn = f.getAnnotation(CriteriaEntitySearch.class);
+ if (searchAnn != null) {
+ SearchColumn searchColumn = new SearchColumn();
+ searchColumn.setLibelle(searchAnn.libelle());
+
+ TypeDonnee typeDonnee = getTypeDonnee(f, searchAnn);
+
+ if (typeDonnee != null) {
+ searchColumn.setTypeDonnee(typeDonnee);
+ searchColumns.add(searchColumn);
+ }
+
+ }
+ }
+ return searchColumns;
+ }
+
+ public static TypeDonnee getTypeDonnee(Field field, CriteriaEntitySearch searchAnn) {
+ Class<?> fieldClass = field.getType();
+ TypeDonnee typeDonnee = null;
+
+ if (fieldClass.isPrimitive()) {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(fieldClass);
+
+ } else if (fieldClass.isEnum()) {
+ Enumerated enumerated = field.getAnnotation(Enumerated.class);
+ typeDonnee = enumerated == null || enumerated.value().equals(EnumType.ORDINAL) ? TypeDonnee.NUMERIQUE : TypeDonnee.ALPHANUMERIQUE;
+
+ } else if (!fieldClass.isInterface() && !Collection.class.isAssignableFrom(fieldClass) && !Map.class.isAssignableFrom(fieldClass)) {
+ String[] fieldPath = searchAnn.fieldName().split("\\.");
+ if (fieldPath.length < 2) {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(fieldClass);
+ } else {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(getFieldType(fieldClass, Arrays.copyOfRange(fieldPath, 1, fieldPath.length)));
+ }
+ }
+
+ return typeDonnee;
+ }
+
+ public static Class<?> getFieldType(Class<?> classe, String[] fieldPath) {
+ String fieldName = fieldPath[0];
+ List<Field> fields = Arrays.asList(classe.getDeclaredFields());
+ Optional<Field> optField = fields.stream().filter(f -> f.getName().equals(fieldName)).findFirst();
+
+ if (optField.isPresent()) {
+ Field field = optField.get();
+ if (fieldPath.length == 1) {
+ return field.getType();
+ } else {
+ return getFieldType(field.getType(), Arrays.copyOfRange(fieldPath, 1, fieldPath.length));
+ }
+ } else {
+ return null;
+ }
+ }
+
+}
--
Gitblit v1.10.0