]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-5488: Adjusted order-by-with-pt-field configuration to take place only when...
authorRichard Millet <richard.millet@berkeley.edu>
Thu, 6 Sep 2012 07:33:45 +0000 (00:33 -0700)
committerRichard Millet <richard.millet@berkeley.edu>
Thu, 6 Sep 2012 07:33:45 +0000 (00:33 -0700)
services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java

index 44ff6c814fb6c5d2b93b0903723a03a225bd811f..462a8659d5e7ef39ae5604868d3bbf5ea71d5c59 100644 (file)
@@ -263,22 +263,37 @@ public abstract class ResourceBase
         getRepositoryClient(ctx).get(ctx, csid, handler);\r
         return ctx.getOutput();\r
     }\r
+    \r
+    protected boolean isGetAllRequest(MultivaluedMap<String, String> queryParams) {\r
+       boolean result = false;\r
+       \r
+        String keywords = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_KW);\r
+        String advancedSearch = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_AS);\r
+        String partialTerm = queryParams.getFirst(IQueryManager.SEARCH_TYPE_PARTIALTERM);\r
+        \r
+        if (Tools.isBlank(keywords) && Tools.isBlank(advancedSearch) && Tools.isBlank(partialTerm)) {\r
+               result = true;\r
+        }\r
+        \r
+       return result;\r
+    }\r
 \r
     //======================= GET without csid. List, search, etc. =====================================\r
     @GET\r
     public AbstractCommonList getList(@Context UriInfo ui) {\r
         MultivaluedMap<String, String> queryParams = ui.getQueryParameters();\r
-        String orderBy = queryParams.getFirst(IClientQueryParams.ORDER_BY_PARAM);\r
-        String keywords = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_KW);\r
-        String advancedSearch = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_AS);\r
-        String partialTerm = queryParams.getFirst(IQueryManager.SEARCH_TYPE_PARTIALTERM);\r
-\r
-        AbstractCommonList list;\r
-        if (keywords != null || advancedSearch != null) {\r
+        AbstractCommonList list = null;\r
+        \r
+        if (isGetAllRequest(queryParams) == false) {\r
+            String orderBy = queryParams.getFirst(IClientQueryParams.ORDER_BY_PARAM);\r
+            String keywords = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_KW);\r
+            String advancedSearch = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_AS);\r
+            String partialTerm = queryParams.getFirst(IQueryManager.SEARCH_TYPE_PARTIALTERM);\r
             list = search(queryParams, orderBy, keywords, advancedSearch, partialTerm);\r
         } else {\r
             list = getList(queryParams);\r
         }\r
+        \r
         return list;\r
     }\r
     \r
@@ -318,8 +333,8 @@ public abstract class ResourceBase
         }\r
         \r
         //\r
-        //NOTE: Partial-term (PT) searches are mutually exclusive to keyword and advanced-search, but\r
-        // the PT query param trumps the keyword search.\r
+        // NOTE: Partial-term (PT) queries are mutually exclusive to keyword and\r
+        // partial-term queries trump keyword queries.\r
         //\r
         if (partialTerm != null && !partialTerm.isEmpty()) {\r
                String partialTermMatchField = getPartialTermMatchField(ctx);\r
@@ -420,18 +435,22 @@ public abstract class ResourceBase
     protected String getOrderByField(ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx) {\r
        String result = null;\r
        \r
-       DocHandlerParams.Params params = null;\r
-       try {\r
-                       result = getPartialTermMatchField(ctx);\r
-                       if (result == null) {\r
-                               throw new Exception();\r
-                       }\r
-       } catch (Exception e) {\r
-                       if (logger.isWarnEnabled()) {\r
-                               logger.warn(String.format("Call failed to getOrderByField() for class %s", this.getClass().getName()));\r
-                       }\r
-       }\r
-       \r
+       // We only want to use the partial term field to order the results if a PT query param exists\r
+        String partialTerm = ctx.getQueryParams().getFirst(IQueryManager.SEARCH_TYPE_PARTIALTERM);\r
+        if (Tools.notBlank(partialTerm) == true) {\r
+               DocHandlerParams.Params params = null;\r
+               try {\r
+                               result = getPartialTermMatchField(ctx);\r
+                               if (result == null) {\r
+                                       throw new Exception();\r
+                               }\r
+               } catch (Exception e) {\r
+                               if (logger.isWarnEnabled()) {\r
+                                       logger.warn(String.format("Call failed to getOrderByField() for class %s", this.getClass().getName()));\r
+                               }\r
+               }\r
+        }\r
+               \r
        return result;\r
     }\r
 \r