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/03/08 09:23:26 UTC
[syncope] branch master updated: Some AnySearchDAO cleanup (#323)
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
The following commit(s) were added to refs/heads/master by this push:
new 120e355 Some AnySearchDAO cleanup (#323)
120e355 is described below
commit 120e355359d99c0f654c218f9277e31c03103f14
Author: Francesco Chicchiriccò <il...@users.noreply.github.com>
AuthorDate: Tue Mar 8 10:21:00 2022 +0100
Some AnySearchDAO cleanup (#323)
---
.../persistence/jpa/dao/MyJPAJSONAnySearchDAO.java | 16 +++++++------
.../core/persistence/jpa/dao/JPAAnySearchDAO.java | 28 +++++++++++-----------
2 files changed, 23 insertions(+), 21 deletions(-)
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnySearchDAO.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnySearchDAO.java
index 0a01536..9d88bd2 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnySearchDAO.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnySearchDAO.java
@@ -68,13 +68,15 @@ public class MyJPAJSONAnySearchDAO extends JPAAnySearchDAO {
map(item -> item.orderBy.substring(0, item.orderBy.indexOf(" "))).collect(Collectors.toSet());
obs.views.forEach(searchView -> {
+ boolean searchViewAddedToWhere = false;
if (searchView.name.equals(svs.field().name)) {
StringBuilder attrWhere = new StringBuilder();
StringBuilder nullAttrWhere = new StringBuilder();
- where.append(", (SELECT * FROM ").append(searchView.name);
-
if (svs.nonMandatorySchemas || obs.nonMandatorySchemas) {
+ where.append(", (SELECT * FROM ").append(searchView.name);
+ searchViewAddedToWhere = true;
+
attrs.forEach(field -> {
if (attrWhere.length() == 0) {
attrWhere.append(" WHERE ");
@@ -84,7 +86,7 @@ public class MyJPAJSONAnySearchDAO extends JPAAnySearchDAO {
attrWhere.append("JSON_CONTAINS(plainAttrs, '[{\"schema\":\"").append(field).append("\"}]')");
nullAttrWhere.append(" UNION SELECT DISTINCT any_id,").append(svs.table().alias).append(".*, ").
- append('"').append(field).append('"').append(" AS plainShema, ").
+ append('"').append(field).append('"').append(" AS plainSchema, ").
append("null AS binaryValue, ").
append("null AS booleanValue, ").
append("null AS dateValue, ").
@@ -101,13 +103,13 @@ public class MyJPAJSONAnySearchDAO extends JPAAnySearchDAO {
append(" WHERE ").append(svs.table().alias).append(".id=any_id AND ").
append("JSON_CONTAINS(plainAttrs, '[{\"schema\":\"").append(field).append("\"}]'))");
});
- where.append(attrWhere).append(nullAttrWhere);
+ where.append(attrWhere).append(nullAttrWhere).append(')');
}
-
- where.append(')');
- } else {
+ }
+ if (!searchViewAddedToWhere) {
where.append(',').append(searchView.name);
}
+
where.append(' ').append(searchView.alias);
});
}
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
index 185074a..51a4e52 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
@@ -201,12 +201,12 @@ public class JPAAnySearchDAO extends AbstractAnySearchDAO {
OrderBySupport obs = parseOrderBy(svs, orderBy);
if (queryString.charAt(0) == '(') {
queryString.insert(0, buildSelect(obs));
- queryString.append(buildWhere(svs, obs));
} else {
queryString.insert(0, buildSelect(obs).append('('));
- queryString.append(')').append(buildWhere(svs, obs));
+ queryString.append(')');
}
queryString.
+ append(buildWhere(svs, obs)).
append(filter.getLeft()).
append(buildOrderBy(obs));
@@ -272,13 +272,16 @@ public class JPAAnySearchDAO extends AbstractAnySearchDAO {
obs.views.forEach(searchView -> {
where.append(',');
+
+ boolean searchViewAddedToWhere = false;
if (searchView.name.equals(svs.asSearchViewSupport().attr().name)) {
StringBuilder attrWhere = new StringBuilder();
StringBuilder nullAttrWhere = new StringBuilder();
- where.append(" (SELECT * FROM ").append(searchView.name);
-
if (svs.nonMandatorySchemas || obs.nonMandatorySchemas) {
+ where.append(" (SELECT * FROM ").append(searchView.name);
+ searchViewAddedToWhere = true;
+
attrs.forEach(field -> {
if (attrWhere.length() == 0) {
attrWhere.append(" WHERE ");
@@ -302,13 +305,13 @@ public class JPAAnySearchDAO extends AbstractAnySearchDAO {
append(svs.asSearchViewSupport().attr().name).append(' ').append(searchView.alias).
append(" WHERE ").append("schema_id='").append(field).append("')");
});
- where.append(attrWhere).append(nullAttrWhere);
+ where.append(attrWhere).append(nullAttrWhere).append(')');
}
-
- where.append(')');
- } else {
+ }
+ if (!searchViewAddedToWhere) {
where.append(searchView.name);
}
+
where.append(' ').append(searchView.alias);
});
}
@@ -320,15 +323,12 @@ public class JPAAnySearchDAO extends AbstractAnySearchDAO {
StringBuilder where = new StringBuilder(" u");
processOBS(svs, obs, where);
where.append(" WHERE ");
- obs.views.forEach(searchView -> {
- where.append("u.any_id=").append(searchView.alias).append(".any_id AND ");
- });
+
+ obs.views.forEach(searchView -> where.append("u.any_id=").append(searchView.alias).append(".any_id AND "));
obs.items.stream().
filter(item -> StringUtils.isNotBlank(item.where)).
- forEachOrdered((item) -> {
- where.append(item.where).append(" AND ");
- });
+ forEach(item -> where.append(item.where).append(" AND "));
return where;
}