@Transactional(propagation = Propagation.SUPPORTS) @Override public void translateRawParameters(Map<String, List<String>> theSource, SearchParameterMap theTarget) { if (theSource == null || theSource.isEmpty()) { return; } Map<String, RuntimeSearchParam> searchParams = mySerarchParamRegistry.getActiveSearchParams(getResourceName()); Set<String> paramNames = theSource.keySet(); for (String nextParamName : paramNames) { QualifierDetails qualifiedParamName = SearchMethodBinding.extractQualifiersFromParameterName(nextParamName); RuntimeSearchParam param = searchParams.get(qualifiedParamName.getParamName()); if (param == null) { String msg = getContext().getLocalizer().getMessage(BaseHapiFhirResourceDao.class, "invalidSearchParameter", qualifiedParamName.getParamName(), new TreeSet<String>(searchParams.keySet())); throw new InvalidRequestException(msg); } // Should not be null since the check above would have caught it RuntimeResourceDefinition resourceDef = getContext().getResourceDefinition(myResourceName); RuntimeSearchParam paramDef = mySearchParamRegistry.getSearchParamByName(resourceDef, qualifiedParamName.getParamName()); for (String nextValue : theSource.get(nextParamName)) { if (isNotBlank(nextValue)) { QualifiedParamList qualifiedParam = QualifiedParamList.splitQueryStringByCommasIgnoreEscape(qualifiedParamName.getWholeQualifier(), nextValue); List<QualifiedParamList> paramList = Collections.singletonList(qualifiedParam); IQueryParameterAnd<?> parsedParam = ParameterUtil.parseQueryParams(getContext(), paramDef, nextParamName, paramList); theTarget.add(qualifiedParamName.getParamName(), parsedParam); } } } }
@Transactional(propagation = Propagation.SUPPORTS) @Override public void translateRawParameters(Map<String, List<String>> theSource, SearchParameterMap theTarget) { if (theSource == null || theSource.isEmpty()) { return; } Map<String, RuntimeSearchParam> searchParams = mySerarchParamRegistry.getActiveSearchParams(getResourceName()); Set<String> paramNames = theSource.keySet(); for (String nextParamName : paramNames) { QualifierDetails qualifiedParamName = SearchMethodBinding.extractQualifiersFromParameterName(nextParamName); RuntimeSearchParam param = searchParams.get(qualifiedParamName.getParamName()); if (param == null) { String msg = getContext().getLocalizer().getMessage(BaseHapiFhirResourceDao.class, "invalidSearchParameter", qualifiedParamName.getParamName(), new TreeSet<String>(searchParams.keySet())); throw new InvalidRequestException(msg); } // Should not be null since the check above would have caught it RuntimeResourceDefinition resourceDef = getContext().getResourceDefinition(myResourceName); RuntimeSearchParam paramDef = mySearchParamRegistry.getSearchParamByName(resourceDef, qualifiedParamName.getParamName()); for (String nextValue : theSource.get(nextParamName)) { if (isNotBlank(nextValue)) { QualifiedParamList qualifiedParam = QualifiedParamList.splitQueryStringByCommasIgnoreEscape(qualifiedParamName.getWholeQualifier(), nextValue); List<QualifiedParamList> paramList = Collections.singletonList(qualifiedParam); IQueryParameterAnd<?> parsedParam = ParameterUtil.parseQueryParams(getContext(), paramDef, nextParamName, paramList); theTarget.add(qualifiedParamName.getParamName(), parsedParam); } } } }