From 784cfbbaf48bcccf129e7abfb624c86265ca4fc0 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Thu, 2 Nov 2023 16:16:19 -0500 Subject: [PATCH] CE-604 Add overloads that take ZoneId so caller can work with a custom zone id instead of session zone id --- .../dashboard/widgets/DateTimeGroupBy.java | 51 +++++++++++++++++-- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/DateTimeGroupBy.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/DateTimeGroupBy.java index 9f5ed109..f69596af 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/DateTimeGroupBy.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/DateTimeGroupBy.java @@ -168,7 +168,18 @@ public enum DateTimeGroupBy *******************************************************************************/ public String makeSelectedString(Instant time) { - ZonedDateTime zoned = time.atZone(ValueUtils.getSessionOrInstanceZoneId()); + return (makeSelectedString(time, ValueUtils.getSessionOrInstanceZoneId())); + } + + + + /******************************************************************************* + ** Make an Instant into a string that will match what came out of the database's + ** DATE_FORMAT() function + *******************************************************************************/ + public String makeSelectedString(Instant time, ZoneId zoneId) + { + ZonedDateTime zoned = time.atZone(zoneId); if(this == WEEK) { @@ -192,7 +203,17 @@ public enum DateTimeGroupBy *******************************************************************************/ public String makeHumanString(Instant instant) { - ZonedDateTime zoned = instant.atZone(ValueUtils.getSessionOrInstanceZoneId()); + return (makeHumanString(instant, ValueUtils.getSessionOrInstanceZoneId())); + } + + + + /******************************************************************************* + ** Make a string to show to a user + *******************************************************************************/ + public String makeHumanString(Instant instant, ZoneId zoneId) + { + ZonedDateTime zoned = instant.atZone(zoneId); if(this.equals(WEEK)) { DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("M'/'d"); @@ -225,10 +246,20 @@ public enum DateTimeGroupBy /******************************************************************************* ** *******************************************************************************/ - @SuppressWarnings("checkstyle:indentation") public Instant roundDown(Instant instant) { - ZonedDateTime zoned = instant.atZone(ValueUtils.getSessionOrInstanceZoneId()); + return roundDown(instant, ValueUtils.getSessionOrInstanceZoneId()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @SuppressWarnings("checkstyle:indentation") + public Instant roundDown(Instant instant, ZoneId zoneId) + { + ZonedDateTime zoned = instant.atZone(zoneId); return switch(this) { case YEAR -> zoned.with(TemporalAdjusters.firstDayOfYear()).truncatedTo(ChronoUnit.DAYS).toInstant(); @@ -253,7 +284,17 @@ public enum DateTimeGroupBy *******************************************************************************/ public Instant increment(Instant instant) { - ZonedDateTime zoned = instant.atZone(ValueUtils.getSessionOrInstanceZoneId()); + return (increment(instant, ValueUtils.getSessionOrInstanceZoneId())); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public Instant increment(Instant instant, ZoneId zoneId) + { + ZonedDateTime zoned = instant.atZone(zoneId); return (zoned.plus(noOfChronoUnitsToAdd, chronoUnitToAdd).toInstant()); } }