Commit 97d68f96eb6ef00dd274a9f80516926599122d3a
1 parent
befba2bb
Entity Data Query Improvements for SearchText
Showing
1 changed file
with
10 additions
and
19 deletions
@@ -130,7 +130,8 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository { | @@ -130,7 +130,8 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository { | ||
130 | 130 | ||
131 | String entityWhereClause = this.buildEntityWhere(ctx, tenantId, customerId, query.getEntityFilter(), entityFieldsFiltersMapping, entityType); | 131 | String entityWhereClause = this.buildEntityWhere(ctx, tenantId, customerId, query.getEntityFilter(), entityFieldsFiltersMapping, entityType); |
132 | String latestJoins = EntityKeyMapping.buildLatestJoins(ctx, query.getEntityFilter(), entityType, allLatestMappings); | 132 | String latestJoins = EntityKeyMapping.buildLatestJoins(ctx, query.getEntityFilter(), entityType, allLatestMappings); |
133 | - String whereClause = this.buildWhere(ctx, selectionMapping, latestFiltersMapping, pageLink.getTextSearch()); | 133 | + String whereClause = this.buildWhere(ctx, latestFiltersMapping); |
134 | + String textSearchQuery = this.buildTextSearchQuery(ctx, selectionMapping, pageLink.getTextSearch()); | ||
134 | String entityFieldsSelection = EntityKeyMapping.buildSelections(entityFieldsSelectionMapping); | 135 | String entityFieldsSelection = EntityKeyMapping.buildSelections(entityFieldsSelectionMapping); |
135 | String entityTypeStr; | 136 | String entityTypeStr; |
136 | if (query.getEntityFilter().getType().equals(EntityFilterType.RELATIONS_QUERY)) { | 137 | if (query.getEntityFilter().getType().equals(EntityFilterType.RELATIONS_QUERY)) { |
@@ -149,14 +150,14 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository { | @@ -149,14 +150,14 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository { | ||
149 | topSelection = topSelection + ", " + latestSelection; | 150 | topSelection = topSelection + ", " + latestSelection; |
150 | } | 151 | } |
151 | 152 | ||
152 | - String fromClause = String.format("from (select %s from (select %s from %s e where %s) entities %s %s) result", | 153 | + String fromClause = String.format("from (select %s from (select %s from %s e where %s) entities %s %s) result %s", |
153 | topSelection, | 154 | topSelection, |
154 | entityFieldsSelection, | 155 | entityFieldsSelection, |
155 | addEntityTableQuery(ctx, query.getEntityFilter(), entityType), | 156 | addEntityTableQuery(ctx, query.getEntityFilter(), entityType), |
156 | entityWhereClause, | 157 | entityWhereClause, |
157 | latestJoins, | 158 | latestJoins, |
158 | - whereClause); | ||
159 | - | 159 | + whereClause, |
160 | + textSearchQuery); | ||
160 | 161 | ||
161 | int totalElements = jdbcTemplate.queryForObject(String.format("select count(*) %s", fromClause), ctx, Integer.class); | 162 | int totalElements = jdbcTemplate.queryForObject(String.format("select count(*) %s", fromClause), ctx, Integer.class); |
162 | 163 | ||
@@ -435,19 +436,10 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository { | @@ -435,19 +436,10 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository { | ||
435 | " END as label"; | 436 | " END as label"; |
436 | } | 437 | } |
437 | 438 | ||
438 | - private String buildWhere(EntityQueryContext ctx, List<EntityKeyMapping> selectionMapping, List<EntityKeyMapping> latestFiltersMapping, String searchText) { | 439 | + private String buildWhere(EntityQueryContext ctx, List<EntityKeyMapping> latestFiltersMapping) { |
439 | String latestFilters = EntityKeyMapping.buildQuery(ctx, latestFiltersMapping); | 440 | String latestFilters = EntityKeyMapping.buildQuery(ctx, latestFiltersMapping); |
440 | - String textSearchQuery = this.buildTextSearchQuery(ctx, selectionMapping, searchText); | ||
441 | - String query; | ||
442 | - if (!StringUtils.isEmpty(latestFilters) && !StringUtils.isEmpty(textSearchQuery)) { | ||
443 | - query = String.join(" AND ", latestFilters, textSearchQuery); | ||
444 | - } else if (!StringUtils.isEmpty(latestFilters)) { | ||
445 | - query = latestFilters; | ||
446 | - } else { | ||
447 | - query = textSearchQuery; | ||
448 | - } | ||
449 | - if (!StringUtils.isEmpty(query)) { | ||
450 | - return String.format("where %s", query); | 441 | + if (!StringUtils.isEmpty(latestFilters)) { |
442 | + return String.format("where %s", latestFilters); | ||
451 | } else { | 443 | } else { |
452 | return ""; | 444 | return ""; |
453 | } | 445 | } |
@@ -462,11 +454,10 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository { | @@ -462,11 +454,10 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository { | ||
462 | return String.format("LOWER(%s) LIKE :%s", mapping.getValueAlias(), paramName); | 454 | return String.format("LOWER(%s) LIKE :%s", mapping.getValueAlias(), paramName); |
463 | } | 455 | } |
464 | ).collect(Collectors.toList()); | 456 | ).collect(Collectors.toList()); |
465 | - return String.format("(%s)", String.join(" or ", searchPredicates)); | 457 | + return String.format(" WHERE %s", String.join(" or ", searchPredicates)); |
466 | } else { | 458 | } else { |
467 | - return null; | 459 | + return ""; |
468 | } | 460 | } |
469 | - | ||
470 | } | 461 | } |
471 | 462 | ||
472 | private String singleEntityQuery(EntityQueryContext ctx, SingleEntityFilter filter) { | 463 | private String singleEntityQuery(EntityQueryContext ctx, SingleEntityFilter filter) { |