From b734894253bc388392fb85c8901230553955870b Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Fri, 1 Nov 2019 09:04:26 +0100 Subject: [PATCH] fix parallel aggregate on non english locales We generate CSV files with comma as separator. When we write times with milli seconds, then we use floating point numbers. Depending on the locale those floating point numbers may be written with comma instead of point. If that happens, then the plots are messed up. Fixed by enforcing the locale when formatting floats. --- .../org/lucares/pdb/plot/api/ParallelRequestsAggregator.java | 3 ++- .../main/java/org/lucares/pdb/plot/api/ScatterAggregator.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ParallelRequestsAggregator.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ParallelRequestsAggregator.java index e8cb078..ba42434 100644 --- a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ParallelRequestsAggregator.java +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ParallelRequestsAggregator.java @@ -8,6 +8,7 @@ import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.StandardCharsets; import java.nio.file.Path; +import java.util.Locale; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -87,7 +88,7 @@ public class ParallelRequestsAggregator implements CustomAggregator { } private void appendTimeAndValue(final StringBuilder builder, final long timeEpochMilli, final int value) { - builder.append(String.format("%.3f", timeEpochMilli / 1000.0)); + builder.append(String.format(Locale.US, "%.3f", timeEpochMilli / 1000.0)); builder.append(SEPARATOR); builder.append(value); builder.append(NEWLINE); diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ScatterAggregator.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ScatterAggregator.java index 2016a9f..5a499db 100644 --- a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ScatterAggregator.java +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ScatterAggregator.java @@ -8,6 +8,7 @@ import java.io.OutputStreamWriter; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.util.Formatter; +import java.util.Locale; import java.util.concurrent.TimeUnit; import org.lucares.collections.Sparse2DLongArray; @@ -75,7 +76,7 @@ public class ScatterAggregator implements CustomAggregator { if (useMillis) { formattedDateBuilder.delete(0, formattedDateBuilder.length()); - formatter.format("%.3f", epochMilli / 1000.0); + formatter.format(Locale.US, "%.3f", epochMilli / 1000.0); formattedDate = formattedDateBuilder.toString(); } else { formattedDate = String.valueOf(epochMilli / 1000);