From 6494941037ae2670876de9940853d50538eb5129 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Fri, 19 Jun 2026 11:25:51 +0000
Subject: [PATCH] move to new repo
---
reporting-adhoc/src/main/java/com/megatim/reporting/adhoc/util/PrintableColumnExtractor.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 115 insertions(+), 0 deletions(-)
diff --git a/reporting-adhoc/src/main/java/com/megatim/reporting/adhoc/util/PrintableColumnExtractor.java b/reporting-adhoc/src/main/java/com/megatim/reporting/adhoc/util/PrintableColumnExtractor.java
new file mode 100644
index 0000000..fa2e05e
--- /dev/null
+++ b/reporting-adhoc/src/main/java/com/megatim/reporting/adhoc/util/PrintableColumnExtractor.java
@@ -0,0 +1,115 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.reporting.adhoc.util;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import com.megatim.reporting.adhoc.annotations.PrintList;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class PrintableColumnExtractor {
+
+ private PrintableColumnExtractor() {
+ }
+
+ public static List<CustomField> extract(Class<?> clazz) {
+ List<CustomField> customFields = new ArrayList<>();
+ customFields.addAll(extractFromFields(clazz));
+ customFields.addAll(extractFromMethods(clazz));
+ List<CustomField> sortedFields = customFields.stream()
+ .sorted(Comparator.comparingInt(CustomField::getRang))
+ .collect(Collectors.toList());
+ return sortedFields;
+ }
+
+ public static List<CustomField> extractListFields(Class<?> clazz, CustomField printableListField) {
+ List<CustomField> customFields = new ArrayList<>();
+ List<Field> fields = Arrays.asList(clazz.getDeclaredFields());
+ fields.stream()
+ .filter(f -> {
+ PrintList printList = f.getAnnotation(PrintList.class);
+ return printList != null && printList.titre().equals(printableListField.getLibelle());
+ })
+ .findFirst()
+ .ifPresent(c -> {
+ PrintList printList = c.getAnnotation(PrintList.class);
+ customFields.addAll(extract(printList.classe()));
+ });
+
+ return customFields;
+ }
+
+ private static List<CustomField> extractFromFields(Class<?> clazz) {
+ List<CustomField> customFields = new ArrayList<>();
+ Field[] fields = clazz.getDeclaredFields();
+
+ for (Field f : fields) {
+ PrintColumn printColumn = f.getAnnotation(PrintColumn.class);
+ PrintList printList = f.getAnnotation(PrintList.class);
+
+ if (printColumn != null) {
+
+ CustomField customField = new CustomField(printColumn.libelle(), f.getName());
+ customField.setClasse(f.getType());
+ customField.setRang(printColumn.rang());
+ customField.setWidth(printColumn.width());
+
+ customFields.add(customField);
+ } else {
+ if (printList != null
+ && (java.util.List.class.isAssignableFrom(f.getType()) || java.util.Set.class.isAssignableFrom(f.getType()))) {
+ CustomField customField = new CustomField(printList.titre(), f.getName());
+ customField.setClasse(f.getType());
+ customFields.add(customField);
+ }
+ }
+ }
+
+ return customFields;
+ }
+
+ private static List<CustomField> extractFromMethods(Class<?> clazz) {
+ List<CustomField> customFields = new ArrayList<>();
+ Method[] methods = clazz.getDeclaredMethods();
+
+ for (Method m : methods) {
+ PrintColumn printColumn = m.getAnnotation(PrintColumn.class);
+ String fieldName = extractFieldNameFromMethod(m);
+
+ if (printColumn != null && fieldName != null) {
+
+ CustomField customField = new CustomField(printColumn.libelle(), fieldName);
+ customField.setClasse(m.getReturnType());
+ customField.setRang(printColumn.rang());
+
+ customFields.add(customField);
+ }
+ }
+
+ return customFields;
+ }
+
+ private static String extractFieldNameFromMethod(Method method) {
+ String methodName = method.getName();
+
+ if (methodName.length() > 4 && methodName.startsWith("get")
+ && ((int) methodName.charAt(3) >= 65 && (int) methodName.charAt(3) <= 90)) {
+ String firstChar = methodName.charAt(3) + "";
+
+ return firstChar.toLowerCase() + methodName.substring(4);
+ }
+ return null;
+ }
+}
--
Gitblit v1.10.0