From: Richard Millet Date: Mon, 29 Aug 2011 19:49:33 +0000 (+0000) Subject: CSPACE-4348: Modified AuthorityResource to use same "search" (keyword and advanced... X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=e1ad99f9c404002f07bef34842db576cf2f96e23;p=tmp%2Fjakarta-migration.git CSPACE-4348: Modified AuthorityResource to use same "search" (keyword and advanced) method as all the other services. --- diff --git a/services/authority/src/main/java/org/collectionspace/services/common/vocabulary/AuthorityResource.java b/services/authority/src/main/java/org/collectionspace/services/common/vocabulary/AuthorityResource.java index d1e0b76d2..05695cb7b 100644 --- a/services/authority/src/main/java/org/collectionspace/services/common/vocabulary/AuthorityResource.java +++ b/services/authority/src/main/java/org/collectionspace/services/common/vocabulary/AuthorityResource.java @@ -580,13 +580,14 @@ public abstract class AuthorityResource @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 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 ctx = null; @@ -603,14 +604,17 @@ public abstract class AuthorityResource 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: " diff --git a/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java b/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java index efb29fa76..4dc221e38 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java +++ b/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java @@ -258,36 +258,49 @@ public abstract class ResourceBase } } - protected AbstractCommonList search(MultivaluedMap queryParams, + protected AbstractCommonList search(ServiceContext ctx, + DocumentHandler handler, + MultivaluedMap queryParams, String keywords, - String advancedSearch) { - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - // perform a keyword search - if (keywords != null && !keywords.isEmpty()) { - String whereClause = QueryManager.createWhereClauseFromKeywords(keywords); - DocumentFilter documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); - if (logger.isDebugEnabled()) { - logger.debug("The WHERE clause is: " + documentFilter.getWhereClause()); - } + String advancedSearch) throws Exception { + + // perform a keyword search + if (keywords != null && !keywords.isEmpty()) { + String whereClause = QueryManager.createWhereClauseFromKeywords(keywords); + DocumentFilter documentFilter = handler.getDocumentFilter(); + documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); + if (logger.isDebugEnabled()) { + logger.debug("The WHERE clause is: " + documentFilter.getWhereClause()); } - if (advancedSearch != null && !advancedSearch.isEmpty()) { - String whereClause = QueryManager.createWhereClauseFromAdvancedSearch(advancedSearch); - DocumentFilter documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); - if (logger.isDebugEnabled()) { - logger.debug("The WHERE clause is: " + documentFilter.getWhereClause()); - } + } + if (advancedSearch != null && !advancedSearch.isEmpty()) { + String whereClause = QueryManager.createWhereClauseFromAdvancedSearch(advancedSearch); + DocumentFilter documentFilter = handler.getDocumentFilter(); + documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); + if (logger.isDebugEnabled()) { + logger.debug("The WHERE clause is: " + documentFilter.getWhereClause()); } - getRepositoryClient(ctx).getFiltered(ctx, handler); - return (AbstractCommonList) handler.getCommonPartList(); - } catch (Exception e) { - throw bigReThrow(e, ServiceMessages.SEARCH_FAILED); } + getRepositoryClient(ctx).getFiltered(ctx, handler); + + return (AbstractCommonList) handler.getCommonPartList(); } + protected AbstractCommonList search(MultivaluedMap queryParams, + String keywords, + String advancedSearch) { + ServiceContext ctx; + AbstractCommonList result = null; + try { + ctx = createServiceContext(queryParams); + DocumentHandler handler = createDocumentHandler(ctx); + result = search(ctx, handler, queryParams, keywords, advancedSearch); + } catch (Exception e) { + throw bigReThrow(e, ServiceMessages.SEARCH_FAILED); + } + return result; + } + //FIXME: REM - This should not be @Deprecated since we may want to implement this -it has been on the wish list. @Deprecated public AbstractCommonList getList(List csidList) {