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/AbstractCrudManager.java | 90 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 90 insertions(+), 0 deletions(-)
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/AbstractCrudManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/AbstractCrudManager.java
new file mode 100644
index 0000000..c03c6a7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/AbstractCrudManager.java
@@ -0,0 +1,90 @@
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.megatim.fdxcommons.dao.ifaces.abstracts.AbstractCrudDAO;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ * @param <T> : Entite reelle
+ * @param <K> : Dto
+ * @param <ID> : Classe de l'identifiant
+ * @param <S> : entité de recherche
+ */
+public interface AbstractCrudManager<T extends Object, K, ID, S> {
+
+ <R extends AbstractCrudDAO<T, ID, S>> R getDao();
+
+ K mapToDto(T 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);
+ }
+ return getDao().save(entity);
+ }
+
+ 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);
+ }
+ return getDao().save(refreshEntity);
+ }
+
+ 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);
+ }
+ }
+
+ default void beforeAdd(T entity, User conncectedUser) {
+ }
+
+ default void beforeDelete(T entity, User conncectedUser) {
+ }
+
+ void beforeUpdate(T refreshEntity, T entity, User conncectedUser);
+
+ public default T getById(ID id) {
+ return getDao().getById(id);
+ }
+
+ public default List<K> findWithPagination(int pageNumber, int pagesize, S searchEntity, User connectedUser) {
+ return getDao().findWithPagination(pageNumber, pagesize, searchEntity)
+ .stream()
+ .map(t -> mapToDto(t))
+ .collect(Collectors.toList());
+ }
+
+ public default List<K> getAll(S searchEntity, User connectedUser) {
+ return getDao().getAll(searchEntity)
+ .stream()
+ .map(t -> mapToDto(t))
+ .collect(Collectors.toList());
+ }
+
+ public default Long count(S searchEntity) {
+ return getDao().count(searchEntity);
+ }
+}
--
Gitblit v1.10.0