final int distroPageSize = 10;
Map<Repo, Map<String, Distribution>> reposDistros = new HashMap<Repo, Map<String, Distribution>>();
RepoManagerLocal repoMgr = LookupUtil.getRepoManagerLocal();
PageControl repoPC = new PageControl(0, repoPageSize);
int totalReposProcessed = 0;
while (true) {
PageList<Repo> repoPage = repoMgr.findRepos(LookupUtil.getSubjectManager().getOverlord(), repoPC);
if (repoPage.size() <= 0) {
break;
}
for (Repo repoPageItem : repoPage) {
if (!repoPageItem.isCandidate()) {
Map<String, Distribution> distrosMap = reposDistros.get(repoPageItem);
if (distrosMap == null) {
distrosMap = new HashMap<String, Distribution>();
reposDistros.put(repoPageItem, distrosMap);
}
PageControl distroPC = new PageControl(0, distroPageSize);
int totalDistrosProcessed = 0;
while (true) {
PageList<Distribution> distroPage = repoMgr.findAssociatedDistributions(LookupUtil
.getSubjectManager().getOverlord(), repoPageItem.getId(), distroPC);
if (distroPage.size() <= 0) {
break;
}
for (Distribution distroPageItem : distroPage) {
distrosMap.put(distroPageItem.getLabel(), distroPageItem);
}
totalDistrosProcessed += distroPage.size();
if (totalDistrosProcessed >= distroPage.getTotalSize()) {
break; // the previous page that was processed was the last one
}
distroPC.setPageNumber(distroPC.getPageNumber() + 1); // advance to the next distro page
}
}
}
totalReposProcessed += repoPage.size();