bug4371 extend the event if necessary, to enclosure newly added tracks

This commit is contained in:
Kai Börnert committed 2018-04-17 11:43:03 +02:00
1 parent 386858a6fe
commit af71ab1c7e
1 file changed
+18 -1
@@ -16,6 +16,8 @@ import java.util.Locale;
import java.util.Map;
import java.util.UUID;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
import org.apache.commons.fileupload.FileItem;
import org.osgi.framework.BundleContext;
@@ -266,8 +268,9 @@ public class ExpeditionAllInOneImporter {
if (foundEventAndLeaderboardGroup == null) {
return new ImporterResult(serverStringMessages.get(uiLocale, "allInOneErrorInvalidLeaderBoardEventLink"));
}
// TODO should we extend the time range of the event to ensure that it includes the newly imported tracks' time ranges?
eventId = foundEventAndLeaderboardGroup.getA().getId();
ensureEventLongEnough(firstFixAt, lastFixAt, eventId);
leaderboardGroupName = foundEventAndLeaderboardGroup.getB().getName();
if (importMode == ImportMode.NEW_COMPETITOR) {
@@ -340,6 +343,20 @@ public class ExpeditionAllInOneImporter {
}
}
private void ensureEventLongEnough(TimePoint firstFixAt, TimePoint lastFixAt, UUID eventId) {
Event event = service.getEvent(eventId);
TimePoint startDate = event.getStartDate();
if(firstFixAt.before(startDate)) {
startDate = firstFixAt;
}
TimePoint endDate = event.getEndDate();
if(lastFixAt.after(endDate)) {
endDate = lastFixAt;
}
Iterable<UUID> leaderboardGroups = StreamSupport.stream(event.getLeaderboardGroups().spliterator(), false).map(t -> t.getId()).collect(Collectors.toList());
service.updateEvent(eventId, event.getName(), event.getDescription(), startDate, endDate, event.getVenue().getName(), event.isPublic(), leaderboardGroups, event.getOfficialWebsiteURL(), event.getBaseURL(), event.getSailorsInfoWebsiteURLs(), event.getImages(), event.getVideos(),event.getWindFinderReviewedSpotsCollectionIds());
}
private Pair<Event, LeaderboardGroup> findEventAndLeaderboardGroupForExistingLeaderboard(final Leaderboard leaderboard) {
for (Event event : service.getAllEvents()) {
for (LeaderboardGroup leaderboardGroup : event.getLeaderboardGroups()) {