]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-5488: Refactoring authority item partial term searches to work…
authorRichard Millet <remillet@berkeley.edu>
Wed, 5 Sep 2012 06:00:28 +0000 (23:00 -0700)
committerRichard Millet <remillet@berkeley.edu>
Wed, 5 Sep 2012 06:00:28 +0000 (23:00 -0700)
services/authority/service/src/main/java/org/collectionspace/services/common/vocabulary/AuthorityResource.java
services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java
services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RemoteDocumentModelHandlerImpl.java

index febb685fd4d1673cfcd273e9c3221663a181ff4c..1852ce0f482531810b6127588b233b1c90c9b834 100644 (file)
@@ -652,7 +652,6 @@ public abstract class AuthorityResource<AuthCommon, AuthItemHandler>
      * Most of the authority child classes will/should use this implementation.  However, the Vocabulary service's item schema is
      * different enough that it will have to override this method in it's resource class.
      */
-    @Override
        protected String getOrderByField() {
                String result = null;
 
index 8c21ffb1a424b66b4b9de5ff95ac2d4903d538a4..c6251add3953b001ccd208a548eb89f97078fad0 100644 (file)
@@ -266,6 +266,8 @@ public abstract class ResourceBase
         MultivaluedMap<String, String> queryParams = ui.getQueryParameters();\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
             list = search(queryParams, keywords, advancedSearch);\r
@@ -300,29 +302,37 @@ public abstract class ResourceBase
                DocumentHandler handler, \r
                MultivaluedMap<String, String> queryParams,\r
                String keywords,\r
-               String advancedSearch) throws Exception {\r
+               String advancedSearch,\r
+               String partialTerm) throws Exception {\r
         \r
-        // perform a keyword search\r
-        if (keywords != null && !keywords.isEmpty()) {\r
+        DocumentFilter docFilter = handler.getDocumentFilter();\r
+        if (partialTerm != null && !partialTerm.isEmpty()) {\r
+               String partialTermMatchField = getPartialTermMatchField();\r
+            String ptClause = QueryManager.createWhereClauseForPartialMatch(\r
+                       partialTermMatchField, partialTerm);\r
+            docFilter.appendWhereClause(ptClause, IQueryManager.SEARCH_QUALIFIER_AND);\r
+        } else if (keywords != null && !keywords.isEmpty()) {\r
             String whereClause = QueryManager.createWhereClauseFromKeywords(keywords);\r
-            if(Tools.isEmpty(whereClause)) {\r
-                if (logger.isDebugEnabled()) {\r
-                       logger.debug("The WHERE clause is empty for keywords: ["+keywords+"]");\r
-                }\r
-            } else {\r
-                   DocumentFilter documentFilter = handler.getDocumentFilter();\r
-                   documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND);\r
+            if (Tools.isEmpty(whereClause) == false) {\r
+               docFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND);\r
                    if (logger.isDebugEnabled()) {\r
-                       logger.debug("The WHERE clause is: " + documentFilter.getWhereClause());\r
+                       logger.debug("The WHERE clause is: " + docFilter.getWhereClause());\r
                    }\r
+            } else {\r
+                if (logger.isWarnEnabled()) {\r
+                       logger.warn("The WHERE clause is empty for keywords: ["+keywords+"]");\r
+                }\r
             }\r
         }\r
+        \r
+        //\r
+        // Add an advance search clause if one was specified\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
+            docFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND);\r
             if (logger.isDebugEnabled()) {\r
-                logger.debug("The WHERE clause is: " + documentFilter.getWhereClause());\r
+                logger.debug("The WHERE clause is: " + docFilter.getWhereClause());\r
             }\r
         }\r
         getRepositoryClient(ctx).getFiltered(ctx, handler);\r
@@ -332,13 +342,14 @@ public abstract class ResourceBase
 \r
     protected AbstractCommonList search(MultivaluedMap<String, String> queryParams,\r
                String keywords,\r
-               String advancedSearch) {\r
+               String advancedSearch,\r
+               String partialTerm) {\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
+                               result = search(ctx, handler, queryParams, keywords, advancedSearch, partialTerm);\r
                        } catch (Exception e) {\r
                    throw bigReThrow(e, ServiceMessages.SEARCH_FAILED);\r
                        }\r
index f4d1f4598f94c04f48db27ac92530452542ab5bf..2572d92e89da17f8fd6857a9e2438568636bc1ab 100644 (file)
@@ -50,6 +50,7 @@ import org.collectionspace.services.client.RelationClient;
 import org.collectionspace.services.client.workflow.WorkflowClient;
 import org.collectionspace.services.common.ResourceBase;
 import org.collectionspace.services.common.authorityref.AuthorityRefList;
+import org.collectionspace.services.common.config.ServiceConfigUtils;
 import org.collectionspace.services.common.context.JaxRsContext;
 import org.collectionspace.services.common.context.MultipartServiceContext;
 import org.collectionspace.services.common.context.ServiceBindingUtils;
@@ -125,14 +126,7 @@ public abstract class   RemoteDocumentModelHandlerImpl<T, TL>
      * tenant bindings config file.
      */
        public DocHandlerParams.Params getDocHandlerParams() throws DocumentException {
-               MultipartServiceContext sc = (MultipartServiceContext) getServiceContext();
-               ServiceBindingType sb = sc.getServiceBinding();
-               DocHandlerParams dhb = sb.getDocHandlerParams();
-               if (dhb != null && dhb.getParams() != null) {
-                       return dhb.getParams();
-               }
-               throw new DocumentException("No DocHandlerParams configured for: "
-                               + sb.getName());
+               return ServiceConfigUtils.getDocHandlerParams(this.getServiceContext());
        }
     
     @Override