diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/BeaconEventRepository.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/BeaconEventRepository.java index 966b295cf..a6e2ee483 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/BeaconEventRepository.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/BeaconEventRepository.java @@ -2,6 +2,15 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.beacon.BeaconEvent; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.Date; +import java.util.List; public interface BeaconEventRepository extends JpaRepository { + + @Query(value = "SELECT be FROM BeaconEvent be WHERE be.eventTime >= :sinceDate") + List getEventsSince(@Param("sinceDate") Date sinceDate); + } \ No newline at end of file diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/BeaconDataServiceImpl.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/BeaconDataServiceImpl.java index 962b9e6e1..45b6ff2ff 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/BeaconDataServiceImpl.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/BeaconDataServiceImpl.java @@ -16,13 +16,17 @@ import edu.internet2.tier.shibboleth.admin.ui.service.beacon.BeaconDetail; import edu.internet2.tier.shibboleth.admin.ui.service.beacon.ShibuiDetail; import lombok.SneakyThrows; +import org.apache.commons.lang.time.DateUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.boot.actuate.health.HealthEndpoint; import org.springframework.boot.actuate.info.InfoEndpoint; -import org.springframework.stereotype.Service; import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; public class BeaconDataServiceImpl implements IBeaconDataService { private ObjectMapper mapper; @@ -66,10 +70,16 @@ public BeaconDataServiceImpl(String productName, InfoEndpoint info, String tierV @Override @SneakyThrows public String getBeaconData() { - BeaconDetail detail = new BeaconDetail().setTbProduct(productName).setTbProductVersion(version).setTbTIERRelease(tierVersion).setShibui(getShibuiDetailData()); + BeaconDetail detail = new BeaconDetail().setTbProduct(productName).setTbProductVersion(version).setTbTIERRelease(tierVersion).setShibui(getShibuiDetailData()).setBeaconEvents(getBeaconEvents()); return mapper.writeValueAsString(detail); } + private Map getBeaconEvents() { + List results = beaconEventRepository.getEventsSince(DateUtils.addDays(new Date(), -1)); + Map counts = results.stream().collect(Collectors.groupingBy(e -> e.getEventName(), Collectors.counting())); + return counts; + } + @Override public void addBeaconEvent(BeaconEvent event) { beaconEventRepository.save(event); diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/beacon/BeaconDetail.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/beacon/BeaconDetail.java index bef94540f..78503cf50 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/beacon/BeaconDetail.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/beacon/BeaconDetail.java @@ -1,8 +1,12 @@ package edu.internet2.tier.shibboleth.admin.ui.service.beacon; +import edu.internet2.tier.shibboleth.admin.ui.domain.beacon.BeaconEvent; import lombok.Data; import lombok.experimental.Accessors; +import java.util.List; +import java.util.Map; + @Data @Accessors(chain = true) public class BeaconDetail { @@ -16,4 +20,6 @@ public class BeaconDetail { private String tbMaintainer = "Unicon"; private ShibuiDetail shibui; + + private Map beaconEvents; } \ No newline at end of file