package pl.edu.icm.saos.webapp.judgment.search; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import pl.edu.icm.saos.search.search.model.JudgmentCriteria; import pl.edu.icm.saos.search.search.model.JudgmentSearchResult; import pl.edu.icm.saos.search.search.model.Paging; import pl.edu.icm.saos.search.search.model.SearchResults; import pl.edu.icm.saos.search.search.service.SearchService; import pl.edu.icm.saos.webapp.common.CacheNames; import pl.edu.icm.saos.webapp.judgment.JudgmentCriteriaForm; import pl.edu.icm.saos.webapp.judgment.JudgmentCriteriaFormConverter; /** * @author Łukasz Pawełczak * */ @Service public class JudgmentWebSearchService { @Autowired private SearchService<JudgmentSearchResult, JudgmentCriteria> judgmentsSearchService; @Autowired private JudgmentCriteriaFormConverter judgmentCriteriaFormConverter; @Autowired private PagingConverter pagingConverter; @Autowired private JudgmentSearchResultSortService judgmentSearchResultSortService; @Autowired private CacheManager cacheManager; //------------------------ LOGIC -------------------------- @Cacheable(CacheNames.JUDGMENT_SEARCH_RESULT) public SearchResults<JudgmentSearchResult> search(JudgmentCriteriaForm judgmentCriteriaForm, Pageable pageable) { JudgmentCriteria judgmentCriteria = judgmentCriteriaFormConverter.convert(judgmentCriteriaForm); Paging paging = pagingConverter.convert(pageable); return judgmentSearchResultSortService.sortJudges(judgmentsSearchService.search(judgmentCriteria, paging)); } }