private SnapshotDto getAnalysis(DbSession dbSession, EventDto event) { return dbClient.snapshotDao().selectByUuid(dbSession, event.getAnalysisUuid()) .orElseThrow(() -> new IllegalStateException(format("Analysis '%s' is not found", event.getAnalysisUuid()))); }
private Optional<Period> newPeriod(DbSession dbSession, String periodMode, EventDto previousVersion) { Optional<Period> period = dbClient.snapshotDao().selectByUuid(dbSession, previousVersion.getAnalysisUuid()) .map(dto -> newPeriod(periodMode, previousVersion.getName(), dto)); if (!period.isPresent()) { throw new IllegalStateException(format("Analysis '%s' for version event '%s' has been deleted", previousVersion.getAnalysisUuid(), previousVersion.getName())); } return period; }
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())); }); }; }
private void deleteEvent(DbSession dbSession, EventDto dbEvent) { if (VERSION.getLabel().equals(dbEvent.getCategory())) { SnapshotDto analysis = dbClient.snapshotDao().selectByUuid(dbSession, dbEvent.getAnalysisUuid()) .orElseThrow(() -> new IllegalStateException(format("Analysis '%s' not found", dbEvent.getAnalysisUuid()))); checkArgument(!analysis.getLast(), "Cannot delete the version event of last analysis"); analysis.setVersion(null); dbClient.snapshotDao().update(dbSession, analysis); } dbClient.eventDao().delete(dbSession, dbEvent.getUuid()); dbSession.commit(); }
private static Function<EventDto, UpdateEventResponse> toWsResponse() { return dbEvent -> { Event.Builder wsEvent = Event.newBuilder() .setKey(dbEvent.getUuid()) .setCategory(fromLabel(dbEvent.getCategory()).name()) .setAnalysis(dbEvent.getAnalysisUuid()); ofNullable(dbEvent.getName()).ifPresent(wsEvent::setName); ofNullable(dbEvent.getDescription()).ifPresent(wsEvent::setDescription); return UpdateEventResponse.newBuilder().setEvent(wsEvent).build(); }; }
@Test public void select_by_component_uuid() { dbTester.prepareDbUnit(getClass(), "shared.xml"); List<EventDto> dtos = underTest.selectByComponentUuid(dbTester.getSession(), "ABCD"); assertThat(dtos).hasSize(3); dtos = underTest.selectByComponentUuid(dbTester.getSession(), "BCDE"); assertThat(dtos).hasSize(1); EventDto dto = dtos.get(0); assertThat(dto.getId()).isEqualTo(4L); assertThat(dto.getUuid()).isEqualTo("E4"); assertThat(dto.getAnalysisUuid()).isEqualTo("uuid_1"); assertThat(dto.getComponentUuid()).isEqualTo("BCDE"); assertThat(dto.getName()).isEqualTo("1.0"); assertThat(dto.getCategory()).isEqualTo("Version"); assertThat(dto.getDescription()).isEqualTo("Version 1.0"); assertThat(dto.getData()).isEqualTo("some data"); assertThat(dto.getDate()).isEqualTo(1413407091086L); assertThat(dto.getCreatedAt()).isEqualTo(1225630680000L); }
private static CreateEventResponse toCreateEventResponse(EventDto dbEvent) { Event.Builder wsEvent = Event.newBuilder() .setKey(dbEvent.getUuid()) .setCategory(fromLabel(dbEvent.getCategory()).name()) .setAnalysis(dbEvent.getAnalysisUuid()) .setName(dbEvent.getName()); ofNullable(dbEvent.getDescription()).ifPresent(wsEvent::setDescription); return CreateEventResponse.newBuilder().setEvent(wsEvent).build(); }
@Test public void ws_response_with_updated_name() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); EventDto originalEvent = db.events().insertEvent(newEvent(analysis).setUuid("E1").setName("Original Name")); ProjectAnalyses.Event result = call("E1", "name").getEvent(); assertThat(result.getName()).isEqualTo("name"); assertThat(result.hasDescription()).isFalse(); assertThat(result.getCategory()).isEqualTo(OTHER.name()); assertThat(result.getAnalysis()).isEqualTo(originalEvent.getAnalysisUuid()); assertThat(result.getKey()).isEqualTo("E1"); }
@Test public void test_getters_and_setters() { EventDto dto = new EventDto() .setId(1L) .setAnalysisUuid("uuid_1") .setComponentUuid("ABCD") .setName("1.0") .setCategory("Version") .setDescription("Version 1.0") .setData("some data") .setDate(1413407091086L) .setCreatedAt(1225630680000L); assertThat(dto.getId()).isEqualTo(1L); assertThat(dto.getAnalysisUuid()).isEqualTo("uuid_1"); assertThat(dto.getComponentUuid()).isEqualTo("ABCD"); assertThat(dto.getName()).isEqualTo("1.0"); assertThat(dto.getCategory()).isEqualTo("Version"); assertThat(dto.getDescription()).isEqualTo("Version 1.0"); assertThat(dto.getData()).isEqualTo("some data"); assertThat(dto.getCreatedAt()).isEqualTo(1225630680000L); }
private SnapshotDto getAnalysis(DbSession dbSession, EventDto event) { return dbClient.snapshotDao().selectByUuid(dbSession, event.getAnalysisUuid()) .orElseThrow(() -> new IllegalStateException(format("Analysis '%s' is not found", event.getAnalysisUuid()))); }
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())); }); }; }
private void deleteEvent(DbSession dbSession, EventDto dbEvent) { if (VERSION.getLabel().equals(dbEvent.getCategory())) { SnapshotDto analysis = dbClient.snapshotDao().selectByUuid(dbSession, dbEvent.getAnalysisUuid()) .orElseThrow(() -> new IllegalStateException(format("Analysis '%s' not found", dbEvent.getAnalysisUuid()))); checkArgument(!analysis.getLast(), "Cannot delete the version event of last analysis"); analysis.setVersion(null); dbClient.snapshotDao().update(dbSession, analysis); } dbClient.eventDao().delete(dbSession, dbEvent.getUuid()); dbSession.commit(); }
private static Function<EventDto, UpdateEventResponse> toWsResponse() { return dbEvent -> { Event.Builder wsEvent = Event.newBuilder() .setKey(dbEvent.getUuid()) .setCategory(fromLabel(dbEvent.getCategory()).name()) .setAnalysis(dbEvent.getAnalysisUuid()); setNullable(dbEvent.getName(), wsEvent::setName); setNullable(dbEvent.getDescription(), wsEvent::setDescription); return UpdateEventResponse.newBuilder().setEvent(wsEvent).build(); }; }
private static CreateEventResponse toCreateEventResponse(EventDto dbEvent) { Event.Builder wsEvent = Event.newBuilder() .setKey(dbEvent.getUuid()) .setCategory(fromLabel(dbEvent.getCategory()).name()) .setAnalysis(dbEvent.getAnalysisUuid()) .setName(dbEvent.getName()); setNullable(dbEvent.getDescription(), wsEvent::setDescription); return CreateEventResponse.newBuilder().setEvent(wsEvent).build(); }