public List<DefaultIssue> loadChanges(DbSession dbSession, Collection<DefaultIssue> issues) { Map<String, List<IssueChangeDto>> changeDtoByIssueKey = dbClient.issueChangeDao() .selectByIssueKeys(dbSession, issues.stream().map(DefaultIssue::key).collect(toList())) .stream() .collect(groupingBy(IssueChangeDto::getIssueKey)); return issues .stream() .peek(i -> setChanges(changeDtoByIssueKey, i)) .collect(toList()); }
@Test public void select_issue_changes_from_issues_keys() { IssueDto issue1 = db.issues().insertIssue(); db.issues().insertChange(issue1); db.issues().insertChange(issue1); db.issues().insertChange(issue1); db.issues().insertChange(issue1); IssueDto issue2 = db.issues().insertIssue(); db.issues().insertChange(issue2); IssueDto issue3 = db.issues().insertIssue(); List<IssueChangeDto> changelog = underTest.selectByIssueKeys(db.getSession(), asList(issue1.getKey(), issue2.getKey(), issue3.getKey())); assertThat(changelog).hasSize(5); assertThat(underTest.selectByIssueKeys(db.getSession(), singletonList("unknown"))).isEmpty(); assertThat(underTest.selectByIssueKeys(db.getSession(), emptyList())).isEmpty(); }
@Test public void update_unknown_key() { IssueDto issue = db.issues().insertIssue(); IssueChangeDto issueChange = db.issues().insertChange(issue); assertThat(underTest.update(db.getSession(), new IssueChangeDto() .setKey("UNKNOWN") .setIssueKey("other_issue_uuid") .setChangeData("new comment") .setUpdatedAt(DateUtils.parseDate("2013-06-30").getTime()))) .isFalse(); assertThat(underTest.selectByIssueKeys(db.getSession(), singletonList(issue.getKey()))) .extracting(IssueChangeDto::getKey, IssueChangeDto::getIssueKey, IssueChangeDto::getChangeData, IssueChangeDto::getChangeType, IssueChangeDto::getIssueChangeCreationDate, IssueChangeDto::getCreatedAt, IssueChangeDto::getUpdatedAt) .containsExactlyInAnyOrder( tuple(issueChange.getKey(), issue.getKey(), issueChange.getChangeData(), issueChange.getChangeType(), issueChange.getIssueChangeCreationDate(), issueChange.getCreatedAt(), issueChange.getUpdatedAt())); }
assertThat(result.getType()).isEqualTo(RuleType.BUG.getDbConstant()); List<IssueChangeDto> changes = dbClient.issueChangeDao().selectByIssueKeys(session, Arrays.asList("ISSUE")); assertThat(changes).extracting(IssueChangeDto::getChangeType).containsExactly(IssueChangeDto.TYPE_COMMENT, IssueChangeDto.TYPE_FIELD_CHANGE); assertThat(context.getStatistics().getAll()).containsOnly(
assertThat(result.getType()).isEqualTo(RuleType.BUG.getDbConstant()); List<IssueChangeDto> changes = dbClient.issueChangeDao().selectByIssueKeys(session, Arrays.asList("ISSUE")); assertThat(changes).extracting(IssueChangeDto::getChangeType).containsExactly(IssueChangeDto.TYPE_COMMENT, IssueChangeDto.TYPE_FIELD_CHANGE); assertThat(context.getStatistics().getAll()).containsOnly(
public List<DefaultIssue> loadForComponentUuidWithChanges(String componentUuid) { try (DbSession dbSession = dbClient.openSession(false)) { List<DefaultIssue> result = loadForComponentUuid(componentUuid, dbSession); Map<String, List<IssueChangeDto>> changeDtoByIssueKey = dbClient.issueChangeDao() .selectByIssueKeys(dbSession, result.stream().map(DefaultIssue::key).collect(toList())) .stream() .collect(groupingBy(IssueChangeDto::getIssueKey)); return result .stream() .peek(i -> setChanges(changeDtoByIssueKey, i)) .collect(toList()); } }
public Map<ShortBranchIssue, DefaultIssue> loadDefaultIssuesWithChanges(Collection<ShortBranchIssue> lightIssues) { if (lightIssues.isEmpty()) { return Collections.emptyMap(); } Map<String, ShortBranchIssue> issuesByKey = lightIssues.stream().collect(Collectors.toMap(ShortBranchIssue::getKey, i -> i)); try (DbSession session = dbClient.openSession(false)) { Map<String, List<IssueChangeDto>> changeDtoByIssueKey = dbClient.issueChangeDao() .selectByIssueKeys(session, issuesByKey.keySet()).stream().collect(groupingBy(IssueChangeDto::getIssueKey)); return dbClient.issueDao().selectByKeys(session, issuesByKey.keySet()) .stream() .map(IssueDto::toDefaultIssue) .peek(i -> ComponentIssuesLoader.setChanges(changeDtoByIssueKey, i)) .collect(toMap(i -> issuesByKey.get(i.key()), i -> i)); } }