package pl.edu.icm.saos.enrichment.reference; import java.util.List; /** * Implementation of {@link TagJudgmentReferenceRemover} adding ability * to divide removing of judgment references into pages. * * @author madryk */ public class PageableDelegatingJudgmentReferenceRemover implements TagJudgmentReferenceRemover { private TagJudgmentReferenceRemover delegatedJudgmentReferenceRemover; private int pageSize = 1000; //------------------------ CONSTRUCTORS -------------------------- public PageableDelegatingJudgmentReferenceRemover(TagJudgmentReferenceRemover delegatedJudgmentReferenceRemover) { this.delegatedJudgmentReferenceRemover = delegatedJudgmentReferenceRemover; } //------------------------ LOGIC -------------------------- @Override public void removeReferences(List<Long> judgmentIds) { int pageNr = 0; while (true) { int fromIndex = pageNr * pageSize; int toIndex = pageNr * pageSize + pageSize; if (fromIndex >= judgmentIds.size()) { break; } if (toIndex > judgmentIds.size()) { toIndex = judgmentIds.size(); } delegatedJudgmentReferenceRemover.removeReferences(judgmentIds.subList(fromIndex, toIndex)); pageNr++; } } //------------------------ SETTERS -------------------------- public void setPageSize(int pageSize) { this.pageSize = pageSize; } }