package pl.edu.icm.saos.search.analysis.solr.request; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import pl.edu.icm.saos.search.analysis.request.XRange; /** * Manager of converting {@link XRange} to solr facet request * * @author madryk */ @Service public class XRangeConverterManager { private List<XRangeConverter> xRangeConverters = Lists.newArrayList(); //------------------------ LOGIC -------------------------- /** * Returns {@link XRangeConverter} that is applicable to {@link XRange} * with class provided as argument * * @throws IllegalArgumentException if no suitable {@link XRangeConverter} was found */ public XRangeConverter getXRangeConverter(Class<? extends XRange> clazz) { Preconditions.checkNotNull(clazz); for (XRangeConverter xRangeConverter : xRangeConverters) { if (xRangeConverter.isApplicable(clazz)) { return xRangeConverter; } } throw new IllegalArgumentException("No XRangeConverter applicable for " + clazz + " found."); } //------------------------ SETTERS -------------------------- @Autowired public void setxRangeConverters(List<XRangeConverter> xRangeConverters) { this.xRangeConverters = xRangeConverters; } }