From 4d18dbe0a4a3fb60333156ebe54893c09d1a899f Mon Sep 17 00:00:00 2001 From: Nixon <116766914+nixon124@users.noreply.github.com> Date: Thu, 29 Feb 2024 08:08:56 -0500 Subject: [PATCH] Move getDate from DropOffUtil to TimeUtil (#711) --- src/main/java/emissary/output/DropOffUtil.java | 12 +++--------- src/main/java/emissary/util/TimeUtil.java | 7 +++++++ src/test/java/emissary/util/TimeUtilTest.java | 5 +++++ 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/emissary/output/DropOffUtil.java b/src/main/java/emissary/output/DropOffUtil.java index 178fdcddbe..1c150298e8 100755 --- a/src/main/java/emissary/output/DropOffUtil.java +++ b/src/main/java/emissary/output/DropOffUtil.java @@ -23,9 +23,7 @@ import java.security.SecureRandom; import java.text.SimpleDateFormat; import java.time.Instant; -import java.time.ZoneId; import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.util.ArrayList; import java.util.Collection; @@ -47,6 +45,7 @@ import static emissary.core.constants.Parameters.FILE_ABSOLUTEPATH; import static emissary.core.constants.Parameters.ORIGINAL_FILENAME; import static emissary.util.TimeUtil.DATE_ISO_8601; +import static emissary.util.TimeUtil.getDateOrdinalWithTime; public class DropOffUtil { protected static final Logger logger = LoggerFactory.getLogger(DropOffUtil.class); @@ -74,7 +73,6 @@ public class DropOffUtil { // Items for generating random filenames protected static SecureRandom prng = new SecureRandom(); - protected static final DateTimeFormatter DATE_PATTERN = DateTimeFormatter.ofPattern("yyyyDDDHHmmss"); protected static final byte[] ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".getBytes(); protected static String prefix = "TXT"; protected boolean uuidInOutputFilenames = true; @@ -165,18 +163,14 @@ protected void configure(final Configurator configG) { */ public String generateBuildFileName() { if (this.uuidInOutputFilenames) { - return (prefix + getDate(new Date()) + UUID.randomUUID()); + return (prefix + getDateOrdinalWithTime(new Date()) + UUID.randomUUID()); } else { // Using some constants plus yyyyJJJhhmmss plus random digit, // letter, digit - return (prefix + getDate(new Date()) + prng.nextInt(10) + ALPHABET[prng.nextInt(ALPHABET.length)] + prng.nextInt(10)); + return (prefix + getDateOrdinalWithTime(new Date()) + prng.nextInt(10) + ALPHABET[prng.nextInt(ALPHABET.length)] + prng.nextInt(10)); } } - private static String getDate(final Date d) { - return DATE_PATTERN.format(d.toInstant().atZone(ZoneId.systemDefault())); - } - /** * Drop off often needs to make way for a file it wants to write Do so and return the name of the file that can now be * written diff --git a/src/main/java/emissary/util/TimeUtil.java b/src/main/java/emissary/util/TimeUtil.java index 54e7281292..72fcf65224 100755 --- a/src/main/java/emissary/util/TimeUtil.java +++ b/src/main/java/emissary/util/TimeUtil.java @@ -14,6 +14,7 @@ import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAccessor; import java.time.zone.ZoneRulesException; +import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.annotation.Nullable; @@ -26,6 +27,7 @@ public class TimeUtil { public static final DateTimeFormatter DATE_FULL_ISO_8601 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssX").withZone(GMT); public static final DateTimeFormatter DATE_ORDINAL = DateTimeFormatter.ofPattern("yyyyDDD").withZone(GMT); public static final DateTimeFormatter DATE_ISO_8601_SSS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); + public static final DateTimeFormatter DATE_ORDINAL_WITH_TIME = DateTimeFormatter.ofPattern("yyyyDDDHHmmss"); private static final String ISO_8601_TIME_DATE_STRING = "yyyy-MM-dd'T'HH:mm:ss'Z'"; private static final String HEX_REGEX = "^0x([0-9A-Fa-f]{8})([0-9A-Fa-f]{8})"; private static final Pattern HEX_DATE_PATTERN = Pattern.compile(HEX_REGEX); @@ -233,6 +235,11 @@ public static String getISO8601DateFormatString() { return ISO_8601_TIME_DATE_STRING; } + + public static String getDateOrdinalWithTime(final Date d) { + return DATE_ORDINAL_WITH_TIME.format(d.toInstant().atZone(ZoneId.systemDefault())); + } + /** This class is not meant to be instantiated. */ private TimeUtil() {} } diff --git a/src/test/java/emissary/util/TimeUtilTest.java b/src/test/java/emissary/util/TimeUtilTest.java index 3048ee8235..7b0d565c0f 100644 --- a/src/test/java/emissary/util/TimeUtilTest.java +++ b/src/test/java/emissary/util/TimeUtilTest.java @@ -117,4 +117,9 @@ void testConvertHexDate() { assertThrows(IllegalArgumentException.class, () -> TimeUtil.convertHexDate(invalidHexDate1)); assertThrows(IllegalArgumentException.class, () -> TimeUtil.convertHexDate(invalidHexDate2)); } + + @Test + void testGetDateOrdinalWithTime() { + assertEquals("2016360153025", TimeUtil.getDateOrdinalWithTime(testUtilDate), "Date Ordinal with Time did not match"); + } }