/** * Constructs a search URL using the information in the Parameters resource. * * @param params Parameters resource containing a searchExpression parameter whose value is a * Parameters resource containing a resourceUrl parameter and other parameters that comprise * the query expression. * @return search url or an empty string if the url could not be formed */ private String buildSearchUrl(Parameters params) { final StringBuilder searchUrl = new StringBuilder(200); final List<ParametersParameterComponent> paramList = params.getParameter(); final ParametersParameterComponent p = ParametersUtil.findByName(paramList, SEARCH_EXPR); if (p != null) { final Resource r = p.getResource(); if (ResourceType.Parameters.equals(r.getResourceType())) { final Parameters searchExprParams = (Parameters) r; final List<ParametersParameterComponent> searchExprParamList = searchExprParams.getParameter(); String resourceUrl = null; final StringBuilder queryExpr = new StringBuilder(100); // all parameters except resourceUrl contribute to the query expression for (ParametersParameterComponent searchExprParam : searchExprParamList) { String name = searchExprParam.getName(); try { String value = searchExprParam.getValue().toString(); // resourceUrl is different than others if (RESOURCE_URL.equals(name)) { resourceUrl = value; } else { if (queryExpr.length() > 0) { queryExpr.append("&"); } queryExpr.append(name); queryExpr.append("="); queryExpr.append(value); } } catch (NullPointerException e) { LOG.error("Null Value for search expression parameter, {}", name); } } if (resourceUrl == null) { LOG.warn("Required parameter, resourceUrl, is missing from record-match request!"); } else { searchUrl.append(resourceUrl); searchUrl.append("?"); searchUrl.append(queryExpr); } LOG.info("search Url: {}", searchUrl.toString()); } } else { LOG.warn("Unable to find search expression in message parameters"); } return searchUrl.toString(); }