From f5b3212db41b08fdb9630f153033f0c1654f41ae Mon Sep 17 00:00:00 2001 From: Ray Lee Date: Tue, 13 Jun 2023 14:57:23 -0400 Subject: [PATCH] Add combine param to report and batch searches. (#354) --- .../services/batch/BatchResource.java | 12 +++++++++--- .../services/client/IQueryManager.java | 3 +++ .../services/report/ReportResource.java | 12 +++++++++--- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/services/batch/service/src/main/java/org/collectionspace/services/batch/BatchResource.java b/services/batch/service/src/main/java/org/collectionspace/services/batch/BatchResource.java index 9fb96512d..fd4b4896e 100644 --- a/services/batch/service/src/main/java/org/collectionspace/services/batch/BatchResource.java +++ b/services/batch/service/src/main/java/org/collectionspace/services/batch/BatchResource.java @@ -99,6 +99,12 @@ public class BatchResource extends NuxeoBasedResource { String docType = queryParams.getFirst(IQueryManager.SEARCH_TYPE_DOCTYPE); String className = queryParams.getFirst(IQueryManager.SEARCH_TYPE_CLASS_NAME); List modes = queryParams.get(IQueryManager.SEARCH_TYPE_INVOCATION_MODE); + String combine = queryParams.getFirst(IQueryManager.SEARCH_COMBINE_QUERY_PARAM); + + String qualifier = (combine != null && combine.equals(IQueryManager.SEARCH_COMBINE_OR)) + ? IQueryManager.SEARCH_QUALIFIER_OR + : IQueryManager.SEARCH_QUALIFIER_AND; + String whereClause = null; DocumentFilter documentFilter = null; String common_part = ctx.getCommonPartLabel(); @@ -107,21 +113,21 @@ public class BatchResource extends NuxeoBasedResource { whereClause = QueryManager.createWhereClauseForInvocableByDocType( common_part, docType); documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); + documentFilter.appendWhereClause(whereClause, qualifier); } if (className != null && !className.isEmpty()) { whereClause = QueryManager.createWhereClauseForInvocableByClassName( common_part, className); documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); + documentFilter.appendWhereClause(whereClause, qualifier); } if (modes != null && !modes.isEmpty()) { whereClause = QueryManager.createWhereClauseForInvocableByMode( common_part, modes); documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); + documentFilter.appendWhereClause(whereClause, qualifier); } if (whereClause !=null && logger.isDebugEnabled()) { diff --git a/services/client/src/main/java/org/collectionspace/services/client/IQueryManager.java b/services/client/src/main/java/org/collectionspace/services/client/IQueryManager.java index 2208b561f..f712dcaf4 100644 --- a/services/client/src/main/java/org/collectionspace/services/client/IQueryManager.java +++ b/services/client/src/main/java/org/collectionspace/services/client/IQueryManager.java @@ -30,6 +30,9 @@ import java.util.List; public interface IQueryManager { + final static String SEARCH_COMBINE_QUERY_PARAM = "combine"; + final static String SEARCH_COMBINE_AND = "and"; + final static String SEARCH_COMBINE_OR = "or"; final static String SEARCH_GROUP_OPEN = "("; final static String SEARCH_GROUP_CLOSE = ")"; final static String SEARCH_TERM_SEPARATOR = " "; diff --git a/services/report/service/src/main/java/org/collectionspace/services/report/ReportResource.java b/services/report/service/src/main/java/org/collectionspace/services/report/ReportResource.java index 2092608dd..b48e1dad6 100644 --- a/services/report/service/src/main/java/org/collectionspace/services/report/ReportResource.java +++ b/services/report/service/src/main/java/org/collectionspace/services/report/ReportResource.java @@ -101,6 +101,12 @@ public class ReportResource extends NuxeoBasedResource { String docType = queryParams.getFirst(IQueryManager.SEARCH_TYPE_DOCTYPE); String filename = queryParams.getFirst(IQueryManager.SEARCH_TYPE_FILENAME); List modes = queryParams.get(IQueryManager.SEARCH_TYPE_INVOCATION_MODE); + String combine = queryParams.getFirst(IQueryManager.SEARCH_COMBINE_QUERY_PARAM); + + String qualifier = (combine != null && combine.equals(IQueryManager.SEARCH_COMBINE_OR)) + ? IQueryManager.SEARCH_QUALIFIER_OR + : IQueryManager.SEARCH_QUALIFIER_AND; + String whereClause = null; DocumentFilter documentFilter = null; String common_part =ctx.getCommonPartLabel(); @@ -108,19 +114,19 @@ public class ReportResource extends NuxeoBasedResource { whereClause = QueryManager.createWhereClauseForInvocableByDocType( common_part, docType); documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); + documentFilter.appendWhereClause(whereClause, qualifier); } if (filename != null && !filename.isEmpty()) { whereClause = QueryManager.createWhereClauseForInvocableByFilename( common_part, filename); documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); + documentFilter.appendWhereClause(whereClause, qualifier); } if (modes != null && !modes.isEmpty()) { whereClause = QueryManager.createWhereClauseForInvocableByMode( common_part, modes); documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); + documentFilter.appendWhereClause(whereClause, qualifier); } if (whereClause !=null && logger.isDebugEnabled()) { logger.debug("The WHERE clause is: " + documentFilter.getWhereClause()); -- 2.47.3