From 2a94143b06d99568ad79f7d916e7f8e0cb1cba4c Mon Sep 17 00:00:00 2001 From: Greg Gibeling Date: Mon, 15 Sep 2025 16:16:25 -0700 Subject: [PATCH] G2-1780 Standard method for human readable list joins --- .../java/com/g2forge/project/plan/create/CreateConfig.java | 2 +- .../src/main/java/com/g2forge/project/report/Billing.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pj-create/src/main/java/com/g2forge/project/plan/create/CreateConfig.java b/pj-create/src/main/java/com/g2forge/project/plan/create/CreateConfig.java index 6a4a726..446ef0c 100644 --- a/pj-create/src/main/java/com/g2forge/project/plan/create/CreateConfig.java +++ b/pj-create/src/main/java/com/g2forge/project/plan/create/CreateConfig.java @@ -78,6 +78,6 @@ public Integer getSprint() { public void validateFlags() { final Set referencedFlags = getIssues().stream().flatMap(issue -> issue.getFlags() == null ? Stream.empty() : issue.getFlags().stream()).collect(Collectors.toSet()); final Set unknownFlags = HCollection.difference(referencedFlags, getSpecifiedFlags().keySet()); - if (!unknownFlags.isEmpty()) throw new IllegalArgumentException("The following flags are refenced by issues, but are neither enabled nor disabled: " + unknownFlags.stream().collect(HCollector.joining(", ", ", & "))); + if (!unknownFlags.isEmpty()) throw new IllegalArgumentException("The following flags are refenced by issues, but are neither enabled nor disabled: " + unknownFlags.stream().collect(HCollector.joiningHuman())); } } diff --git a/pj-report/src/main/java/com/g2forge/project/report/Billing.java b/pj-report/src/main/java/com/g2forge/project/report/Billing.java index 8ae82b7..3f3d619 100644 --- a/pj-report/src/main/java/com/g2forge/project/report/Billing.java +++ b/pj-report/src/main/java/com/g2forge/project/report/Billing.java @@ -272,7 +272,7 @@ public IExit invoke(CommandInvocation invocation) thro final List relevantIssues = findRelevantIssues(client, request.getJql(), request.getUsers().keySet(), request.getStart(), request.getEnd()); issues = relevantIssues.stream().collect(Collectors.toMap(Issue::getKey, IFunction1.identity(), (i0, i1) -> i0)); } - log.info("Found: {}", issues.keySet().stream().collect(HCollector.joining(", ", ", & "))); + log.info("Found: {}", issues.keySet().stream().collect(HCollector.joiningHuman())); final Map errors = new LinkedHashMap<>(); for (Issue issue : issues.values()) { try { @@ -295,7 +295,7 @@ public IExit invoke(CommandInvocation invocation) thro final double hours = Math.round(byIssue.getTotal() * 100.0) / 100.0; log.info("\t\t{} {}: {}h", issue, summary, hours); - final String assignees = byIssue.getUsers().stream().collect(HCollector.joining(", ", ", & ")); + final String assignees = byIssue.getUsers().stream().collect(HCollector.joiningHuman()); final String link = server.getApi().createIssueLink(issue); final StringBuilder ranges = new StringBuilder(); final List issueChanges = changes.get(issue);