Skip to content

Commit

Permalink
[TH2-5165] corrected after review
Browse files Browse the repository at this point in the history
  • Loading branch information
Nikita-Smirnov-Exactpro committed Mar 1, 2024
1 parent 9021c09 commit 121d11c
Showing 1 changed file with 13 additions and 10 deletions.
23 changes: 13 additions & 10 deletions cradle-core/src/main/java/com/exactpro/cradle/CradleStorage.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,14 @@
import java.io.IOException;
import java.time.Instant;
import java.time.ZoneOffset;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
Expand All @@ -68,6 +68,7 @@
import java.util.stream.Collectors;

import static com.exactpro.cradle.Order.DIRECT;
import static com.exactpro.cradle.Order.REVERSE;
import static com.exactpro.cradle.resultset.EmptyResultSet.emptyResultSet;

/**
Expand Down Expand Up @@ -1547,20 +1548,22 @@ public final CompletableFuture<Void> updateEventStatusAsync(StoredTestEvent even
}

private Instant checkCollisionAndGetPageEnd(BookInfo book, PageToAdd page, Instant defaultPageEnd) throws CradleStorageException {
Iterator<PageInfo> pageIterator = book.getPages(page.getStart().minus(1, ChronoUnit.NANOS), null, DIRECT);
PageInfo pageInBookBeforeStart = pageIterator.hasNext() ? pageIterator.next() : null;
Iterator<PageInfo> reverseIterator = book.getPages(null, page.getStart(), REVERSE);
PageInfo pageBefore = reverseIterator.hasNext() ? reverseIterator.next() : null;

if (pageInBookBeforeStart != null
&& pageInBookBeforeStart.getEnded() != null
&& pageInBookBeforeStart.getEnded().isAfter(page.getStart())) {
if (pageBefore != null
&& pageBefore.getEnded() != null
&& pageBefore.getEnded().isAfter(page.getStart())) {
throw new CradleStorageException(String.format("Can't add new page in book %s, it collided with current page %s %s-%s",
book.getId().getName(),
pageInBookBeforeStart.getName(),
pageInBookBeforeStart.getStarted(),
pageInBookBeforeStart.getEnded()));
pageBefore.getName(),
pageBefore.getStarted(),
pageBefore.getEnded()));
}

return pageIterator.hasNext() ? pageIterator.next().getStarted() : defaultPageEnd;
Iterator<PageInfo> directIterator = book.getPages(page.getStart(), null, DIRECT);
PageInfo pageAfter = directIterator.hasNext() ? directIterator.next() : null;
return pageAfter == null || Objects.equals(pageAfter, pageBefore) ? defaultPageEnd : pageAfter.getStarted();
}

private List<PageInfo> checkAndConvertPages(List<PageToAdd> pages, BookInfo book) throws CradleStorageException {
Expand Down

0 comments on commit 121d11c

Please sign in to comment.