]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
Add combine param to report and batch searches. (#354)
authorRay Lee <ray.lee@lyrasis.org>
Tue, 13 Jun 2023 18:57:23 +0000 (14:57 -0400)
committerGitHub <noreply@github.com>
Tue, 13 Jun 2023 18:57:23 +0000 (14:57 -0400)
services/batch/service/src/main/java/org/collectionspace/services/batch/BatchResource.java
services/client/src/main/java/org/collectionspace/services/client/IQueryManager.java
services/report/service/src/main/java/org/collectionspace/services/report/ReportResource.java

index 9fb96512d79ff29c922ce85cd7adb0ad30ba2c43..fd4b4896ed6b362ea771faf61f38153bf07b8d05 100644 (file)
@@ -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<String> 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()) {
index 2208b561f1644700e0e50ca76abfd356e508b93c..f712dcaf4712c24d22bebc06ee0cadbac643aaff 100644 (file)
@@ -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 = " ";
index 2092608ddf694c2118d5f862f73b7dadde1ac5e1..b48e1dad62880381d88debd5c36eb872d831618f 100644 (file)
@@ -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<String> 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());