private void checkExistingDbEvents(DbSession dbSession, CreateEventRequest request, SnapshotDto analysis) { List<EventDto> dbEvents = dbClient.eventDao().selectByAnalysisUuid(dbSession, analysis.getUuid()); Predicate<EventDto> similarEventExisting = filterSimilarEvents(request); dbEvents.stream() .filter(similarEventExisting) .findAny() .ifPresent(throwException(request)); }
private Consumer<EventDto> checkNonConflictingOtherEvents(DbSession dbSession) { return candidateEvent -> { List<EventDto> dbEvents = dbClient.eventDao().selectByAnalysisUuid(dbSession, candidateEvent.getAnalysisUuid()); Predicate<EventDto> otherEventWithSameName = otherEvent -> !candidateEvent.getUuid().equals(otherEvent.getUuid()) && otherEvent.getName().equals(candidateEvent.getName()); dbEvents.stream() .filter(otherEventWithSameName) .findAny() .ifPresent(event -> { throw new IllegalArgumentException(format("An '%s' event with the same name already exists on analysis '%s'", candidateEvent.getCategory(), candidateEvent.getAnalysisUuid())); }); }; }
@Test public void delete_event() { ComponentDto project = ComponentTesting.newPrivateProjectDto(db.organizations().insert()); SnapshotDto analysis = db.components().insertProjectAndSnapshot(project); db.events().insertEvent(newEvent(analysis).setUuid("E1")); db.events().insertEvent(newEvent(analysis).setUuid("E2")); logInAsProjectAdministrator(project); call("E2"); List<EventDto> events = db.getDbClient().eventDao().selectByAnalysisUuid(db.getSession(), analysis.getUuid()); assertThat(events).extracting(EventDto::getUuid).containsExactly("E1"); }
@Test public void select_by_analysis_uuid() { ComponentDto project = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization()); SnapshotDto analysis = dbTester.components().insertProjectAndSnapshot(project); SnapshotDto otherAnalysis = dbClient.snapshotDao().insert(dbSession, newAnalysis(project)); dbTester.commit(); dbTester.events().insertEvent(newEvent(analysis).setUuid("A1")); dbTester.events().insertEvent(newEvent(otherAnalysis).setUuid("O1")); dbTester.events().insertEvent(newEvent(analysis).setUuid("A2")); dbTester.events().insertEvent(newEvent(otherAnalysis).setUuid("O2")); dbTester.events().insertEvent(newEvent(analysis).setUuid("A3")); dbTester.events().insertEvent(newEvent(otherAnalysis).setUuid("O3")); List<EventDto> result = underTest.selectByAnalysisUuid(dbSession, analysis.getUuid()); assertThat(result).hasSize(3); assertThat(result).extracting(EventDto::getUuid).containsOnly("A1", "A2", "A3"); }
private void checkExistingDbEvents(DbSession dbSession, CreateEventRequest request, SnapshotDto analysis) { List<EventDto> dbEvents = dbClient.eventDao().selectByAnalysisUuid(dbSession, analysis.getUuid()); Predicate<EventDto> similarEventExisting = filterSimilarEvents(request); dbEvents.stream() .filter(similarEventExisting) .findAny() .ifPresent(throwException(request)); }
private Consumer<EventDto> checkNonConflictingOtherEvents(DbSession dbSession) { return candidateEvent -> { List<EventDto> dbEvents = dbClient.eventDao().selectByAnalysisUuid(dbSession, candidateEvent.getAnalysisUuid()); Predicate<EventDto> otherEventWithSameName = otherEvent -> !candidateEvent.getUuid().equals(otherEvent.getUuid()) && otherEvent.getName().equals(candidateEvent.getName()); dbEvents.stream() .filter(otherEventWithSameName) .findAny() .ifPresent(event -> { throw new IllegalArgumentException(format("An '%s' event with the same name already exists on analysis '%s'", candidateEvent.getCategory(), candidateEvent.getAnalysisUuid())); }); }; }