diff --git a/qqq-backend-core/pom.xml b/qqq-backend-core/pom.xml index 63a24365..2b0530f7 100644 --- a/qqq-backend-core/pom.xml +++ b/qqq-backend-core/pom.xml @@ -65,7 +65,11 @@ aws-java-sdk-secretsmanager 1.12.385 - + + com.ibm.icu + icu4j + 77.1 + com.fasterxml.jackson.core jackson-databind diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/StringUtils.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/StringUtils.java index 27a369c5..ae01b7af 100755 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/StringUtils.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/StringUtils.java @@ -26,6 +26,7 @@ import java.util.Collection; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; +import com.ibm.icu.text.Transliterator; /******************************************************************************* @@ -462,6 +463,17 @@ public class StringUtils + /*************************************************************************** + ** + ***************************************************************************/ + public static String replaceNonAsciiCharacters(String s) + { + Transliterator transliterator = Transliterator.getInstance("Any-Latin; Latin-ASCII"); + return (transliterator.transliterate(s)); + } + + + /*************************************************************************** ** ***************************************************************************/ diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/Timer.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/Timer.java index 455b4cc8..0abe77cb 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/Timer.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/Timer.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.utils; +import java.time.Duration; import com.kingsrook.qqq.backend.core.logging.QLogger; import org.apache.logging.log4j.Level; @@ -79,9 +80,36 @@ public class Timer ** *******************************************************************************/ public void mark(String message) + { + mark(message, false); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public void mark(String message, boolean prettyPrint) { long now = System.currentTimeMillis(); - LOG.log(level, String.format("%s: Last [%5d] Total [%5d] %s", name, (now - last), (now - start), message)); + + if(!prettyPrint) + { + LOG.log(level, String.format("%s: Last [%5d] Total [%5d] %s", name, (now - last), (now - start), message)); + } + else + { + + Duration lastDuration = Duration.ofMillis(now - last); + Duration totalDuration = Duration.ofMillis(now - start); + + LOG.log(level, String.format( + "%s: Last [%d hours, %d minutes, %d seconds, %d milliseconds] Total [%d hours, %d minutes, %d seconds, %d milliseconds] %s", + name, lastDuration.toHours(), lastDuration.toMinutesPart(), lastDuration.toSecondsPart(), lastDuration.toMillisPart(), + totalDuration.toHours(), totalDuration.toMinutesPart(), totalDuration.toSecondsPart(), totalDuration.toMillisPart(), + message)); + } + last = now; } }