package org.zalando.catwatch.backend.repo.builder; import org.zalando.catwatch.backend.model.Statistics; import org.zalando.catwatch.backend.repo.StatisticsRepository; import java.util.Date; import java.util.UUID; import static java.time.Instant.now; import static java.time.temporal.ChronoUnit.DAYS; import static org.zalando.catwatch.backend.repo.builder.BuilderUtil.*; public class StatisticsBuilder { private Statistics statistics; private StatisticsRepository statisticsRepository; public StatisticsBuilder(StatisticsRepository statisticsRepository) { this.statisticsRepository = statisticsRepository; statistics = new Statistics(freshId(), randomDate()); statistics.setPrivateProjectCount(random(20, 70)); statistics.setPublicProjectCount(random(50, 120)); statistics.setMembersCount(random(1, 20)); statistics.setTeamsCount(random(1, 4)); statistics.setAllContributorsCount(random(1, 50)); statistics.setExternalContributorsCount(random(0, statistics.getAllContributorsCount())); statistics.setAllStarsCount(random(1, 5)); statistics.setAllForksCount(random(1, 10)); statistics.setAllSizeCount(random(1, 1000000)); statistics.setProgramLanguagesCount(random(1, 20)); statistics.setTagsCount(random(1, 20)); statistics.setOrganizationName("" + UUID.randomUUID()); } public StatisticsBuilder organizationName(String organizationName) { statistics.setOrganizationName(organizationName); return this; } public StatisticsBuilder publicProjectCount(int publicProjectCount) { statistics.setPublicProjectCount(publicProjectCount); return this; } public StatisticsBuilder allStarsCount(int allStarsCount) { statistics.setAllStarsCount(allStarsCount); return this; } public StatisticsBuilder allForksCount(int allForksCount) { statistics.setAllForksCount(allForksCount); return this; } public StatisticsBuilder programLanguagesCount(int programLanguagesCount) { statistics.setProgramLanguagesCount(programLanguagesCount); return this; } public StatisticsBuilder allContributersCount(int contributersCount) { statistics.setAllContributorsCount(contributersCount); return this; } public StatisticsBuilder externalContributorsCount(int externalContributorsCount) { statistics.setExternalContributorsCount(externalContributorsCount); return this; } public StatisticsBuilder allSize(int sizeCount) { statistics.setAllSizeCount(sizeCount); return this; } public StatisticsBuilder membersCount(int membersCount) { statistics.setMembersCount(membersCount); return this; } public StatisticsBuilder privateProjectCount(int privateProjectCount) { statistics.setPrivateProjectCount(privateProjectCount); return this; } public StatisticsBuilder tagsCount(int tagsCount) { statistics.setTagsCount(tagsCount); return this; } public StatisticsBuilder teamsCount(int teamsCount) { statistics.setTeamsCount(teamsCount); return this; } public StatisticsBuilder snapshotDate(Date snapshotDate) { statistics.setSnapshotDate(snapshotDate); return this; } public StatisticsBuilder days(int numDaysBeforeNow) { statistics.getKey().setSnapshotDate(Date.from(now().minus(numDaysBeforeNow, DAYS))); return this; } public Statistics create() { Statistics s = new Statistics(statistics.getId(), statistics.getSnapshotDate()); s.setPrivateProjectCount(statistics.getPrivateProjectCount()); s.setPublicProjectCount(statistics.getPublicProjectCount()); s.setMembersCount(statistics.getMembersCount()); s.setTeamsCount(statistics.getTeamsCount()); s.setAllContributorsCount(statistics.getAllContributorsCount()); s.setExternalContributorsCount(statistics.getExternalContributorsCount()); s.setAllStarsCount(statistics.getAllStarsCount()); s.setAllForksCount(statistics.getAllForksCount()); s.setAllSizeCount(statistics.getAllSizeCount()); s.setProgramLanguagesCount(statistics.getProgramLanguagesCount()); s.setTagsCount(statistics.getTagsCount()); s.setOrganizationName(statistics.getOrganizationName()); return s; } public Statistics save() { return statisticsRepository.save(create()); } }