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 ");