]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-4348: Modified AuthorityResource to use same "search" (keyword and advanced...
authorRichard Millet <richard.millet@berkeley.edu>
Mon, 29 Aug 2011 19:49:33 +0000 (19:49 +0000)
committerRichard Millet <richard.millet@berkeley.edu>
Mon, 29 Aug 2011 19:49:33 +0000 (19:49 +0000)
services/authority/src/main/java/org/collectionspace/services/common/vocabulary/AuthorityResource.java
services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java

index d1e0b76d2362960a56c5ad5ad71e4d526e5728ff..05695cb7b4c4604bd50fdd37a272238c64146c36 100644 (file)
@@ -580,13 +580,14 @@ public abstract class AuthorityResource<AuthCommon, AuthItemHandler>
        @GET
        @Path("{csid}/items")
        @Produces("application/xml")
-       public AbstractCommonList getAuthorityItemList(
-                       @PathParam("csid") String specifier,
-                       @QueryParam(IQueryManager.SEARCH_TYPE_PARTIALTERM) String partialTerm,
-                       @QueryParam(IQueryManager.SEARCH_TYPE_KEYWORDS_KW) String keywords,
+       public AbstractCommonList getAuthorityItemList(@PathParam("csid") String specifier,
                        @Context UriInfo ui) {
                try {
                        MultivaluedMap<String, String> queryParams = ui.getQueryParameters();
+               String partialTerm = queryParams.getFirst(IQueryManager.SEARCH_TYPE_PARTIALTERM);
+               String keywords = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_KW);
+               String advancedSearch = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_AS);
+                       
             // Note that docType defaults to the ServiceName, so we're fine with that.
             ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx = null;
 
@@ -603,14 +604,17 @@ public abstract class AuthorityResource<AuthCommon, AuthItemHandler>
                                        IQueryManager.SEARCH_QUALIFIER_AND);
 
                        // AND vocabularyitems_common:displayName LIKE '%partialTerm%'
+                       // NOTE: Partial terms searches are mutually exclusive to keyword and advanced-search, but
+                       // the PT query param trumps the KW and AS query params.
                        if (partialTerm != null && !partialTerm.isEmpty()) {
                                String ptClause = QueryManager.createWhereClauseForPartialMatch(
                                authorityItemCommonSchemaName + ":"
                                + AuthorityItemJAXBSchema.DISPLAY_NAME, partialTerm );
                                myFilter.appendWhereClause(ptClause, IQueryManager.SEARCH_QUALIFIER_AND);
-                       } else if (keywords != null) {
-                               String kwdClause = QueryManager.createWhereClauseFromKeywords(keywords);
-                               myFilter.appendWhereClause(kwdClause, IQueryManager.SEARCH_QUALIFIER_AND);
+                       } else if (keywords != null || advancedSearch != null) {
+//                             String kwdClause = QueryManager.createWhereClauseFromKeywords(keywords);
+//                             myFilter.appendWhereClause(kwdClause, IQueryManager.SEARCH_QUALIFIER_AND);
+                               return search(ctx, handler, queryParams, keywords, advancedSearch);
                        }
                        if (logger.isDebugEnabled()) {
                                logger.debug("getAuthorityItemList filtered WHERE clause: "
index efb29fa76e8e0cbf3ee293687cf79a3732b40f8d..4dc221e383e6f9f5ab6d584b791ae0bce377f8e5 100644 (file)
@@ -258,36 +258,49 @@ public abstract class ResourceBase
         }\r
     }\r
 \r
-    protected AbstractCommonList search(MultivaluedMap<String, String> queryParams,\r
+    protected AbstractCommonList search(ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx,\r
+               DocumentHandler handler, \r
+               MultivaluedMap<String, String> queryParams,\r
                String keywords,\r
-               String advancedSearch) {\r
-        try {\r
-            ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx = createServiceContext(queryParams);\r
-            DocumentHandler handler = createDocumentHandler(ctx);\r
-            // perform a keyword search\r
-            if (keywords != null && !keywords.isEmpty()) {\r
-                String whereClause = QueryManager.createWhereClauseFromKeywords(keywords);\r
-                DocumentFilter documentFilter = handler.getDocumentFilter();\r
-                documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND);\r
-                if (logger.isDebugEnabled()) {\r
-                    logger.debug("The WHERE clause is: " + documentFilter.getWhereClause());\r
-                }\r
+               String advancedSearch) throws Exception {\r
+        \r
+        // perform a keyword search\r
+        if (keywords != null && !keywords.isEmpty()) {\r
+            String whereClause = QueryManager.createWhereClauseFromKeywords(keywords);\r
+            DocumentFilter documentFilter = handler.getDocumentFilter();\r
+            documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND);\r
+            if (logger.isDebugEnabled()) {\r
+                logger.debug("The WHERE clause is: " + documentFilter.getWhereClause());\r
             }\r
-            if (advancedSearch != null && !advancedSearch.isEmpty()) {\r
-                String whereClause = QueryManager.createWhereClauseFromAdvancedSearch(advancedSearch);\r
-                DocumentFilter documentFilter = handler.getDocumentFilter();\r
-                documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND);\r
-                if (logger.isDebugEnabled()) {\r
-                    logger.debug("The WHERE clause is: " + documentFilter.getWhereClause());\r
-                }\r
+        }\r
+        if (advancedSearch != null && !advancedSearch.isEmpty()) {\r
+            String whereClause = QueryManager.createWhereClauseFromAdvancedSearch(advancedSearch);\r
+            DocumentFilter documentFilter = handler.getDocumentFilter();\r
+            documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND);\r
+            if (logger.isDebugEnabled()) {\r
+                logger.debug("The WHERE clause is: " + documentFilter.getWhereClause());\r
             }\r
-            getRepositoryClient(ctx).getFiltered(ctx, handler);\r
-            return (AbstractCommonList) handler.getCommonPartList();\r
-        } catch (Exception e) {\r
-            throw bigReThrow(e, ServiceMessages.SEARCH_FAILED);\r
         }\r
+        getRepositoryClient(ctx).getFiltered(ctx, handler);\r
+        \r
+        return (AbstractCommonList) handler.getCommonPartList();\r
     }\r
 \r
+    protected AbstractCommonList search(MultivaluedMap<String, String> queryParams,\r
+               String keywords,\r
+               String advancedSearch) {\r
+            ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx;\r
+            AbstractCommonList result = null;\r
+                       try {\r
+                               ctx = createServiceContext(queryParams);\r
+                       DocumentHandler handler = createDocumentHandler(ctx);\r
+                               result = search(ctx, handler, queryParams, keywords, advancedSearch);\r
+                       } catch (Exception e) {\r
+                   throw bigReThrow(e, ServiceMessages.SEARCH_FAILED);\r
+                       }\r
+            return result;\r
+    }\r
+    \r
     //FIXME: REM - This should not be @Deprecated since we may want to implement this -it has been on the wish list.\r
     @Deprecated\r
     public AbstractCommonList getList(List<String> csidList) {\r