You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2022/11/21 14:39:12 UTC

[syncope] 01/03: [SYNCOPE-1713] Fixing missing update in RemediationDAO

This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git

commit 436013b788938a6e13112f9c96034b4cb2c5a419
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Fri Nov 18 18:43:27 2022 +0100

    [SYNCOPE-1713] Fixing missing update in RemediationDAO
---
 .../syncope/core/logic/RemediationLogic.java       |  2 +-
 .../core/persistence/api/dao/RemediationDAO.java   |  2 +-
 .../persistence/jpa/dao/JPARemediationDAO.java     | 39 ++++++++++++++++------
 3 files changed, 31 insertions(+), 12 deletions(-)

diff --git a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/RemediationLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/RemediationLogic.java
index e366c1f031..0fa145302a 100644
--- a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/RemediationLogic.java
+++ b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/RemediationLogic.java
@@ -80,7 +80,7 @@ public class RemediationLogic extends AbstractLogic<RemediationTO> {
             final int size,
             final List<OrderByClause> orderByClauses) {
 
-        int count = remediationDAO.count();
+        int count = remediationDAO.count(before, after);
 
         List<RemediationTO> result = remediationDAO.findAll(before, after, page, size, orderByClauses).stream().
                 map(binder::getRemediationTO).collect(Collectors.toList());
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RemediationDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RemediationDAO.java
index 62cefea481..6ae0936f4f 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RemediationDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RemediationDAO.java
@@ -33,7 +33,7 @@ public interface RemediationDAO extends DAO<Remediation> {
 
     List<Remediation> findByPullTask(PullTask pullTask);
 
-    int count();
+    int count(OffsetDateTime before, OffsetDateTime after);
 
     List<Remediation> findAll(
             OffsetDateTime before,
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARemediationDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARemediationDAO.java
index dbca9f6073..2f77611fd8 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARemediationDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARemediationDAO.java
@@ -58,9 +58,35 @@ public class JPARemediationDAO extends AbstractDAO<Remediation> implements Remed
         return query.getResultList();
     }
 
+    protected StringBuilder query(
+            final StringBuilder select,
+            final OffsetDateTime before,
+            final OffsetDateTime after) {
+
+        StringBuilder query = select.
+                append(JPARemediation.class.getSimpleName()).
+                append(" e WHERE 1=1 ");
+        if (before != null) {
+            query.append("AND e.instant <= :before ");
+        }
+        if (after != null) {
+            query.append("AND e.instant >= :after ");
+        }
+        return query;
+    }
+
     @Override
-    public int count() {
-        Query query = entityManager().createNativeQuery("SELECT COUNT(id) FROM " + JPARemediation.TABLE);
+    public int count(final OffsetDateTime before, final OffsetDateTime after) {
+        StringBuilder queryString = query(new StringBuilder("SELECT COUNT(e) FROM "), before, after);
+
+        Query query = entityManager().createQuery(queryString.toString());
+        if (before != null) {
+            query.setParameter("before", before);
+        }
+        if (after != null) {
+            query.setParameter("after", after);
+        }
+
         return ((Number) query.getSingleResult()).intValue();
     }
 
@@ -72,14 +98,7 @@ public class JPARemediationDAO extends AbstractDAO<Remediation> implements Remed
             final int itemsPerPage,
             final List<OrderByClause> orderByClauses) {
 
-        StringBuilder queryString = new StringBuilder(
-                "SELECT e FROM " + JPARemediation.class.getSimpleName() + " e WHERE 1=1 ");
-        if (before != null) {
-            queryString.append(" AND e.instant <= :before");
-        }
-        if (after != null) {
-            queryString.append(" AND e.instant >= :after");
-        }
+        StringBuilder queryString = query(new StringBuilder("SELECT e FROM "), before, after);
 
         if (!orderByClauses.isEmpty()) {
             queryString.append(" ORDER BY ");