package com.tyndalehouse.step.core.service.impl.suggestion; import com.tyndalehouse.step.core.data.common.TermsAndMaxCount; import com.tyndalehouse.step.core.models.search.PopularSuggestion; import com.tyndalehouse.step.core.models.search.SubjectSuggestion; import com.tyndalehouse.step.core.service.SingleTypeSuggestionService; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * A abstract implementation that assumes the first list (exact matches) have been merged * already, so we will only ever return the second list. * @author chrisburrell */ public abstract class AbstractIgnoreMergedListSuggestionServiceImpl<T extends PopularSuggestion> implements SingleTypeSuggestionService<T, TermsAndMaxCount<T>> { /** * Returns a simple collector for collecting counts and such like * @param leftToCollect * @param popular * @return */ public TermsAndMaxCount getNewCollector(final int leftToCollect, boolean popular) { final TermsAndMaxCount<T> termsAndMaxCount = new TermsAndMaxCount<T>(); termsAndMaxCount.setTotalCount(leftToCollect); return termsAndMaxCount; } @Override public List<? extends PopularSuggestion> convertToSuggestions(final T[] subjectSuggestions, final T[] extraDocs) { final List<T> returnList = new ArrayList<T>(); //we ignore the first list, as we may have merged it previously returnList.addAll(Arrays.asList(extraDocs)); return returnList; } }