package edu.mayo.cts2.framework.webapp.soap.resolver; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.apache.commons.lang.StringUtils; import edu.mayo.cts2.framework.model.command.ResolvedFilter; import edu.mayo.cts2.framework.model.core.ComponentReference; import edu.mayo.cts2.framework.model.core.MatchAlgorithmReference; import edu.mayo.cts2.framework.model.service.core.FilterComponent; import edu.mayo.cts2.framework.model.service.core.NameOrURI; import edu.mayo.cts2.framework.service.profile.BaseQueryService; import edu.mayo.cts2.framework.webapp.rest.util.ControllerUtils; public class FilterResolver { public Collection<ResolvedFilter> resolveFilter(FilterComponent filter, BaseQueryService service){ if(filter == null || StringUtils.isBlank(filter.getMatchValue())){ return null; } NameOrURI matchAlgorithmReference = filter.getMatchAlgorithm(); MatchAlgorithmReference matchRef = ControllerUtils.getReference(matchAlgorithmReference, service.getSupportedMatchAlgorithms()); List<ResolvedFilter> returnList = new ArrayList<ResolvedFilter>(); if(filter.getFilterComponents() != null){ for(NameOrURI nameOrURI : filter.getFilterComponents().getEntry()){ ResolvedFilter resolvedFilter = new ResolvedFilter(); resolvedFilter.setMatchAlgorithmReference(matchRef); //TODO: Check for a URI here String name = nameOrURI.getName(); ComponentReference componentReference = ControllerUtils.getComponentReference(name, service.getSupportedSearchReferences()); resolvedFilter.setComponentReference(componentReference); resolvedFilter.setMatchValue(filter.getMatchValue()); returnList.add(resolvedFilter); } } return returnList; } }