diff --git a/build.gradle b/build.gradle index 7066710e7..da757a755 100644 --- a/build.gradle +++ b/build.gradle @@ -54,7 +54,7 @@ dependencies { } else { compile 'com.github.reportportal:commons:07566b8e' compile 'com.github.reportportal:commons-rules:01ec4d17' - compile 'com.github.reportportal:commons-model:83f012f' + compile 'com.github.reportportal:commons-model:19ebad0' } //https://nvd.nist.gov/vuln/detail/CVE-2020-10683 (dom4j 2.1.3 version dependency) AND https://nvd.nist.gov/vuln/detail/CVE-2019-14900 diff --git a/src/main/java/com/epam/ta/reportportal/commons/EntityUtils.java b/src/main/java/com/epam/ta/reportportal/commons/EntityUtils.java index 6c83b4d20..7aa387be2 100644 --- a/src/main/java/com/epam/ta/reportportal/commons/EntityUtils.java +++ b/src/main/java/com/epam/ta/reportportal/commons/EntityUtils.java @@ -21,6 +21,7 @@ import com.google.common.base.Preconditions; import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.ZoneOffset; import java.util.Date; import java.util.function.Function; @@ -38,6 +39,15 @@ public class EntityUtils { date).map(d -> LocalDateTime.ofInstant(d.toInstant(), ZoneOffset.UTC )).orElse(null); + + public static final Function TO_UTC_LOCAL_DATE_TIME = + localDateTime -> ofNullable(localDateTime) + .map(date -> date + .atZone(ZoneId.systemDefault()) + .withZoneSameInstant(ZoneOffset.UTC) + .toLocalDateTime()) + .orElse(null); + public static final Function TO_DATE = localDateTime -> ofNullable( localDateTime).map(l -> Date.from(l.atZone( ZoneOffset.UTC).toInstant())).orElse(null); diff --git a/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java b/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java index 367ff61d4..9a24c4222 100644 --- a/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java +++ b/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java @@ -17,6 +17,7 @@ package com.epam.ta.reportportal.commons; import static com.epam.ta.reportportal.commons.EntityUtils.TO_LOCAL_DATE_TIME; +import static com.epam.ta.reportportal.commons.EntityUtils.TO_UTC_LOCAL_DATE_TIME; import static com.epam.ta.reportportal.commons.querygen.constant.LaunchCriteriaConstant.CRITERIA_LAUNCH_MODE; import com.epam.ta.reportportal.commons.querygen.FilterCondition; @@ -62,6 +63,14 @@ public static Predicate sameTimeOrLater(final LocalDateTime than) { }; } + public static Predicate sameLocalDateTimeOrLater(final LocalDateTime than) { + com.google.common.base.Preconditions.checkNotNull(than, ErrorType.BAD_REQUEST_ERROR); + return date -> { + LocalDateTime localDateTime = TO_UTC_LOCAL_DATE_TIME.apply(date); + return localDateTime.isAfter(than) || localDateTime.isEqual(than); + }; + } + public static Predicate statusIn(final StatusEnum... statuses) { return input -> ArrayUtils.contains(statuses, input); } diff --git a/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java b/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java index 747a87acc..d640621f3 100644 --- a/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java +++ b/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java @@ -17,7 +17,6 @@ package com.epam.ta.reportportal.dao.util; -import static com.epam.ta.reportportal.commons.EntityUtils.TO_DATE; import static com.epam.ta.reportportal.commons.querygen.QueryBuilder.STATISTICS_KEY; import static com.epam.ta.reportportal.commons.querygen.constant.GeneralCriteriaConstant.CRITERIA_END_TIME; import static com.epam.ta.reportportal.commons.querygen.constant.GeneralCriteriaConstant.CRITERIA_LAST_MODIFIED; @@ -251,8 +250,7 @@ public static void consumeIfNotNull(K key, V value, BiConsumer cons activityResource.setActionType(r.get(ACTIVITY.EVENT_NAME)); activityResource.setObjectType(r.get(ACTIVITY.OBJECT_TYPE)); activityResource.setObjectName(r.get(ACTIVITY.OBJECT_NAME)); - activityResource.setLastModified( - TO_DATE.apply(r.get(ACTIVITY.CREATED_AT, LocalDateTime.class))); + activityResource.setLastModified(r.get(ACTIVITY.CREATED_AT, LocalDateTime.class)); activityResource.setLoggedObjectId(r.get(ACTIVITY.OBJECT_ID)); String detailsJson = r.get(ACTIVITY.DETAILS, String.class); ofNullable(detailsJson).ifPresent(s -> {