From 442d1c5dda4c06db78389d0c29a537077f45b3d5 Mon Sep 17 00:00:00 2001 From: Michael Gillian Date: Fri, 3 Nov 2023 21:21:55 -0700 Subject: [PATCH] =?UTF-8?q?feat/AnalyticsEventUpdate=20add=20new=20feature?= =?UTF-8?q?s=20to=20AnalyticsPortalEvent=20an=E2=80=A6=20(#2695)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat/AnalyticsEventUpdate add new features to AnalyticsPortalEvent and factory * feat/AnalyticEventUpdate fix java format errors --- .../portal/events/AnalyticsPortalEvent.java | 39 ++++++++++++++++--- .../portal/events/PortalEventFactoryImpl.java | 27 ++++++++++--- 2 files changed, 56 insertions(+), 10 deletions(-) diff --git a/uPortal-events/src/main/java/org/apereo/portal/events/AnalyticsPortalEvent.java b/uPortal-events/src/main/java/org/apereo/portal/events/AnalyticsPortalEvent.java index 402e833233a..1e4640051e4 100644 --- a/uPortal-events/src/main/java/org/apereo/portal/events/AnalyticsPortalEvent.java +++ b/uPortal-events/src/main/java/org/apereo/portal/events/AnalyticsPortalEvent.java @@ -14,9 +14,8 @@ */ package org.apereo.portal.events; -import java.util.Calendar; +import java.time.ZonedDateTime; import java.util.Date; -import java.util.TimeZone; import org.apereo.portal.security.IPerson; public class AnalyticsPortalEvent extends PortalEvent { @@ -26,13 +25,19 @@ public class AnalyticsPortalEvent extends PortalEvent { private final Date eventDate; private final String type; private final String url; + private final String tabName; + private final String portletId; + private final String portletName; AnalyticsPortalEvent() { super(); user = "UNKNOWN"; - eventDate = Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTime(); + eventDate = Date.from(ZonedDateTime.now().toInstant()); type = "UNKNOWN"; url = ""; + tabName = ""; + portletId = ""; + portletName = ""; } AnalyticsPortalEvent( @@ -40,12 +45,18 @@ public class AnalyticsPortalEvent extends PortalEvent { IPerson user, Date eventDate, String type, - String url) { + String url, + String tabName, + String portletId, + String portletName) { super(portalEventBuilder); this.user = user.getUserName(); this.eventDate = eventDate; this.type = type; this.url = url; + this.tabName = tabName; + this.portletId = portletId; + this.portletName = portletName; } public String getUser() { @@ -64,6 +75,18 @@ public String getUrl() { return url; } + public String getTabName() { + return tabName; + } + + public String getPortletId() { + return portletId; + } + + public String getPortletName() { + return portletName; + } + @Override public String toString() { return super.toString() @@ -74,6 +97,12 @@ public String toString() { + ", type=" + type + ", url=" - + url; + + url + + ", tabName=" + + tabName + + ", portletId=" + + portletId + + ", portletName=" + + portletName; } } diff --git a/uPortal-events/src/main/java/org/apereo/portal/events/PortalEventFactoryImpl.java b/uPortal-events/src/main/java/org/apereo/portal/events/PortalEventFactoryImpl.java index 6b1ef80ca24..aa25bee1557 100644 --- a/uPortal-events/src/main/java/org/apereo/portal/events/PortalEventFactoryImpl.java +++ b/uPortal-events/src/main/java/org/apereo/portal/events/PortalEventFactoryImpl.java @@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; @@ -26,7 +27,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.TimeZone; import java.util.concurrent.atomic.AtomicReference; import javax.portlet.PortletMode; import javax.portlet.WindowState; @@ -575,14 +575,31 @@ public void publishAnalyticsPortalEvents( IPerson person) { final PortalEvent.PortalEventBuilder eventBuilder = this.createPortalEventBuilder(source, request); - Date eventDate = Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTime(); + Date eventDate = Date.from(ZonedDateTime.now().toInstant()); String rawEventType = (String) analyticsData.computeIfAbsent("type", key -> "UNKNOWN"); // throws IllegalArgumentException String eventType = InputValidator.validateAsWordCharacters(rawEventType, "eventType"); - String rawEventUrl = (String) analyticsData.computeIfAbsent("url", key -> "UNKNOWN"); - String eventUrl = InputValidator.validateAsURL(rawEventUrl); + String rawEventUrl = (String) analyticsData.computeIfAbsent("url", key -> ""); + String eventUrl = + StringUtils.isBlank(rawEventUrl) ? "" : InputValidator.validateAsURL(rawEventUrl); + String rawTabName = (String) analyticsData.computeIfAbsent("tab_name", key -> "UNKNOWN"); + String tabName = rawTabName; + String rawPortletId = + (String) analyticsData.computeIfAbsent("portlet_id", key -> "UNKNOWN"); + String portletId = rawPortletId; + String rawPortletName = + (String) analyticsData.computeIfAbsent("portlet_name", key -> "UNKNOWN"); + String portletName = rawPortletName; final AnalyticsPortalEvent event = - new AnalyticsPortalEvent(eventBuilder, person, eventDate, eventType, eventUrl); + new AnalyticsPortalEvent( + eventBuilder, + person, + eventDate, + eventType, + eventUrl, + tabName, + portletId, + portletName); this.applicationEventPublisher.publishEvent(event); }