@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;
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: "
}\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