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-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ManagerWithCriteriaEntityIFaces.java |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 112 insertions(+), 0 deletions(-)

diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ManagerWithCriteriaEntityIFaces.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ManagerWithCriteriaEntityIFaces.java
new file mode 100644
index 0000000..08d972c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ManagerWithCriteriaEntityIFaces.java
@@ -0,0 +1,112 @@
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ * @param <T> : Entite reelle
+ * @param <ID> : Classe de l'identifiant
+ * @param <U> : entité qui représente un utilisateur
+ */
+public interface ManagerWithCriteriaEntityIFaces<T extends Object, ID, U> {
+
+    <R extends CustomDAOWithCriteriaEntityIfaces<T, ID>> R getDao();
+
+    default T save(T entity) {
+        return getDao().save(entity);
+    }
+
+    default T add(T entity, User connectedUser) {
+        beforeAdd(entity, connectedUser);
+
+        if (entity instanceof BaseEntity) {
+            BaseEntity baseEntity = (BaseEntity) entity;
+            baseEntity.setDateCreation(new Date());
+            baseEntity.setTypeOperation(TypeOperation.AJOUTER);
+            baseEntity.setUtilisateurCreation(connectedUser != null ? connectedUser.getUserName() : null);
+        }
+        logAfterSave(entity, connectedUser);
+        return getDao().save(entity);
+    }
+
+    default void delete(ID id, User connectedUser) {
+        T entity = getDao().getById(id);
+        beforeDelete(entity, connectedUser);
+        if (entity instanceof BaseEntity) {
+            BaseEntity baseEntity = (BaseEntity) entity;
+            baseEntity.setDateSuppression(new Date());
+            baseEntity.setUtilisateurSuppression(connectedUser != null ? connectedUser.getUserName() : null);
+            baseEntity.setTypeOperation(TypeOperation.SUPPRIMER);
+            getDao().save(entity);
+        } else {
+            getDao().delete(entity);
+        }
+        logAfterDelete(entity, connectedUser);
+    }
+
+    default void delete(User connectedUser, T entity) {
+        beforeDelete(entity, connectedUser);
+        if (entity instanceof BaseEntity) {
+            BaseEntity baseEntity = (BaseEntity) entity;
+            baseEntity.setDateSuppression(new Date());
+            baseEntity.setUtilisateurSuppression(connectedUser != null ? connectedUser.getUserName() : null);
+            baseEntity.setTypeOperation(TypeOperation.SUPPRIMER);
+            getDao().delete(entity);
+        } else {
+            getDao().delete(entity);
+        }
+        logAfterDelete(entity, connectedUser);
+    }
+
+    public default T getById(ID id) {
+        return getDao().getById(id);
+    }
+
+    default T update(ID id, T entity, User connectedUser) {
+        T refreshEntity = getDao().getById(id);
+        beforeUpdate(refreshEntity, entity, connectedUser);
+        if (entity instanceof BaseEntity) {
+            BaseEntity baseEntity = (BaseEntity) refreshEntity;
+            baseEntity.setDateDerniereModification(new Date());
+            baseEntity.setUtilisateurModification(connectedUser != null ? connectedUser.getUserName() : null);
+        }
+        logAfterUpdate(entity, connectedUser);
+        return getDao().save(refreshEntity);
+    }
+
+    public default List<T> findWithPagination(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields, Integer pageNumber, Integer pageSize) throws Exception {
+        return getDao().findWithPagination(criterion, fetchEagerFields, orderByFields, pageNumber, pageSize);
+    }
+
+    public default List<T> findAll(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields) throws Exception {
+        return (List<T>) getDao().findAll(criterion, fetchEagerFields, orderByFields);
+    }
+
+    public default Long count(CriteriaEntityFromView criterion) throws Exception {
+        return getDao().count(criterion);
+    }
+
+    default void beforeAdd(T entity, User connectedUser) {
+    }
+
+    default void beforeDelete(T entity, User connectedUser) {
+    }
+
+    default void beforeUpdate(T refreshEntity, T entity, User connectedUser) {
+    }
+    
+    public default void logAfterSave(T entity, User connectedUser){}
+
+    public default void logAfterUpdate(T entity, User connectedUser){}
+
+    public default void logAfterDelete(T entity, User connectedUser){}
+    
+}

--
Gitblit v1.10.0