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ò <ilgro...@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 ");